我已经写了一个bash脚本来备份文件夹和文件从一台机器到我们的备份服务器。 我的目标是从每周备份中排除所有超过6个月的文件。 为此,我使用find命令来构build一个包含这些文件path的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个月以上的时间里备份。
我该怎么办?
提前致谢
根据手册页,
--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
排除是从文件读取模式,而不是根据文件名称本身。
我同意根据名称包含/排除文件也可能是less数,但这不是它的工作原理。
你可以尝试这样的事情,以包括比1周前更新的文件:
--files-from=<(find . -mtime -7 -print0)
好的,我解决了我的问题! “查找”行保持不变:
find . -type f -mtime -200 -fprintf $SCRIPT_DIR/includes.txt "%P\n"
我使用“ – 文件来源”选项而不是“–exclude-from”
rsync . -e ssh -qrtl --files-from=$SCRIPT_DIR/includes.txt $USER@$DEST_SRV:$DEST_DIR