ファイルをバックアップし、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
、代わりに使用することをお勧めできるユーティリティはありますか?
どんなフィードバックでも大歓迎です!