圧縮され暗号化されて保存される rsync の代替手段はありますか?

圧縮され暗号化されて保存される rsync の代替手段はありますか?

適切なオフサイト バックアップ/ファイル同期ソリューションを探しています。ローカル クライアントとリモート サーバーは両方とも Linux を実行しています。サーバー上のストレージ スペースは限られており、クライアントとサーバー間の帯域幅は非常に限られています。

duplicity、Back In Time、Déjà Dup、luckyBackup、rsnapshot、rdiff-backup、rsynccrypto を調べました。少なくとも私が正しく理解している限り、どれも私の希望どおりには動作しないようです。複数のバージョンを保存するか、毎回完全に再送信するか、暗号化または圧縮が不足しています。rsync/fusecompress/encfs の組み合わせを試しましたが、fusecompress はファイルを破壊し続けます。superuser と askubuntu を検索しましたが、ここで同様の質問が 1 つだけ見つかりました (rsync のような暗号化バックアップを実行する方法は?)。ただし、圧縮については触れられておらず、適切な解決策もありません。

要件:

  • シンプルなミラーリング、ファイルのコピーは 1 つだけ (ストレージ スペースが限られている)
  • 前回の同期以降に変更されたファイルのみを更新する(帯域幅が制限されます)
  • ファイルを圧縮して暗号化して保存する
  • 送信前にクライアント側で暗号化を行う必要がある

基本的に、私が欲しいのは、rsync のように動作するが、ミラーリングされたファイルを圧縮および暗号化して保存するものです。そのようなものは存在しますか?

答え1

サーバーが ssh を実行している場合:

  1. リモートサイトをローカルにマウントする

    sshfs -o nonempty,sshfs_sync,compression=yes username@host:/path/archives/ /mounted/encrypted/
    
  2. 暗号化されたシステムを作成し、マウントします (初めてディレクトリをマウントしようとすると、encfs は暗号化されたファイルシステムを作成します。通常のマウントと同じように動作します)。

    encfs /mounted/encrypted /mounted/unencrypted 
    
  3. /mounted/unencrypted にrsyncを使用する

  4. 暗号化のマウント解除

    fusermount -u /mounted/unencrypted
    
  5. 最終的にリモートリソースをアンマウントする

    umount /mounted/encrypted
    

答え2

@アルフレッド・ラップ、

「Areca Backup」を確認しましたか?

あなたが求めている/必要としているすべての要件を満たしていると思います。

http://areca-backup.org/

2023年6月14日編集

古い投稿ですが、現在では OP の質問のすべての要件を満たす完璧な解決策があります。

プログラムはResticです。https://restic.net/

答え3

あなたが求めているのは、クライアントに素材の以前のスナップショットを保存し、サーバーを参照せずにそこに差分を構築しない限り、論理的に不可能だと思います。

問題は、素材がサーバー上で暗号化されて保存されているが、暗号化キーがクライアント上にのみ保持されている場合、クライアントがこの目的のためにコピーを保持していない限り、差分を生成するためにサーバーからクライアントにコンテンツを転送する必要があることです。@jet の回答のスキームではこの問題が発生し、その場合、rsync アルゴリズムによって帯域幅が改善されることはありません。

クライアント上でファイル スペースが制限されているとは言っていないので、ローカル ファイル領域に対して duplicity を実行し、結果のファイルを rsync するだけでよいのではないでしょうか。

encfs の暗号化の問題について読んでみるのも良いでしょう。

関連情報