rsync 传输加密文件是否有效?更具体地说:
- 我用我的公钥加密“x”,并将结果称为“y”。
- 我将‘y’ rsync 到我的备份服务器。
- 'x' 略有变化
- 我加密修改后的“x”,并将修改后的“y”rsync 到我的备份服务器。
这有效吗?我知道“x”的一个小变化会导致“y”的巨大变化,但这种变化是局部的吗?或者“y”的变化太彻底了,以至于 rsync 并不比 scp 好多少?
我目前通过每晚对“关键”文件进行 tarring/bzip 来备份它们,然后加密 .tar.bz 文件并将其 rsync 到我的备份服务器。
许多单独的文件都不会改变,但是,只要其中一个文件发生改变,整个 tar 文件也会改变。
这有效吗?我应该单独加密和备份每个文件吗?这样,未更改的文件就不需要花费时间进行 rsync。
编辑以添加更多信息:
来源是我家里的机器。我拥有它并且认为它是安全的。
目标是一台托管服务器。它是我的,但托管公司可以看到任何/所有网络流量以及该机器硬盘上的任何内容。
源的可用空间非常小。我不想通过存储加密备份而将其空间减半。
目标有很大空间。
根据这个新信息有什么想法吗?
答案1
答案2
首先,祝贺您认真对待备份。
单纯从 rsync 传输效率的角度来看,压缩和加密单个文件,然后创建 tarball 会更好。那些您无需对其进行进一步的加密或压缩。
你甚至可以更好地跳过 tarball(再次只看传输时间),只需 rsync 加密/压缩文件的层次结构。
对于任何给定的压缩和加密文件,我相信直到改变点(或实际上是像 bzip2 这样的块压缩器中第一个改变的块)您将获得相同的文件,但在此之后您将永远不会同步旧流;即,tarball 的其余部分将会有所不同。
另一方面,从安全角度来看,加密 tarball 将隐藏文件名和修改模式,从而阻止流量分析。
我看不出有办法仅使用 rsync 就能同时获得增量备份和完整的安全性。
更新:
如果你能控制两端,你可以使用rsync -e ssh -a ...
;这将使用 ssh 隧道(如果 ssh_config 设置正确,它还将提供压缩)和然后你可能真的会同时拥有两全其美的优势。
最后想说的是,查看rdiff-备份。
答案3
如果您使用的是 GNU tar(也可能是其他工具),则可以创建一个包含所有要备份的文件的 tar 文件并将其存储在本地,然后使用“--append”扩展文件以进行任何更新。由于文件的所有更新都在末尾,因此加密不会隐藏未更改的数据,因此 rsync 会非常高效地运行。缺点是它需要两个位置的大量空间,并且每次备份都会增加空间。优点是它会进行顺序备份并保留更改历史记录。
如果您使用的是 OS X,那么有一个简单、更有效的解决方案可以解决您的问题:创建一个加密的稀疏捆绑磁盘映像并对其进行 rsync。
该包是一个目录树,其中包含元数据和单个文件中的小段加密数据,磁盘映像的内容存储在这些文件中。固定大小的段数会随着磁盘映像的填满而增加(将它们视为动态硬盘块),并且只有包含已更改数据的段才会在磁盘上更改,从而使 rsync 高效运行。不过,我怀疑您在使用公钥加密时是否可以拥有读写访问权限。
安全性...您使用的是公钥加密技术,因此如果攻击者进入您正在备份的盒子,他们将无法访问历史数据?我想不出任何其他使用公钥而不是 AES 的理由。请注意,当攻击者可以访问要备份的盒子时,rsync 允许攻击者销毁所有备份或用他们选择的任何东西覆盖它们。