我无法理解 -b 标志的作用。根据官方文档:
使用此选项,在传输或删除每个文件时,预先存在的目标文件都会被重命名。
但我不明白这是什么意思。如何重命名正在删除的文件?重命名文件与备份有何关系?使用 -b 调用 rsync 后,没有文件被重命名:
rsync --delete -bavh
当我浏览不同的教程时,他们从未真正使用过这个选项,那么它真的有用吗?
两者之间有什么区别
rsync --delete -bavh
和
rsync --delete -avh
另外,它可能没什么用,但我的用例如下:我想将我的桌面备份到已安装的 WebDAV 驱动器上。备份将在每天的指定时间自动运行。
答案1
该选项的目的backup
是保留任何被覆盖和/或删除的文件的副本。
它可以用于--backup-dir
将这些文件保存在目标目录以外的其他目录中。
--suffix
您还可以使用将附加到文件名的选项指定备份后缀。如果没有它,则指定backup-dir
目录中备份的文件将保留其原始文件名。有了它,文件可以重命名并保留在原始目录中(这意味着这backup-dir
不是必需的)。
因此,使用时需要backup-dir
或。--suffix
backup
答案2
玩过这个。这是我发现的。
使用 --backup 和 --backup-dir 来创建一种增量备份。
假设你有这样的代码:
# test date with a timestamp:
date +%F_%H-%M-%S
2024-03-06_19-48-08
#
SRC=your/cooldir
DST=backups
INCDIR="${DST}/inc_$(date +%F_%H-%M-%S)"
rsync -avh --backup --backup-dir="$INCDIR" "$SRC/" "$DST/"
第一次运行此程序时,您会获得 backups/cooldir,它是 your/cooldir 的完整备份(镜像同步)。
现在将文件 newfile.txt 添加到 your/cooldir。再次运行代码。没有文件被删除或更改,因此未创建 INCDIR。
现在删除 your/cooldir/newfile.txt。再次运行代码。由于该文件已被删除,并且指定了 --backup 和 --backup-dir,因此您会像以前一样获得 backups/cooldir(完整备份),但您还会获得目录 backups/inc_2024-03-06_19-57-23。在该增量目录中,您会获得 newfile.txt。它在那里是因为它已被删除。
您可以再次尝试创建 newfile2.txt 并运行它,然后在第二次运行时,只需修改 newfile2.txt(不要删除它)。您会再次在 backups/inc_xx 文件夹中获得 newfile2.txt。
现在尝试代码但更改此行:
INCDIR="${DST}/inc_$(date +%F)"
然后重新运行这些场景。第一次您将在 backups/inc_2024-03-06 中获得 newfile.txt。第二次您将在同一个目录中同时获得 newfile.txt 和 newfile2.txt。换句话说,--backup 和 --backup-dir 并不完全是增量备份。它更像是对文件的最后更改/删除的累积。
最后,尝试一下这个改变:
rsync -avh --backup "$SRC/" "$DST/"
这次,您将获得已更改和已删除的文件,这些文件以波浪号重命名,例如 newfile.txt~