rsync: - delete-during --backup-dir = PATH --backup不备份被删除的目录以便为文件让路

时间:2013-10-14 15:39:02

标签: rsync

使用--backup --delete-during--backup-dir=PATH选项运行rsync时,仅备份已删除的文件,但如果这些目录在删除时为空,则不会显示目录。我看不到一个选项,指定在删除时不应从备份中删除目录。

示例:

mkdir /tmp/test_rsync_delete
cd /tmp/test_rsync_delete
mkdir -p a/a/a/a/a
ln -s . a/b

mkdir -p b/a/a
ln -s a/a b/a
touch b/a/a/a

mkdir c
mkdir backup

rsync -avi --delete-during --backup --backup-dir=backup a/ c/
find backup/ -exec ls -ldi {} \;
# Should be empty

rsync -avi --delete-during --backup --backup-dir=backup b/ c/
find backup/ -exec ls -ldi {} \;
# Will be missing the directory that was deleted to make way for the file.

更新

根据上面的示例,当您运行它时,您会注意到--delete选项修剪/删除了空目录。但是,相同的目录未在--backup-dir选项指定的目录中备份。它不一定是重要的目录,而是重要的权限和所有权。如果在批处理模式(--read-batch)下运行时rsync失败,则您需要能够通过将系统还原到其先前状态来回滚。如果没有备份目录,那么它实际上并没有创建一个可靠的点来从中恢复 - 它可能会丢失一些目录。

那么为什么--backup系列选项在--delete系列选项修剪时不备份空目录?

1 个答案:

答案 0 :(得分:-1)

仅供参考:当我发现这个问题时,这就是我要搜索的内容:

rsync -av --delete-after src dest

-av “-a”表示存档。这将保留符号链接,权限,时间戳,组/所有者,并将是递归的。 “v”使作业详细。这不是必需的,但你可以看到rsync发生了什么,所以你知道你做错了什么。
- delete-after 将告诉rsync将目标与源进行比较,并在rsync完成后删除任何无关的文件。这是一个危险的选择,因此请谨慎使用。