我正在尝试设置一些脚本来执行夜间备份到远程驱动器。我想知道这样做是否更好(考虑到效率和数据完整性):
答:通过 ssh 隧道进行 rsync,或者
B:使用 ExpanDrive 等程序通过 ssh 隧道在本地安装驱动器(http://www.expandrive.com/),然后通过其本地挂载点 rsync 到驱动器。
每天备份一次,但我可能会将驱动器大部分时间都连接起来以供其他用途。
谢谢您的帮助/建议。
答案1
RSync 选项将是远的更好的。
当 RSync 通过 SSH 运行时,它实际上使用两个都进行文件比较时系统的处理器。
基本上,rsync 运行于两个都设备(字面意思是,rsync 使用 ssh 连接到远程设备,在远程设备上执行 rsync 二进制文件,然后两个正在运行的可执行文件通过 ssh 管道进行交互),通过让两个系统交换文件哈希值,而不是转移全部的文件通过管道传输,就像将远程系统安装为本地驱动器时必须做的那样。
显然,只有在速度受到严重限制时这才是一种优势,但大多数远程备份都是如此。
此外,rsync 在传输 SSH 压缩文件时运行,以加快传输时间。我不相信 ExpanDrive 会进行压缩,但即使它进行压缩,在两个系统之间比较文件时也会损失很多。
RSync 在执行本地备份和通过网络备份时具有根本不同的操作模式。在本地工作时,它不会进行文件比较的哈希处理,也不会进行文件压缩。
仅当您有多个客户端备份到同一设备,或者您的设备严重受限于 CPU(例如嵌入式 NAS)时,将 rsync 作为守护进程运行才真正有用。它基本上只是让您避免 SSH 开销,并且不必让每台设备都有一个 SSH 帐户。
答案2
我认为 rsync over ssh 更好,但我的建议是在另一端启动 rsync 守护进程并通过安全 VPN(openvpn、pptp)访问它。SSH 加密对 CPU 使用率有影响,并且根据传输的大小,这可能是一种痛苦的体验,但是守护进程模式下的 rsync 没有加密,是最快的解决方案。请注意,rsyncd(守护进程模式下的 rsync)不使用任何加密,身份验证非常有限。