再同期パラメータ

再同期パラメータ

移動したいスペースが約50GB程度あります。 LANに最適化されたTCP / IP(したがってタイトルにネットワークがある)を介してこれを行いたいと思います。私の問題は、時々接続が失われ、すべてのデータをターゲットに確実にインポートできないようです。私はこれが欲しい

  1. あきらめるのはとても簡単ではありません。
  2. 自動再試行を続けます(両方のシステムに電源があると仮定)。

私の方法はrsync

SOURCE=/path/to/music/ # slash excludes "music" dir
DESTINATION=/path/to/destination 
rsync \
  --archive \ # archive mode; equals -rlptgoD (no -H,-A,-X)
  --compress \ # compress file data during the transfer
  --progress \ # show progress during transfer
  --partial \ # delete any partially transferred files after interrupt, on by default but I added it for kicks
  --human-readable \ #output numbers in a human-readable format
  "$SOURCE" \
  "$DESTINATION" \

考慮すべき他のパラメータがありますか?

ベストアンサー1

再同期パラメータ

rsync私のパラメータは大丈夫だと思います。

接続が失敗した後に存在するファイルを処理するためにパラメーターを追加する必要がありました。 yesを選択し--ignore-existingたり、--updateすでに作成された内容を再作成しないでください。まだどちらが良いのかはよくわかりませんが(おそらくご存知の方もいますが)この場合は--updateこの記事を読んで選択しました。https://askubuntu.com/questions/399904/rsync-has-been-interrupted-copy-from-beginning

比較する:

  • --update は受信機から最新のファイルをスキップします。
  • --ignore-existing シンクに既に存在するファイル更新をスキップする

接続が中断されました。

終了コードがゼロでない場合は、rsyncを継続的に呼び出して転送が成功するまでプロセスを続行させることで、接続問題のパズル(不安定なWi-Fiなど)を修正しました。 (電源を遮断しない限り、雷が電力線に当たるか信号で死ぬ)

whileネットワークの切断を処理するためにループを使用しています。

while [ 1 ]
do
# STUFF
done

while [ 1 ]1つの注意:ctrl cなどの信号を割り込み(SIGINT)として使用することは、を呼び出さないと機能しませんbreak

if [ "$?" -gt 128 ] ; then break

その後、rsyncの終了コードを確認できます。 0 はすべてのファイルが移動されたことを意味します。

elif [ "$?" -eq 0 ] ; then exit

それ以外の場合、転送は完了しません。

else sleep 5

スクリプト例 sync-music.sh

rsyncスクリプトはSSHパスワードなしのキー認証を使用します。

#!/bin/bash

SOURCE="/path/to/Music/"
DESTINATION="[email protected]:/media/Music"

while [ 1 ]
do
  rsync -e 'ssh -p22'\
  --archive \
  --compress \
  --progress \
  --partial \
  --update \
  --human-readable \
  "$SOURCE" \
  "$DESTINATION"

  if [ "$?" -gt 128 ] ; then
    echo "SIGINT detected. Breaking while loop and exiting."
    break
  elif [ "$?" -eq 0 ] ; then
    echo "rsync completed normally"
    exit
  else
    echo "rsync failure. reestablishing connection after 5 seconds"
    sleep 5
  fi
done

おすすめ記事