带有–backup的rsync

我正在尝试rsync一个文件目录,并在目的地存储时间戳修订。 这是我目前使用的:

rsync --verbose --progress --stats --compress --no-whole-file --inplace --recursive \ --times --perms --owner --group --links --delete --backup --suffix=.`date +%y%m%d_%H%M` \ user@remote:/backups/mysql/ /data/backups/mysql/remote/ 

user@remote:/backups/mysql/中的文件如下所示:

 db1.gz db2.gz 

当我第一次运行rsync时,如预期的那样,我在/data/backups/mysql/remote/得到了两个文件的复制。 当文件发生变化后再次运行时,旧文件得到时间戳,新文件转移到dest:

 db1.gz.150522_1328 db2.gz.150522_1328 db1.gz db2.gz 

这似乎是我想要的,除了当我第三次运行它(与更改文件)输出显示“删除”消息之前的同步:

 deleting db1.gz.150522_1328 deleting db2.gz.150522_1328 

我的目标是留在这里:

 db1.gz.150522_1328.150522_1515 db2.gz.150522_1328.150522_1515 db1.gz.150522_1515 db2.gz.150522_1515 db1.gz db2.gz 

如何将后缀添加到现有的备份文件? 另一件我需要深入的是,当我rsync没有加速,甚至考虑到99%的文件是相同的,而我使用–rsyncable时,我gzip他们。 (是否在增量转移之前重命名备份文件?)

正如你已经在你的问题的注释中写的那样,以前的备份又被备份了,因为后缀改变了,rsync假定这些文件在源代码上不再存在。 您可以通过在后缀中添加静态部分来避免这种情况,并将其用作filter,例如:–suffix --suffix=$(date +.backup~%y%m%d_%H%M) --filter="P *.backup~*"

或者,您可以使用--backup-dir=DIR将备份放在单独的目录中。 但是,如果该目录的名称也是dynamic的(例如--backup-dir=$(date +%F) ),那么--inplace会降低您的命令的效率。

我认为dynamic备份后缀也是你没有注意到加速的原因:rsync没有find相应的备份到你的文件。 然而,删除“–inplace”参数应该会有所帮助(如果你不需要这个优点,那么“ 硬链接不会被破坏 ”)。