非常に大きなファイル/ディレクトリをあるホストから別のホストに「オフライン」でコピーするにはどうすればよいですか?

非常に大きなファイル/ディレクトリをあるホストから別のホストに「オフライン」でコピーするにはどうすればよいですか?

私が管理しているリソースを大量に消費するサイトのいくつかのために、近いうちに VPS サーバーを導入するつもりです。私が住んでいる国では、1Mb/s のインターネット速度は贅沢であり、途切れることのない電力供給は神話です。

私が達成しようとしていることは次のとおりです:

  • SSH / SCP 経由でソース サーバーから宛先サーバーにコピーされたファイルとディレクトリを取得する方法。
  • インターネットが切断されたり電源が切れたりしても、サーバー間でファイルをコピーし続ける方法。
  • ターミナル ウィンドウを閉じても、両方のサーバー間でファイルをコピーし続ける方法。

SCP 経由でコピーすることは知っていますが、オフラインになると機能しなくなるようです。

答え1

rsync -azvP source_directory user@remote:remote_directory

中断された場合に進行状況を保存しながら、2 台のコンピューター間でファイルをコピーできるようになります。

各フラグの説明もここにあります。http://explainshell.com/explain?cmd=rsync+-azvP

ログインしていない状態でもサーバー上でこれを実行できるようにするには、上記のコマンドをコマンドに渡しますnohup。また、これを tmux セッションで実行することもできます。その場合、マシンにログインしたときにセッションをアタッチして、進行状況を監視 (またはコマンドを再開) できます。

tmuxサーバー上で と入力して tmux セッションを開始できます。次に rsync コマンドを実行し、CTRL+bと入力して tmux セッションから切断できますd。ログアウトしてもコピー手順には影響しません。再度ログインすると と入力できtmux attach、コピー操作の進行状況を表示できます。

これがお役に立てば幸いです。何かご不明な点がありましたらお知らせください。

答え2

rsync コマンドの使用を検討することを強くお勧めします。rsync コマンドは、転送を簡単に再開できるため便利です。rsync はデフォルトで SSH トランスポート経由で動作するため、クライアントとサーバーに rsync バイナリがあれば十分です。

Rsync はすでに転送されたものを検出し、転送されていないファイルとファイルの一部のみを転送します。

答え3

これで問題は解決すると思います:

nohup scp -r big-folder remote-machine:/home/user/ &

このコマンドはコピー プロセスを開始し、ログオフ後もコピーを続行します。

関連情報