전체백업 (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가 복사할 파일입니다.
이제 원격으로 전송한 장소에 백업이 됐음을 확인할 수 있습니다.