如何从特定日期开始 rsync 文件/文件夹?

如何从特定日期开始 rsync 文件/文件夹?

我想从特定日期开始 rsync 文件夹并继续。例如。我想 rsync 3 天前(当然还有 2 天前、1 天前等)创建的文件夹。我知道我需要使用 find 和 rsync,但我不知道如何使用。有什么想法吗?谢谢!Dotan。

答案1

rsync --progress --files-from=<(find /src_path -mtime -3 -type f -exec basename {} \;) /src_path/ /dst_path

答案2

你可能想做find一个sync

find /path -file -mtime +3 -exec rsync {} destination \;

答案3

修改托马斯的回答它根据文件的修改日期与脚本进行同步,以便更加人性化地阅读,并且同步嵌套文件夹。

#!/bin/bash

TARGET=/PATH/TO/TARGET
HOST=username@host
SOURCE=/ABSOLUTE/SOURCE/PATH/ON/HOST

touch $TARGET/last_sync

rsync \
    -ahrv \
    --update \
    --files-from=<(ssh $HOST "find $SOURCE -type f -newer $SOURCE/last_sync -exec realpath --relative-to=$SOURCE '{}' \;") \
    $HOST:$SOURCE \
    $TARGET

rsync -ahv $TARGET/last_sync $HOST:$SOURCE

对于 init,可能需要last_sync远程创建一个文件,以下命令会派上用场

touch -d "2 hours ago" last_sync

这将创建一个名为的文件,last_sync其创建日期为 2 小时前。

答案4

对于特定日期,您可以在当前目录中使用以下命令:

for file in $(ls -ltr *.gz | grep 'Apr 17' | awk {'print $9'} | xargs ls)
  do rsync -avzh --progress -e ssh $file  user@*******:/tmp
done

相关内容