解決策 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:
サーバーからローカル フォルダーにフォルダーを同期したいが、最後の同期以降に作成されたファイルのみを常に同期したいとします。次に、次のコマンドが役立つ場合があります。これを入れると、たとえば、.bashrc は、新しく作成されたすべてのファイルを同期するエイリアスを定義します。ファイルはローカルで削除でき、sync コマンドを再度呼び出しても再度同期されることはありません。サーバーでの最後の同期後に作成されたファイルのみがローカル フォルダーにコピーされます。
TARGET=/local/target/folder/
SOURCE=/server/folder/
alias sync-since-last="touch $TARGET/last_sync && rsync -ahv --update --files-from=<(ssh [email protected] 'find $SOURCE/source/ -type f -newer $SOURCE/last_sync -exec basename {} \;') [email protected]:$SOURCE/source/ $TARGET && rsync -ahv $TARGET/last_sync [email protected]:$SOURCE"
解決策 4:
ファイルの変更日に基づいて同期する Thomas からの回答をスクリプトに変更し、人間が読みやすくし、ネストされたフォルダーも同期するようにします。
#!/bin/bash
TARGET=/PATH/TO/TARGET
[email protected]
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 時間前です。