我想使用以下结构进行备份
/source # the source directory which should be backed up
/backup/initial/... # the first initial copy/backup of the source
/backup/snapshots/YYYYmmDDHHmmss/... # (1)
/backup/changed/YYYYmmDDHHmmss/... # (2)
(1)我猜是rsync的“默认”行为。使用硬链接创建快照以返回到初始备份。我会通过rsync -avuP --link-dest=$initial_backup $directory_to_backup $destination
(2)我通过rsync -riv --ignore-existing "$directory_to_backup"/ "$last_backup"/
和获得了rsync输出rsync -riv --existing "$directory_to_backup"/ "$last_backup"/
但是现在我想将这两个脚本的输出硬链接到changed
目录中。
我的目标是既要拥有要备份的目录的完整快照,又要拥有changed
仅包含新文件和修改文件的目录。一切都带有硬链接,以避免占用过多空间。
如果我对您的理解正确,则只需稍微更改一下顺序即可。您可以--compare-dest
用来创建新文件和已更改文件的目录,然后使用两个--link-dest
args链接回此已更改目录和上一个快照。这是一个示例测试脚本:
cd /tmp/
rm -fr src backup
mkdir -p src/a/b backup
date >src/a/b/unchanged
date >src/a/b/c
rsync -a src/ backup/i
rsync -a --link-dest=../i/ src/ backup/s1
sleep 1
date >src/a/b/c
date >src/a/b/c2
rsync -av --compare-dest=../s1 src/ backup/ch
rsync -av --link-dest=../s1 --link-dest=../ch src/ backup/s2
ls -li backup/*/*/*/*
这给了我这个输出:
919 -rw-r--r-- 2 backup/i/a/b/c
920 -rw-r--r-- 3 backup/i/a/b/unchanged
919 -rw-r--r-- 2 backup/s1/a/b/c
920 -rw-r--r-- 3 backup/s1/a/b/unchanged
472 -rw-r--r-- 2 backup/ch/a/b/c
473 -rw-r--r-- 2 backup/ch/a/b/c2
472 -rw-r--r-- 2 backup/s2/a/b/c
473 -rw-r--r-- 2 backup/s2/a/b/c2
920 -rw-r--r-- 3 backup/s2/a/b/unchanged
在此,目录i
是初始备份,s1
snapshot1,s2
snapshot2以及ch
与snapshot2对应的更改。第一列是索引节点号,第三列是硬链接数。它显示已更改的文件c
被硬链接到ch
,新文件c2
被硬链接到ch
,而未更改的文件被硬链接到s1
和i
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句