rsync 차등 백업 파일 이동

rsync 차등 백업 파일 이동

root@server1:/ - 원격 서버

/backup1/12/fullbackup - server1의 데이터가 포함된 로컬 백업 서버

먼저 원격 서버의 모든 데이터를 로컬 백업 서버(script1.sh)로 동기화합니다.

rsync -avrh -e "ssh -p 123456 -o StrictHostKeyChecking=no" \
--progress \
root@server1:/ /backup1/12/fullbackup/

둘째, 간단한 차등 백업 스크립트(script2.sh)를 만듭니다.

today=15   
rsync -avrh -e "ssh -p 123456 -o StrictHostKeyChecking=no" \
--progress \
--link-dest=/backup1/12/fullbackup/
root@$ip:/ /backup1/12/backupday/$today/

디렉터리 12에서 첫 번째 스크립트(script1.sh)를 실행한 후:

# du -sh /backup1/12/*
8.0K    /backup1/12/backupday
4.1G    /backup1/12/fullbackup

두 번째 스크립트(script2.sh)를 실행한 후 모든 데이터가 전체 백업에서 backupday/15로 이동됩니다.

# du -sh /backup1/12/*
3.9G    /backup1/12/backupday
386M    /backup1/12/fullbackup

Today=15를 Today=16으로 이동하고 백업일에 두 번째 스크립트(script2.sh)를 다시 실행합니다.

# du -sh /backup1/12/backupday/*
4.1G    /backup1/12/backupday/15
104M    /backup1/12/backupday/16

script2.sh를 처음 실행할 때 모든 데이터가 backupday/15로 이동하고 두 번째, 세 번째 및 다음에 스크립트를 실행할 때 올바른 차등 백업이 생성되는 이유를 이해할 수 없습니다.

/backup1/12/fullbackup에 항상 전체 복사본이 있고 backupday/$today에 다른 복사본이 있도록 하려면 무엇을 변경해야 합니까?

답변1

당신이 보는 것은 인공물입니다 du. 파일을 하드 링크할 때 du두 번째 파일이 발견될 때 고려된 디스크 사용량을 기록해 두십시오. 예를 들어

$ mkdir a b
$ dd count=1000 </dev/zero >a/x
$ ln a/x b/x
$ du -s a b
500     a
0       b
$ du -s  b a
500     b
0       a

첫 번째 디렉토리가 명백하게 사용되는 모든 공간을 어떻게 얻는지 확인할 수 있습니다.

관련 정보