Есть ли альтернатива rsync, которая сохраняет сжатые и зашифрованные данные?

Есть ли альтернатива rsync, которая сохраняет сжатые и зашифрованные данные?

Я ищу подходящее решение для резервного копирования/синхронизации файлов вне офиса. И локальный клиент, и удаленный сервер работают на Linux. Место для хранения на сервере ограничено, пропускная способность между клиентом и сервером очень ограничена.

Я посмотрел на duplicity, Back In Time, Déjà Dup, luckyBackup, rsnapshot, rdiff-backup, rsynccrypto. Ни один из них, похоже, не делает то, что мне нужно, по крайней мере, если я правильно их понимаю. Они либо хранят несколько версий, либо выполняют полную повторную передачу каждый раз, либо не имеют шифрования, либо не имеют сжатия. Я попробовал комбинацию rsync/fusecompress/encfs, но fusecompress продолжает уничтожать мои файлы. Я искал superuser и askubuntu, нашел только один похожий вопрос здесь (Как сделать зашифрованное резервное копирование в стиле rsync?), но там нет ни слова о сжатии и нет подходящего решения.

Требования:

  • простое зеркалирование, только одна копия файлов (ограниченное пространство для хранения)
  • обновить только те файлы, которые изменились с момента последней синхронизации (ограниченная пропускная способность)
  • хранить файлы в сжатом и зашифрованном виде
  • шифрование должно происходить на клиенте перед передачей

По сути, мне нужно что-то, что ведет себя как 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. используйте rsync для /mounted/unencrypted

  4. размонтировать шифрование

    fusermount -u /mounted/unencrypted
    
  5. в конечном итоге отключите удаленный ресурс

    umount /mounted/encrypted
    

решение2

@Альфред Рапп,

Вы проверили «Areca Backup»?

Я думаю, что он отвечает всем вашим запросам/потребностям.

http://areca-backup.org/

ИЗМЕНЕНО 14 июня 2023 г.

Старый пост, но теперь есть идеальное решение, которое отвечает всем требованиям ОП-вопросов.

Программа Restic.https://restic.net/

решение3

Я думаю, то, о чем вы просите, логически невозможно, если только вы не сохраните более ранний снимок материала на клиенте, чтобы можно было создать различия там без ссылки на сервер.

Проблема в том, что если материал хранится зашифрованным на сервере, но ключ шифрования хранится только на клиенте, то вам придется передавать контент с сервера на клиент для создания diff, если только клиент не сохранил копию для этой цели. Схема в ответе @jet будет страдать от этой проблемы, и в этом случае алгоритм rsync не поможет пропускной способности.

Вы не говорите, что файловое пространство на клиенте ограничено, так что, возможно, вы просто можете запустить duplicity в локальной файловой области и синхронизировать полученные файлы с помощью rsync?

Возможно, вам также будет интересно почитать о криптографических проблемах с encfs.

Связанный контент