У меня дома есть небольшой скромный сервер CentOS для разных резервных копий и т. Д. Мой друг на другом конце города также запускает небольшой скромный сервер в своем доме для аналогичных целей. Мы раздумывали над идеей использования серверов друг друга для удаленного / удаленного резервного копирования.
По сути, каждый из нас покупал внешний жесткий диск для хранения в домах друг друга, подключенный к серверам. Затем мы планировали каждую настройку rsync для передачи соответствующих данных с одного сервера на внешний жесткий диск на другом сервере. По большей части довольно просто.
Однако одна вещь, которая важна (по крайней мере, для меня), - это шифрование данных. Я хочу хранить свои данные на внешнем жестком диске на сервере моих друзей. Но я не хочу, чтобы мой друг (или кто-либо, кто обращается к серверу моего друга), мог читать то, что находится на внешнем жестком диске.
Как лучше всего к этому подойти? Можете ли вы использовать rsync для отправки данных на зашифрованный жесткий диск и каким-либо образом передать парольную фразу вместе с данными, которые он использует для записи, когда они достигают сервера?
## sync local unencrypted data to remote encrypted backups via rsync ..
## mount read-only encrypted virtual copy of unencrypted local data :
encfs --reverse --idle=60 -o ro ~/data/ ~/.tmp_encrypted_data/
## rsync push local encrypted virtual copy of data to remote encrypted copy :
rsync -ai --whole-file ~/.tmp_encrypted_data/ user@example.com:backup/
## unmount encrypted virtual copy of local data :
fusermount -u ~/.tmp_encrypted_data/
Я бы посмотрел на Двойственность. Это бесплатно и легко использовать.
Duplicity будет делать полные и инкрементные резервные копии и передавать их с помощью rsync, FTP, SFTP и т. Д.
Duplicity использует GPG для шифрования резервных копий и использует файлы подписей, а что нет.
Я использую его для резервного копирования своих почтовых серверов, и это фантастический, один простой командный файл.
Вот мой сценарий резервного копирования, основанный на ответе Тора (все еще действителен несколько лет спустя!). Он добавляет копирование файла .encfs6.xml по мере необходимости для последующего дешифрования (не требуется в 2011 году?), Создание временной папки для зашифрованного монтирования и чтение пароля шифрования из файла (для автоматического скриптинга):
#!/bin/bash
SOURCE=/home/jortiz/Documents/
BACKUP=/media/jortiz/BAK-EXGD/backup_ALMA_E6520/Documents
SOURCE_ENC=$(mktemp -d /tmp/source_enc.XXXXXX)
echo "Created temporary folder $SOURCE_ENC ..."
## sync local unencrypted data to remote encrypted backups via rsync
# mount read-only encrypted virtual copy of unencrypted local data
encfs --extpass="cat /home/jortiz/.passbackup" --reverse --idle=60 -o ro $SOURCE $SOURCE_ENC
# rsync push local encrypted virtual copy of data to remote encrypted copy
rsync -ai --whole-file $SOURCE_ENC/ $BACKUP
# Copy encfs xml file to backup folder for later decryption
rsync -ai --whole-file $SOURCE/.encfs6.xml $BACKUP
# unmount encrypted virtual copy of local data
fusermount -u $SOURCE_ENC
echo "Removing temporary folder $SOURCE_ENC ..."
rmdir $SOURCE_ENC
В моем случае я настраиваю ежедневное резервное копирование моего ноутбука и небольших серверов на внешний USB-накопитель, подключенный локально. Я хочу зашифровать резервную копию на случай, если диск исчезает однажды вместе с некоторыми конфиденциальными данными.
rsyncrypto был написан именно для этой цели. Он позволяет использовать алгоритм дельта-копирования rsync при локальном шифровании данных и удаленном хранении зашифрованных BLOB-объектов.
Однако имейте в виду, что rsyncrypto делает компромисс между безопасностью и производительностью.
Решение, подобное тому, которое вы описали выше, требует отправки ключа шифрования на компьютер вашего друга. Если мы считаем вашего друга «ненадежным сайтом», вы только что взорвали свою безопасность (он может захватить ключ и прочитать ваши данные).
Если вы хотите быть уверены, что ваш друг не может читать ваши резервные копии, вы должны зашифровать файлы. перед вы отправляете их (например, создаете архив, зашифруете его gpg
или подобное, затем выполните rsync) и никогда не давайте ему ключ (или достаточно открытого текста, чтобы перепроектировать ключ).
Обратите внимание, что это сводит на нет дельта-преимущества (экономию полосы пропускания) использования rsync: зашифрованный файл будет существенно меняться каждый раз, когда вы делаете резервную копию, поэтому вы, вероятно, будете копировать все это каждый раз.