通过Rsync加密的远程备份?


13

我在家里运行一台小型的CentOS服务器以进行其他备份等。我镇另一侧的朋友也在他的家里运行一台小型的CentOS服务器,用于类似目的。我们一直在考虑使用对方服务器进行远程/异地备份的想法。

基本上,我们每个人都会购买一个外部硬盘驱动器,以存储在彼此的家中,并连接到彼此的服务器上。然后,我们将分别设置预定的rsync,以将适当的数据从一台服务器推送到另一台服务器上的外部硬盘驱动器。在大多数情况下,非常简单。

但是,重要的一件事(至少对我而言)是数据加密。我想将数据存储在朋友服务器上的外部硬盘上。但是我不希望我的朋友(或访问我朋友服务器的任何人)能够读取外部硬盘上的内容。

最好的方法是什么?您是否可以使用rsync将数据发送到加密的硬盘驱动器,并在将其到达服务器后以某种方式传递密码以及用于写入密码的数据?

Answers:


9

我来看看Duplicity。

Duplicity将执行完整和增量备份,并使用Rsync,ftp,sftp等传输它们。

Duplicity使用GPG加密备份,并使用签名文件,而不使用签名文件。

我用它来备份我的电子邮件服务器,这非常棒,是一个简单的批处理文件。

当然免费且易于使用。

手册页:http : //duplicity.nongnu.org/duplicity.1.html

希望这可以帮助。

卢克


令人震惊,而且超级容易退回和还原。感谢您的提示!
杰克·威尔逊

11
## 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/

哇,我以前从未听说过EncFS。鉴于我有200GB可以从具有240GB磁盘的笔记本电脑同步到云,这真是太好了。
Mark K Cowan

该解决方案似乎比双精度或rsyncrypto变体更好。这只是文件的加密(虚拟)版本的简单rsync。这正是我所需要的。重复性的问题是BIG完整备份。rsyncrypto的问题是需要数据副本。EncFS只是在rsync读取数据时对其进行加密。:D
gamecreature 2016年

1

这是我基于Thor的回答的备份脚本(几年后仍然有效!)。它根据需要添加文件.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驱动器。我想对备份进行加密,以防万一驱动器消失以及一些敏感数据。


0

像上面描述的解决方案一样,需要将加密密钥发送到朋友的机器上。如果我们认为您的朋友是“不受信任的站点”,那么您就失去了安全性(他可以捕获密钥并读取您的数据)。

如果要确保您的朋友无法读取您的备份,则必须发送文件之前对其进行加密(例如制作tarball,使用gpg或类似文件加密,然后重新同步),并且永远不要给他密钥(或足够的密钥)明文以对密钥进行反向工程)。
请注意,这样做会否定使用rsync的增量好处(节省带宽):每次备份时,加密文件都会发生很大变化,因此您可能每次都会复制整个内容。


2
这就是Duplicity的优点,它在离开计算机之前就对其进行了加密,但是它完全能够通过读取签名/更改列表来进行增量备份,而这不是我向他建议的原因。第一次备份将花费很长的时间,但是在此之后,在保持良好安全性的同时,他会很高兴。
Luma 2010年

0

rsyncrypto正是为此目的而编写的。它允许您利用rsync的增量复制算法,同时在本地加密数据并远程存储加密的blob。

但是,请记住,rsyncrypto在安全性和性能之间进行了权衡。


快速浏览了rsyncrypto的工作原理后,我对使用它的任何人的想法感到震惊。在我信任任何数据之前,我希望看到一位著名的密码学家的意见。
womble
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.