私たちは、職場で他のすべてのサーバー(主にLinux)がバックアップを送信するLinuxバックアップサーバーを構成しています。バックアップのサイズは数百GBに達し、何千ものファイルが含まれており、その99%は毎日変わりません。
通常、これはrsyncの完全なユースケースです。残念ながら、私たちの要件の1つは、サーバーがバックアップをアップロードできるように、バックアップサーバーが書き込み専用でなければならないことです。ただし、そのサーバーが破損している場合、バックアップにリモートでアクセスすることはできません。私たちは現在書き込み専用モードで動作するようにvsftpdを設定していますが、毎晩ネットワークを介して数百ギガバイトのデータを転送する必要があることを除いて、うまく機能します。
私が知っている限り、rsyncはリモートファイルをローカルファイルと比較するので、リモートサーバーへの読み書きアクセスが必要です。
私の質問:バックアップサーバーはチェックサムとファイル名を表示できますが、実際のデータは表示できないすべてのモードでrsyncを実行できますか?これはまだ書き込み専用サーバーですが、フルバックアップではなく差分バックアップを実行できることを意味します。
答え1
ネットワークトラフィックを減らしたいがローカルディスク容量を無駄にしない場合、新しい解決策はバックアップをローカルに「ミラーリング」してから、rsyncのバッチモードを使用して違いをリモートで送信することです。
緩やかに言えば、次のコマンドを使用してローカルバックアップを作成できます。
rsync --write-batch=foo -a /src/dir/ /localcopy/dir/
これにより、すべての変更を含むファイルと内容を解釈するためにリモートで実行される1行のスクリプトが生成されますfoo
。foo.sh
両方ともリモートデバイスにコピーし、リモートデバイスでスクリプトを実行します。
scp foo foo.sh remote:
ssh remote ./foo.sh /dir/
または必要に応じて:
ssh remote rsync --read-batch=- -a /dir/ <foo
また、見ることができます二重性rsyncの場合はリモートデータを暗号化するため、データを悪用するには暗号化キーも盗む必要があります。
答え2
rsync バージョンには書き込み専用モードがあります。2.6.3異常(実装の詳細はコミット参照)7a92ded39a)。あなたの質問に記載されているように動作します。
で構成rsyncd.conf:
ただ書く
このパラメータは、クライアントがファイルをダウンロードできるかどうかを決定します。 「書き込み専用」が true の場合、ダウンロード試行は失敗します。 「書き込み専用」がfalseの場合、デーモン側のファイル権限が許す限りダウンロードが可能です。このパラメータはデフォルトで無効になっています。
[module]
path = /some/path
read only = no
write only = yes
...
書き込み専用ストアからファイルを受信しようとすると、次のエラーが発生します。
$ rsync rsync_host::module .
ERROR: module is write only
rsync error: syntax or usage error (code 1) at main.c(804) [sender=3.1.2]