rsync 文件—免除麻烦

rsync 文件—免除麻烦

我的 rsync 行为很奇怪。我需要将最近 2 天的所有文件从一个文件夹复制到另一个文件夹。

因此,我将 rsync 与 files-from 参数混合在一起,并在脚本中找到实用程序来完成我需要做的事情。

#!/bin/bash
cd /mnt/smb/online/
find . -mtime -2 -print > /tmp/rsynclist
rsync -av --ignore-existing --size-only --files-from=/tmp/rsynclist /mnt/smb/online /mnt/backup/

文件 /tmp/rsynclist 没问题,并且只包含我需要的文件(所有文件不超过 2 天)。但 rsync 似乎忽略了“files-from”参数,并继续从较旧的源复制所有文件。

我哪里错了?

答案1

问题不在于rsync命令,而在于你的find。在测试你的脚本时,我注意到我的文件中也有一些目录rsynclist已被更改,导致 rsync 复制这些目录下的所有文件。

为了防止这种情况,请添加-type f到您的find命令中。

#!/bin/bash
cd /mnt/smb/online/
find . -type f -mtime -2 -print > /tmp/rsynclist
rsync -av --ignore-existing --size-only --files-from=/tmp/rsynclist /mnt/smb/online /mnt/backup/

随后,列表中只应包含文件路径,从而给出预期的结果。

答案2

该命令的语法rsync是:

rsync [option] source[x] destination

您已提供 2 个来源:

  • /tmp/rsync列表 ; 正确的那一个
  • /mnt/smb/在线;这是错误的,你必须删除它

尝试:

rsync -av --ignore-existing --size-only --files-from=/tmp/rsynclist  /mnt/backup/

相关内容