Bash 脚本 rsync --include-from 失败

Bash 脚本 rsync --include-from 失败

我编写了一个 bash 脚本,用于将文件夹和文件从一台机器备份到我们的备份服务器。我的目标是从每周备份中排除所有超过 6 个月的文件。为此,我使用 find 命令构建了一个包含这些文件路径的 txt 文件。

find . -type f -mtime -200 -fprintf $SCRIPT_DIR/Exclusions.txt "%P\n"

然后我使用了 rsync 的选项“--include-from”。

rsync . -e ssh -qrtl --exclude-from=$SCRIPT_DIR/Exclusions.txt $USER@$DEST_SRV:$DEST_DIR

结果是备份成功但包含失败。因此,所有文件都备份了,即使是 6 个月前的文件。

我该怎么办呢?

提前致谢

答案1

根据手册页,

--exclude=PATTERN       exclude files matching PATTERN
--exclude-from=FILE     read exclude patterns from FILE
--include=PATTERN       don't exclude files matching PATTERN
--include-from=FILE     read include patterns from FILE

排除是根据文件中的读取模式进行的,而不是根据文件名称本身。

我同意根据名称包含/排除文件也可能很麻烦,但这不是它的工作原理。

您可以尝试这样的操作来包含一周前更新的文件:

--files-from=<(find . -mtime -7 -print0)

答案2

好的,我解决了我的问题!“find”行保持不变:

find . -type f -mtime -200 -fprintf $SCRIPT_DIR/includes.txt "%P\n"

我使用“--files-from”选项而不是“--exclude-from”

rsync . -e ssh -qrtl --files-from=$SCRIPT_DIR/includes.txt $USER@$DEST_SRV:$DEST_DIR

相关内容