6

ファイルをバックアップし、FTP/SFTP/SCP プロトコルを介して Amazon S3、Rackspace Cloud Files、Dropbox、リモート サーバーなどのさまざまな外部の場所にファイルを転送するオープン ソースのバックアップ ユーティリティに取り組んでいます。

現在、増分バックアップを実行する機能のリクエストを受け取りました (作成されるバックアップが大きく、転送と保存に費用がかかる場合)。私は周りを見回しており、誰かがrsyncユーティリティについて言及しました。これでいくつかのテストを実行しましたが、これが適切かどうかわからないので、経験のある人から聞いてみたいrsyncです.

バックアップが作成されるとどうなるかを簡単に説明します。基本的に、MySQL、PostgreSQL、MongoDB、Redis などのデータベースのダンプを開始します。ファイルシステムからいくつかの通常のファイル (画像など) を取得する場合があります。すべてが整ったら、すべてを単一の .tar にバンドルします (さらに、 and を使用して圧縮および暗号化しますgzip) openssl

すべてが完了すると、次のような単一のファイルが作成されます。
mybackup.tar.gz.enc

今、このファイルをリモートの場所に転送したいと考えています。目標は、帯域幅とストレージ コストを削減することです。1GBでは、この小さなバックアップ パッケージのサイズがほぼ同じであると仮定しましょう。したがってrsync、これをリモートの場所に転送し、ファイルのバックアップをローカルで削除するために使用します。明日、新しいバックアップ ファイルが生成され、過去 24 時間にさらに多くのデータが追加されたことが判明し、新しいファイルを作成すると、サイズmybackup.tar.gz.encが最大になっているように見えます。1.2GB

さて、私の質問は:200MB過去 24 時間に追加されたものだけを転送することは可能ですか? 次のコマンドを試しました:

rsync -vhP --append mybackup.tar.gz.enc backups/mybackup.tar.gz.enc

結果:

mybackup.tar.gz.enc 1.20G 100% 36.69MB/s 0:00:46 (xfer#1, to-check=0/1)

送信 200.01M バイト
受信 849.40K バイト
8.14M バイト/秒
合計サイズは 1.20G
スピードアップは 2.01

を見るとsent 200.01M bytes、データの「追加」は適切に機能していると言えます。私が今疑問に思っているのは1.2GB、既存のバックアップにどれだけの量と何を追加するかを把握するために全体を転送したのか、それとも実際に転送しただけなの200MBかということです。全体を転送した場合、単一の大きなファイルでユーティリティを1.2GB使用するのとどう違うのかわかりません。scp

また、私が達成しようとしていることが可能な場合、どのフラグをお勧めしますか? で不可能な場合rsync、代わりに使用することをお勧めできるユーティリティはありますか?

どんなフィードバックでも大歓迎です!

4

3 に答える 3

8

gzip の性質上、ソース ファイルに小さな変更を加えると、結果の圧縮ファイルに非常に大きな変更が生じる可能性があります。

gzip の一部のバージョンには、gzip が--rsyncable動作するブロック サイズを rsync のブロック サイズと同じに設定するスイッチがあり、(ほとんどの場合) 圧縮の効率がわずかに低下しますが、出力ファイルへの変更は出力の同じ領域に制限されます。ソースファイルの変更としてファイル。

それが利用できない場合は、通常、圧縮されていないファイルを rsync し (帯域幅が考慮される場合は rsync 独自の圧縮を使用)、最後に圧縮します (ディスク容量が考慮される場合)。明らかに、これはユースケースの詳細に依存します。

于 2012-10-24T14:43:46.877 に答える
6

送信したものだけを送信し、変更された部分のみを転送することは、 の主要な機能の 1 つですrsync。それはいくつかのかなり巧妙なチェックサムアルゴリズムを使用します(そしてそれらのチェックサムをネットワーク経由で送信しますが、これは無視できます-ファイル自体を転送するよりも数桁少ないデータです;あなたの場合、それは.01in であると思います200.01M)そしてそれらのみを転送します必要な部品。

rsync に基づく非常に強力なバックアップ ツール、つまりDuplicityが既に存在することにも注意してください。コードのライセンスによっては、これがどのように行われるかを確認する価値がある場合があります。

于 2011-03-04T23:57:41.177 に答える
1

新しい rsync --append は、既存のデータに変更がある場合、ファイルの内容を壊します。(3.0.0以降)

于 2013-10-22T09:58:22.927 に答える