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) 后,所有数据从 fullbackup 移动到 backupday/15

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

将 Today=15 移至 Today=16 并在 backupday 中再次运行第二个脚本 (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

您会看到第一个目录如何获取所有显然已使用的空间。

相关内容