web-dev-qa-db-ja.com

rsync --dry-run出力を再利用して、後で実際の転送を高速化します

私は通常、実際のrsyncを行う前にrsync -nを行います。実は、2回目の実行を自動化して、--dry-runで生成されたリストを正確に再利用するにはどうすればよいでしょうか。

つまり、rsync -nを実行すると、rsyncが何をするかのシミュレーションが得られます。私の考えは、その出力を取得して処理し、何らかの形でrsyncのみを作成することです--include-fromはその出力なので、完全なリストは1回だけ計算する必要があります。

これでも意味がない場合は、お知らせください。

ちなみに、私はrsync -hva --progress --stats --delete --exclude-from "$EXCLUDEFILE"を使用する傾向があります。どのオプションを使用するかについても提案がある場合は、お知らせください。外付けハードドライブ(画像、ビデオ、ドキュメントのみを含む)の内容を別の外付けハードドライブに複製しようとしています。

26
Manuel

予行演習中に生成されたファイルリストをインクルードファイルとして使用することは確かに可能です。ただし、理想的には、ドライラン出力の上部と下部にある余分な行を削除する必要があります。

出力例:

sending incremental file list
[LIST OF FILES]

sent 226 bytes  received 34 bytes  520.00 bytes/sec
total size is 648,373,274  speedup is 2,493,743.36 (DRY RUN)

これらの行を削除するには、rsync出力をheadtailにパイプします。次に、処理された出力をインクルードファイルに保存します。

rsync --dry-run -avz source/ destination/ | head --lines=-3 | tail --lines=+3 > include.txt

最後に、生成されたインクルードファイルを使用するようにrsyncに指示します(必要に応じてオプションを追加します)。

rsync --include-from=include.txt --exclude=* source/ dest/

23
ThatGuy