rsyncがクラッシュするとソースファイルが破損する

rsyncがクラッシュするとソースファイルが破損する

クライアントからサーバーにフォルダを同期するスクリプトを実行しています。

スクリプトに適用される構文は次のとおりです。

rsync -avzP --append-verify --delete -e "SSH parameters" source_dir user@host:destination

ただし、ネットワークの問題によってrsyncがクラッシュした場合、rsyncを再起動するとソースファイルが破損します。

例: 転送前のソースファイルです。

root@localhost:~# ls -Alth
total 1.1G
-rw-r--r--    1 root root    1.0G Nov 12 08:56 testfile1GB

ソースファイルの転送が中断された後に再起動されます。

root@localhost:~# ls -Alth
total 152M
rw-------    1 root root    152M Nov 15 17:46 testfile1GB

私は現在rsyncバージョン3.1.1プロトコルバージョン31を使用しています。

rsyncのバージョンは更新できません。

提案があれば教えてください。

ベストアンサー1

使用--remove-source-filesしない限り、ソースのどれも変更されませんrsync(そしてそのような場合でも、ターゲットに正しいコピーがあることが確認された場合にのみソースファイルを削除します)。したがって、ターゲットに行った変更は、他の方法でソースに影響を与える必要があります。

user@host:destination:誤ってソースファイルを上書きしていないことを確認してください。つまり、ホストがクライアントでないこと、ホストがクライアントと同じファイルシステムを共有していないこと(NFSやSambaを使用するなど)を確認してください。これを次のように確認できます。

例と同じディレクトリにあるローカルシステムでsource_dir必要に応じて交換してください。

touch source_dir/620014.tmp
ls -ld source_dir/620014.tmp

リモートシステムは適切にsource_dir交換できますdestination。 (rsync実際にコマンドがあるsource_dir/場合、source_dirコマンドはsource_dirそのパスに含まれてはいけません。)

ssh -nq user@host ls -ld destination/source_dir/620014.tmp

同じファイルを取得する場合は、両方のシステムが同じファイルシステムを共有し、ファイルシステムは必要rsyncでも適切でもありません。

おすすめ記事