web-dev-qa-db-ja.com

SSH経由で大きなディレクトリをバックアップ/同期する最も効率的な方法

最小限の帯域幅を使用して、専用サーバー上のいくつかの大きなディレクトリを毎日別のサーバーにバックアップしようとしています。

RSyncはタスク次第のように見えますが、最適なコマンドスイッチがわかりません

SSH経由で別のマシンの1つの「バックアップ」ディレクトリに複数の選択したディレクトリを実行したい

何か案は?

3
mobile

私はあなたがより良いユーザーであることを付け加えたいと思います--numeric-idsフラグを使用して、ファイルのuid/gidを保持し、ローカルユーザーに再マッピングされないようにします。

履歴バックアップ(たとえば、YYYY-MM-DD daliyディレクトリ)を保持する場合は、オプション--link-dest=DIRは非常に役立ちます。

データを効果的に圧縮できる場合(ソースコード、プレーンテキストファイル、ログ)、それは-z非常に便利です。

さもないと、 -aHあなたのニーズのほとんどをカバーします。

1
artyom

Rsyncは確かにこれを処理するための適切な低レベルのツールです。 rsyncオプションについて心配するのではなく、専用のバックアップツールを使用してください。たくさんあります。 Rsnapshot は一般的な選択肢です。要件(あまり明確ではありません)がその機能を満たしているかどうかを確認してください。 Duplicity は、rsyncライブラリに基づく別のバックアップツールです。

これを実行してみてください(バックアップサーバーから):

rsync \
    -a \
    --bwlimit=100 \
    remote-server:"/path1 /path2 /path3" /local/backup_$(date +%Y%m%d_%H:%M)

--bwlimit=100はほぼ100KB /秒を表します

日の間にcp -alハードリンクを使用できます。これにより、多くのディスク容量とrsyncのみを節約できます。変更されたファイル!

それが rsnapshot プロジェクトの仕組みです。

0
Gilles Quenot

rsyncは問題ありませんが、rsyncの 変更検出アルゴリズム を利用するには、いずれかのマシンでrsyncdを実行する必要があることを忘れないでください。

ハードリンクのsputnickの言及については、 fdupes にも興味があるかもしれません。

0
peterph