我有一个文件 /home/my/some/filename.xx ,其始终具有相同的日期时间戳(即使已被修改)和相同的文件大小。我如何指定 rsync 每次只复制这个特定文件?我当前的备份命令是这样的:
sudo rsync -axvq --exclude /home/my/it/ --exclude /oit -e "ssh -i /home/my/.ssh/id_rsa" --rsync-path="sudo rsync" / [email protected]:/backup
答案1
告诉 rsync 根据文件名对不同文件进行不同处理的唯一方法是通过过滤器。过滤器可以确定文件是否完全同步,或者文件是否被删除,但它们无法确定用于检查文件是否是最新的方法。
因此,您必须使用两个单独的 rsync 命令:一个排除此文件,另一个专门针对此文件使用不同的文件比较方法。
rsync -axvq --exclude /home/my/some/filename.xx … / [email protected]:/backup &&
rsync -axvq --checksum --include / --include /filename.xx --exclude '*' /home/my/some/ [email protected]:/backup/home/my/some/
在第二个命令中,我同步目录,但排除其中除要传输的文件之外的每个文件。我这样做的原因是复制目录的时间戳,否则如果filename.xx
创建的话将会被修改。如果这种边缘情况不困扰您,您可以简化第二行以仅复制filename.xx
.