rsync 3.1.0 正在创建空备份目录

Dus*_*yte 5 rsync

我刚刚注意到 rsync 的 3.0.9 和 3.1.0 版本之间存在差异。

运行命令

$ rsync -a --delete --backup --backup-dir=../old source/ dest/

版本 3.1.0 给出输出

Created backup_dir ../old/

即使没有文件被复制到备份目录。我通常将当前时间添加到备份目录名称中,这意味着我最终会得到许多空目录。使用 3.0.9 版 rsync,仅在需要时创建备份目录。

我的问题是:

  1. 这是预期的行为,如果是,是否可以禁止创建空备份目录?
  2. 我可以将 3.0.9 版的 rsync 与 3.1.0 版一起安装,这样一个叫做 rsync309,另一个叫做 rsync310,然后有一个别名将 rsync 链接到两者中的任何一个(在我的情况下,这意味着我会保留使用 rsync 3.0.9,因为我发现这种新行为很烦人)?

miv*_*ivk 3

是的,这是有意的行为。Bug 号 11423已提交,并在 3.1.2 版本中改回。

https://bugzilla.samba.org/show_bug.cgi?id=11423#c12

虽然我仍然喜欢在传输开始时对顶级备份目录进行新的早期验证,但我被说服让它返回到需要时才创建目录。已针对即将发布的 3.1.2 版本进行修复。

虽然大多数发行版尚未提供 3.1.2 版的软件包,但它的编译确实快速且容易:我在 Debian Jessie 上执行了以下操作,一切顺利,将新版本安装到/usr/local/bin

wget https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz
tar xvf rsync-3.1.2.tar.gz -C /tmp/
cd /tmp/rsync-3.1.2/
./configure
make
make install
Run Code Online (Sandbox Code Playgroud)

如果您将它用作守护程序,您的初始化脚本可能会通过其完整路径来调用它,因此您可能还想将其替换为新版本的链接:

/etc/init.d/rsync stop
mv /usr/bin/rsync /usr/bin/rsync.old
ln -si ../local/bin/rsync /usr/bin/rsync
/etc/init.d/rsync start
Run Code Online (Sandbox Code Playgroud)

更新:如果您使用的是 Debian Jessie,您实际上可以从Debian Stretch安装 rsync 软件包:

wget "http://ftp.ch.debian.org/debian/pool/main/r/rsync/rsync_3.1.2-1_amd64.deb"
dpkg -i rsync_3.1.2-1_amd64.deb
Run Code Online (Sandbox Code Playgroud)