Linux / / 2024. 7. 2. 16:55

리눅스 디스크 백업하기

전체백업 (Day Zero Backup)

 => 데이터를 통째로 백업

증분백업 (Incremental Backup)

 => 증분백업이 이루어진 후 변경이 발생한 것만 백업

      첫번째 증분백업이 전체백업이 됩니다.

      증분백업을 반복하면 이전의 증분백업에서 수정된 것만 백업됩니다.

차등백업 (Differential Backup)

 => 전체백업이 이루어진 후 변경이 이루어진 모든 것을 백업

      차등백업은 전체백업한 이후 증분백업을 했더라도

      전체백업 이후에 일어난 모든사항을 백업합니다.

 

 

증분백업 (전체백업)

mkdir -p /root/0615/source

mkdir -p /root/0615/backup

 

cd /root/0615/source

 

touch 1.txt 2.txt 3.txt 4.txt 5.txt

 

cd /root/0615

 

tar cpfzP backup/Full-backup.tar.gz --listed-incremental backup/backuplist source/

 

# source 폴더 안의 파일들을 backup 폴더에 증분백업으로 백업합니다.

# 처음으로 증분백업을 하므로 전체백업이 됩니다.

tar tvf ./backup/Full-backup.tar.gz

 

# 압축 해제 없이 압축파일 내의 내용물을 확인할 수 있습니다.

 

 

이제 증분백업을 위해 source 파일에 변동사항을 넣어준 후

다시한번 증분백업을 해줍시다.

touch ./source/6.txt

 

tar cpfzP backup/Incremental1-backup.tar.gz --listed-incremental backup/backuplist source/

 

tar tvf ./backup/Incremental1-backup.tar.gz

 

backup폴더에 1차로 증분백업한 백업파일이 생성되고

그 속에는 추가된 6.txt파일만 추가된 것을 확인할 수 있습니다.

 

 

다시 한번 변동사항을 준 후 증분백업 해줍시다.

touch ./source/7.txt

 

tar cpfzP backup/Incremental2-backup.tar.gz --listed-incremental backup/backuplist source/

 

tar tvf ./backup/Incremental2-backup.tar.gz

 

backup폴더에 2차로 증분백업한 백업파일이 생성되고

그 속에는 1차 증분백업 이후에 추가한 7.txt파일만 추가됩니다.

 

 

이번엔 6.txt를 삭제하고 백업해봅시다.

rm ./source/6.txt

 

tar cpfzP backup/Incremental3-backup.tar.gz --listed-incremental backup/backuplist source/

tar tvf ./backup/Incremental3-backup.tar.gz

백업파일을 생성되었지만 내용물은 아무것도 없는것을 확인할 수 있습니다.

 

 

 

백업 복구하기

복구 테스트를 위해 먼저 source 폴더를 삭제한 후 복구 명령을 줘봅시다.

rm -rf source

 

tar xvfz ./backup/Full-backup.tar.gz -C ./

 

source폴더가 전체백업 했던 상태로 복구되는 것을 확인할 수 있습니다.

 

 

이제 1차 2차 3차 증분백업 복구를 차례로 해봅시다.

tar xvfz ./backup/Incremental1-backup.tar.gz -g ./backup/backuplist -C ./

 

 

tar xvfz ./backup/Incremental2-backup.tar.gz -g ./backup/backuplist -C ./

 

tar xvfz ./backup/Incremental3-backup.tar.gz -g ./backup/backuplist -C ./

 

삭제된 파일도 backuplist 파일에 명령어로 저장되므로

정상적으로 복구되는 것을 볼 수 있습니다.

 

 

 

원격으로 백업하기

원격으로 백업하는 방법은 SCP, RSYNC, DD 세가지 방법이 있습니다.

 

SCP로 원격 백업하기

# scp [옵션] [복사할파일] [유저명@상대IP:백업할폴더]

 

scp -r ./source root@192.168.5.56:/root/0615/bak2/

 

# source 폴더를 192.168.5.56 IP의 root유저로 로그인해

# /root/0615/bak/ 폴더에 백업합니다.

# 복사할 폴더 앞에 유저명 및 IP주소를 넣어 원격 시스템의 파일을 가져올 수도 있습니다.

# 폴더채로 전송하려면 -r을 붙여줍니다.

전송이 잘 되었다는 메시지가 출력됩니다.

 

이제 해당 IP에서 백업이 잘 되었는지 확인해 봅시다.

 

 

 

rsync로 원격 백업하기

# rsync [옵션] [복사할파일or폴더] [유저명@상대IP:백업할폴더]

# rsync [옵션] [유저명@상대IP:복사할파일or폴더] [백업할폴더]

rsync -avz ./source root@192.168.5.56:/root/0615/bak/

 

# source 폴더를 192.168.5.56 IP의 root유저로 로그인해

# /root/0615/bak/ 폴더에 백업합니다.

# 복사할 파일 앞에 유저명 및 IP주소를 넣어 원격 시스템의 파일을 가져올 수도 있습니다.

전송이 잘 되었다는 메시지가 출력됩니다.

 

이제 해당 IP에서 백업이 잘 되었는지 확인해 봅시다.

 

 

DD로 원격 백업하기

DD는 주로 디스크 단위로 파일을 복사하거나 백업할 수 있는 명령입니다.

 

DD는 폴더 백업을 지원하지 않으므로

여러개의 파일은 하나로 압축해주어야 합니다.

tar cvfz back.tar.gz ./source

 

# 전송을 위해 source 폴더 압축하기

 

dd if=back.tar.gz | ssh 192.168.5.56 "dd of=/root/0615/bak99.tar.gz"

 

# if가 전송할 파일, of가 복사할 파일입니다.

 

이제 원격으로 전송한 장소에 백업이 됐음을 확인할 수 있습니다.

 

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유