我想在服务器 A 上运行 rsync 来从服务器 B 复制所有超过 7 天的文件。
find . -mtime -7
我不想删除服务器B上的文件。
答案1
这应该能让你踏上坚实的征程
rsync -RDa0P \
--files-from=<(find sourcedir/./ -mtime -7 -print0) \
. user@B:targetdir/
这将复制设备节点、权限、时间戳。我确信 -H 选项与 --files-from 不准确
答案2
我根据 cybertoast 的评论编写了这个脚本,用于从远程服务器同步到本地。
您可以用./script.sh 3
或./script.sh 3 dry
调用该脚本进行试运行。
#!/bin/bash
TIME=$1
DRYRUN=$2
if [[ -z $TIME ]]; then
echo "Error: no time argument."
echo "Please enter the number of days to sync."
exit 1
fi
if [[ $DRYRUN = "dry" ]]; then
DRYRUNCMD="--dry-run"
echo "Dry run initiated..."
fi
rsync -avz $DRYRUNCMD --files-from=<(ssh \
user@remote "find path/to/data/ \
-mtime -$TIME ! -name *.mkv -type f \
-exec ls $(basename {}) \;") \
user@remote:. .