解決策 1:
多くのファイルを同期する必要がある場合は、rsync バージョン 3 を使用してみてください! V3 はそのファイル リストを段階的に構築し、バージョン 2 よりもはるかに高速でメモリ使用量が少なくなります。
プラットフォームによっては、これにより大きな違いが生じる可能性があります。 OSX バージョン 2.6.3 では、500 万ファイルのインデックスを構築しようとして 1 時間以上かかるかクラッシュしますが、私がコンパイルしたバージョン 3.0.2 はすぐにコピーを開始しました。
解決策 2:
--link-dest
の使用 スペース効率の高いスナップショット ベースのバックアップを作成します。これにより、バックアップ データの複数の完全なコピー (バックアップ実行ごとに 1 つ) があるように見えますが、実行間で変更されていないファイルは、スペースを節約する新しいコピーを作成する代わりにハード リンクされます。
(実際、私はまだ rysnc
を使用しています -followed-by-cp -al
同じことを達成する方法。 http://www.mikerubel.org/computers/rsync_snapshots/ を参照して、両方の手法と関連する問題の古いながらも非常に優れた概要を確認してください)
この手法の主な欠点の 1 つは、ディスク エラーが原因でファイルが破損した場合、そのファイルにリンクするすべてのスナップショットで同じように破損することですが、オフライン バックアップも持っているため、これをある程度防ぐことができます。他に気をつけなければならないことは、ファイルシステムに十分な inode があるか、実際にディスク容量がなくなる前に inode を使い果たしてしまうことです (ただし、ext2/3 のデフォルトで問題が発生したことはありません)。
また、非常に便利な --dry-run
を決して忘れないでください 特に --delete*
を使用している場合は、少し健全なパラノイアのために オプション。
解決策 3:
低速なリンクを介していくつかの巨大なファイルを含む Web サイトを更新する必要がある場合は、次の方法で小さなファイルを転送できます:
rsync -a --max-size=100K /var/www/ there:/var/www/
次に、大きなファイルに対してこれを行います:
rsync -a --min-size=100K --bwlimit=100 /var/www/ there:/var/www/
rsync には、ウェブサイトに便利なオプションがたくさんあります。残念ながら、同時更新を検出する方法が組み込まれていないため、巨大なファイルの書き込みが重複しないように、cron スクリプトにロジックを追加する必要があります。
解決策 4:
ファイルの小さなサブセットをあるディレクトリから別の場所に同期させようとするときに、 --existing オプションを使用します。
解決策 5:
--time-limit
このオプションを使用すると、rsync は T 分後に停止して終了します。このオプションは、大量のデータを夜間 (混雑していない時間帯) に再同期し、日中 (混雑している時間帯) に人々がネットワークを使い始める時間になったら停止する場合に役立つと思います。
--stop-at=y-m-dTh:m
このオプションを使用すると、rsync をいつ停止するかを指定できます。
Batch Mode
バッチ モードを使用して、同じ一連の更新を多数の同一システムに適用できます。