Solusi 1:
rsync --progress --files-from=<(find /src_path -mtime -3 -type f -exec basename {} \;) /src_path/ /dst_path
Solusi 2:
Anda ingin melakukan find
lalu sync
find /path -file -mtime +3 -exec rsync {} destination \;
Solusi 3:
Dengan asumsi Anda ingin menyinkronkan beberapa folder dari server ke folder lokal, tetapi Anda selalu hanya ingin menyinkronkan file yang telah dibuat sejak sinkronisasi terakhir. Maka perintah berikut mungkin berguna. Masukkan ini, misalnya, .bashrc Anda menentukan alias yang menyinkronkan semua file yang baru dibuat. File dapat dihapus secara lokal dan tidak akan disinkronkan lagi saat memanggil kembali perintah sinkronisasi. Hanya file yang dibuat setelah sinkronisasi terakhir di server yang akan disalin ke folder lokal.
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"
Solusi 4:
Memodifikasi jawaban dari Thomas yang disinkronkan berdasarkan tanggal modifikasi file ke skrip, agar lebih mudah dibaca manusia dan juga menyinkronkan folder bersarang.
#!/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
Untuk init, seseorang mungkin harus membuat last_sync
file dari jarak jauh, yang berguna untuk perintah berikut
touch -d "2 hours ago" last_sync
yang membuat file bernama last_sync
dengan tanggal pembuatan 2 jam yang lalu.