大容量データ(30 GB)をサーバーに移動していますが、このサーバーは複数の 200 MB tar.gz ファイルに分割されています。これには時間がかかり、プロセス中にコンピュータを停止して再起動する必要があるため、転送は中断されます。
私がしたいことは次のとおりです。
find . -maxdepth 1 -type f -iname "*.tar.gz.*" | while read file ; do
scp "$file" username@host:/backup/
mv "$file" "already-done/"
done
残念ながら、SSHキーは私が制御できない非標準設定なので、このボックスにコピーすることはできません。したがって、接続を作成するたびに手動でパスワードを入力する必要があるため、上記のwhileループは非生産的です。 rsyncを使用して単一の永続SSH接続を介してこのサーバーにファイルをコピーし、完了したバックアップを別のディレクトリに移動して、新しい起動時に再コピーしないようにする方法はありますか?
答え1
2つの提案があります。
- scp への呼び出しを、これらの状況を処理するように設計された rsync への呼び出しに置き換えます。
- whileループを使用する必要はありません。 globを使用してファイルを直接呼び出すだけです。 findコマンドは最大深度1を使用するため、
rsync -t *.tar.gz.* username@host:/backup/
Rsyncはコピーされたファイル、コピーされていないファイル、およびそのファイルの正確性を確認します。接続を介して変更を送信します。