将文件从一台计算机同步或备份到另外一台计算机的快速简便的方法是使用rsync。我将介绍一般用于备份数据的命令行选项,并显示一些选项以极大地将传输速度从大约20-25 MB / s加快到90 MB / s以上!linux
rsync协议可以有效地在计算机之间同步文件。它仅经过传输更改的文件来完成此操做,除此以外,它还尝试仅传输本地文件和远程文件之间的差别,以进一步最小化传输的数据大小。
底层数据传输使用Secure Shell或 SSH保护,这增长了另外一层计算开销来安全地加密数据,而后传输到远程服务器并再次对其解密。由于我大部分时间都在使用计量互联网链接,因此我在SSH中使用了最大可能的压缩率,这在本地和快速网络中使用rsync时会成为瓶颈。git
个人默认命令行参数,带有完整rsync手册页中的描述:
github
SSH的最大压缩(在个人配置中默认使用)对带宽较小的计量链接颇有帮助,在这种状况下,您能够从减小的数据量中节省时间。在本地快速网络中,这其实是瓶颈,而且在SSH命令的100%CPU使用率中体现出来。在这种快速的本地网络中,无需进行任何压缩便可直接传输文件,由于压缩和解压缩会比仅传输普通文件花费更长的时间。
为此,可使用如下选项来加速本地网络中的数据传输:
安全
-S
/ --sparse
:将空序列变成稀疏块--partial
或者-P
是--partial --progress
:保存任何部分传输的文件以供未来恢复。注意:文件不会有临时名称,所以请确保在整个副本完成以前,没有其余指望使用目标的文件。--no-whole-file
这样须要从新发送的任何内容都会使用增量传输。读取部分传输的文件的一半一般比从新写入要快得多。--inplace
避免文件复制(但前提是在整个传输完成以前没有任何内容读取目标)
完整的命令将foo文件夹备份到 目标主机desthost上的远程文件夹栏,而后:服务器
export RSYNC_RSH ="ssh -T -c aes128-ctr -o Compression = no -x"网络
rsync -avur --progress --delete foo desthost::bar ssh
使用此命令,能够将传输速率从大约20-25 MB / s增长到90 MB/s以上!性能
1. 稀疏文件是一种计算机文件,它能尝试在文件内容大多为空时更有效率地使用文件系统的空间。它的原理是以简短的信息表示空数据块,而不是在在磁盘上占用实际空间来存储空数据块。只有真实的数据块会按原样写入磁盘。 在读取稀疏文件时,文件系统会按元数据在运行时将这些透明转换为“真实”的数据块,即填充为零。应用程序不会察觉这个转换。优化