同时使用 rsync --remove-source-files 和 --include-from= 选项

同时使用 rsync --remove-source-files 和 --include-from= 选项

我有一个中央 CentOS 7 备份服务器,我在脚本中运行以下rsync命令从数百台 Linux 机器中提取应用程序日志,然后删除它们。

rsync --remove-source-files --include-from=/tmp/$MACHINE_file.lst \
  -v -a -l -K --rsh=ssh --stats $MACHINE:/ $BACKUPDIR/$MACHINE

/tmp/file.lst使用其他脚本在每台机器的中央备份机器上生成;它包含以下要备份的目录和文件。

+ /data1/
+ /data2/
+ /data2/sample/
- *

但最近我遇到了一个大问题,/tmp中央备份服务器上的分区由于其他问题而已满,因此/tmp/$MACHINE_file.lst 无法创建。这导致了rsync开始从源机器上的分区中删除文件的问题/。知道为什么吗?

答案1

  • tmp 目录已满,无法创建 file.lst
  • rsync 忽略了 --include-from 指令,因为该文件不存在,并且包含一切由于您在命令中指定了 / 目录,因此在源上
  • 不幸的是你还指定了--remove-source-files
  • 由于这些文件在您的目标上不存在,所以它完全按照您的要求执行 - 将所有内容同步到目标并删除源上的所有内容。

相关内容