付録:

付録:

非常に不安定なインターネット接続を介してファイルをコピーするには?

時には接続が切断され、時にはあるコンピュータまたは別のコンピュータのIPが変更され、時には両方が変わりますが、動的DNSはそれをキャッチします。

どのツールやコマンドをお勧めしますか?

違いをコピーするだけでもかなり良いと聞きましたrsync。しかし、これは、再起動、しばらく時間をかけたり、cronjobを実行するなど、多くの作業を意味します。

もっとシンプルで確実なものがあればいいです。

付録:

これには、あるサイトから別のサイトに5 GBを超えるいくつかの非常に大きなファイルを含む複数のディレクトリをコピーすることが含まれます。コピーすると、両方ともローカルに別の場所に移動されます。

私はネットワークレベルでは何もできず、そうする知識もありません。

wgetを使用するためにWebサーバーを設定したくありません。これは安全ではなく、バイパスパスのように見えます。

SSH接続を確立し、rsyncが両方のシステムにすでにインストールされているので、rsyncを実行できます(rsyncデーモンを操作および実行できません)。

私がどのように作ることができるかについてのアドバイスSSHによるスマートrsyncそれでは、一時的に回線が切れたら継続しようとしますか?ただし、SSH接続が失われた場合、rsyncは問題になりません。だからこんなこと(https://serverfault.com/questions/98745/)動作しない場合があります:

while ! rsync -a .... ; do sleep 5 ; done

どんなアイデアがありますか?

ありがとうございます!

ゲイリー

答え1

さて、私の場合は解決策を見つけました。私は実際に提案を使用していますwhileループ。これで、次のようになります。

while ! \
rsync -aiizP --append --stats . -e ssh [email protected]:./path/rfiles ; \
do now=$(date +"%T") ; echo · Error at $now · ; sleep 5 ; done

whileループがない場合は、rsyncを手動で再起動する必要があります。今それは魅​​力のように動作します。

面白い事実:接続が切断されてから10分後にエラーが発生し、接続が再開され、約9分後にエラーが発生します!その間、ターミナルウィンドウでは何も起こりません。 10分という時間制限がどこから出るのか気になります。

助けてくれてありがとう。

ゲイリー

注:以下は私が受け取ったタイムアウトエラーです(10分後)。

...
thedirectory/afile.ext
Read from remote host myhost.com: Operation timed out
rsync: writefd_unbuffered failed to write 16385 bytes [sender]: Broken pipe (32)
rsync: connection unexpectedly closed (394 bytes received so far) [sender]
rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-40/rsync/io.c(452) [sender=2.6.9]

答え2

私は間違いなくお勧めしますrsyncrsync接続が中断される可能性があると思われるたびにファイルをコピーします。レプリケーションが失敗した場合は、単に再起動できることを知っています。

while成功するまで自動的に再起動する必要がある場合は、ループに入れるのが簡単です。

答え3

rsyncの主な問題は、単一のファイルで続行できないことです。複雑なディレクトリ構造をコピーしたい場合は問題ありませんが、たとえば単一のDVDイメージをコピーしたい場合はそれほど安定ではありません。

この場合はwgetを使用してください。具体的には、

wget -c -t 0 -T 10 http://....

特に興味深いのは、単一のパケット損失によってツールが効果的に停止/停止されるという一般的な問題を解決する20秒の時間制限です。

もちろん、ソースにはhttpサーバーが必要です。これが実用的でない場合は、次のツールがあります。

split

大きなファイルを小さなファイルに分割し、rsyncを使用できます。分割ファイルは後で簡単な猫に再結合できます。

もちろん、成功するまでrsyncをループで実行することもできます。

while ! rsync ...; do echo next try; done

コメントの後に展開

rsync できる-partialフラグを使用してファイルを続行します。 @GregHewgill ありがとうございます! :-)

答え4

ファイルコピーツールレベルでこの問題を解決したい場合は、rsyncで十分です。-aursyncが同じファイルを複数回同期しようとしないようにオプションを使用します。 Rsyncは、少なくともファイルのリストを交換して中断する前に1つのファイルを完全に転送できる限り進行します。これを保証できない場合は、ネットワークレベルのツールがないと問題が発生します。

私はこの問題をネットワークレベルで解決するのがより簡単でより自然であると思います。つまり、信頼できないネットワーク接続上に安定したネットワークトンネルを構築することです。数年前に使用しました。まさにこの目的のためには維持されておらず、最近コンパイルまたは使用したことがありませんが、うまくいかない根本的な理由はありません。よりこのスペース交換。

関連情報