ターゲットサーバーファイルが移動され、Rsyncは同じファイルを再コピーしました。

ターゲットサーバーファイルが移動され、Rsyncは同じファイルを再コピーしました。

rsync私は長い間使用していますが、必要に応じて完璧に動作しますが、ターゲットサーバーファイルが数秒ごとに移動され、rsync同じファイルがローカルのSFTPサーバーから再コピーされるという状況に直面しました。コマンドを使用していますが、--ignore-existingこの場合でも機能しません。

sshpass -p "ABCDE" rsync   -avvtzh   --ignore-existing -e  "ssh -o StrictHostKeyChecking=no"  --log-file="/home/toor/log/uc.log"   [email protected]:share/CACHEDEV1_DATA/Lanein1/Unicard/ /home/toor/UCDownloads/

ベストアンサー1

ターゲットファイルが移動された場合、そのrsyncファイルはもう存在しません。この--ignore-existingフラグは、ファイルが期待どおりに存在しないため、役に立たないので無視することはありません。

フラグファイルを生成し、rsync最後の成功した実行以降に変更されたファイルのみをプッシュできます。このようなスケルトンは機能します(ファイルソースがローカルではなくリモートシステムにあるため、思ったよりも複雑です)。

path='/share/CACHEDEV1_DATA/Lanein1/Unicard'
flag="$path.flag"

# Must have a flag file. If we don't then create one from the epoch
if ssh -nq [email protected] "[ ! -f '$flag' ]"
then
    touch -t 197001010000 /tmp/1970
    scp -p /tmp/1970.flag [email protected]:"$flag"
    rm -f /tmp/1970.flag
fi

# Flag the start of the synchronisation
ssh -nq [email protected] "date >'$flag.tmp'"

# Copy files newer than the flag
if ssh -nq [email protected] "find '$path/' -depth -newer '$flag' -print0 |
    rsync -avz --files-from - --from0 [email protected]:/ /home/toor/UCDownloads/
then
    # Install the new flag
    ssh -nq [email protected] "mv -f '$flag.tmp' '$flag'"
fi

QNAPに慣れていない人のために説明すると、このtouchコマンドは標準では存在せず、rsyncその機能は縮小されました。私はこれをローカルクライアントで使用して日付がtouch1970-01-01のファイルを作成し、それを初期フラグとしてリモートシステムに送信しました。 (touchリモートシステムに存在する場合は、最初にリモートからファイルを作成する方がはるかに簡単になります。)表示されたfind日以降に作成/変更されたファイルとディレクトリのみが含まれます。

おすすめ記事