Rsync - -b(备份)标志具体起什么作用?

Rsync - -b(备份)标志具体起什么作用?

我无法理解 -b 标志的作用。根据官方文档:

使用此选项,在传输或删除每个文件时,预先存在的目标文件都会被重命名。

但我不明白这是什么意思。如何重命名正在删除的文件?重命名文件与备份有何关系?使用 -b 调用 rsync 后,没有文件被重命名:

rsync --delete -bavh

当我浏览不同的教程时,他们从未真正使用过这个选项,那么它真的有用吗?

两者之间有什么区别

rsync --delete -bavh

rsync --delete -avh

另外,它可能没什么用,但我的用例如下:我想将我的桌面备份到已安装的 WebDAV 驱动器上。备份将在每天的指定时间自动运行。

答案1

该选项的目的backup是保留任何被覆盖和/或删除的文件的副本。

它可以用于--backup-dir将这些文件保存在目标目录以外的其他目录中。

--suffix您还可以使用将附加到文件名的选项指定备份后缀。如果没有它,则指定backup-dir目录中备份的文件将保留其原始文件名。有了它,文件可以重命名并保留在原始目录中(这意味着这backup-dir不是必需的)。

因此,使用时需要backup-dir或。--suffixbackup

答案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~

相关内容