08月11, 2017

使用rsync下载零散文件

现有一需求,想从服务器上下载一个目录到另一个机器上,而且服务器没有足够空间供打包或者文件太大太多,打包的时间也太长,无法忍受,怎么办呢?

之前从来没用过rsync,这次准备试一试,没想到效果挺好的。

rsync可以很好地进行数据压缩和打包传输,从而使得大量零散文件也不会影响到传输效率。

具体使用方法如下:

rsync -avzP 源目录 目的目录。目录在远程和本地的写法跟惯例一样的,比如本地目录用户@远程IP:远程目录

例如,如果要把本地的data传输到远程的temp下,则可以rsync -avzP ./data/ root@1.2.3.4:/home/fz/temp/

解释下几个参数的意思:

  • -a表示传输时使用archive方式,即保持所有文件的原有属性。
  • -v表示输出verbose信息,即详细输出模式。
  • -z表示使用压缩,对于压缩率不高的文件可以考虑不使用压缩。
  • -P表示--partial --progress,即断点续传和进度显示。重新执行传输命令即可断点续传。但断点续传的行为有点奇怪,有时候要等上很久那个传一半的文件才会出现或者更新!

要注意的是,rsync本身会知道还有什么文件没有同步,断点续传针对的是某个文件传到一半的情况,它只是把传到一半的文件保留下来而已。而且再传的时候会花少许时间校验一下。

另外还有个-u,可以将修改时间更新的文件跳过,但不比较两个文件是否一样。

这是在源机器上操作的,将数据传入目的机器。也可以将两个路径反过来,并且在目的机器上操作,这样就可以从源机器上rsync到本机了。

PS: 如果ssh的端口不是默认的22的话,如果还想用rsync使用ssh登录的话,需要用-e指定ssh端口,即加上-e 'ssh -p 端口'参数。

还有个要注意的地方:如果路径中有空格,要用双引号括起来,并且空格使用反斜杠转义,像这样\

本文链接:https://debug.fanzheng.org/post/download-files-using-rsync.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。