rsync的参数-P可用于断点续传。用man rsync查看手册,找到对应于-P的--partial参数的详细解释(图1)。
图中说到rsync被中断时默认会删除只传输了一部分的文件(图2)。
图2:在label目录下没有红框中的partial file
那么那些完整传输的文件要删掉重来吗?测试了一下发现是不用的,再次执行rsync会接着上次中断的地方继续传输文件(图3)。 使用--partial参数可以保留在rsync中断时只传输了一部分的文件,用于在下次传输时从中断的地方接着传输(并且可以用--partial-dir=DIR指定将不完整的文件保留到某个目录,下次续传时,程序会到这个目录下寻找)。
总结
其实,rsync本身就支持断点续传,加上--partial的作用是能实现单个文件内的断点续传(当文件比较大的时候,用这个参数的优势便会比较明显)。
注意
需要注意的是,-P既然是通过存储一个临时的文件来实现单个文件内的断点续传,那么它拷贝每个文件都要做这种额外的存储并删除临时文件的操作,非但如此,对于每个文件rsync还会计算该文件拷贝的百分比以及速度等信息(图4)。
所以,对于单个大型文件,用-P参数的优势非常明显,但是如果在拷贝大量文件(可能有很多小文件不需要进行文件内断点续传)的时候,就要考虑时间上的问题的了。不用-P应该可以节省不少时间(图5)。