2

使用--backup --delete-duringand--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 选项指定的目录中备份。重要的不一定是目录,而是重要的权限和所有权。如果 rsync 在批处理模式 ( ) 下运行时失败,--read-batch那么您需要能够通过将系统恢复到之前的状态来回滚。如果目录没有被备份,那么它并没有真正创建一个可靠的恢复点——它可能会丢失一些目录。

那么为什么--backup当它们将被--delete选项系列修剪时,选项系列不备份空目录呢?

4

1 回答 1

-3

这不是特定问题的答案,但可能是其他人正在寻找的答案,最终在这里:

仅供参考:当我发现这个问题时,这就是我正在寻找的内容:

rsync -av --delete-after src dest

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

于 2014-02-17T11:17:42.120 回答