首页 » 信息技术 »

rsync命令

2020年10月26日 / 25次阅读
Linux命令

相对于scp命令,在主机之间copy文件,rsync更好用。它可以支持断点续传,就这一点就足够吸引人了。rsync从名称来看,就是为了同步文件(档案)设计的。就像那些网盘客户端的同步功能,如果有自己的云服务器,用这个命令同步,相当惬意。

更所有其他Linux命令一样,rsync的参数也是超级多,只能举例说明,一边用一边学:

$ rsync -azP --bwlimit=64 -e 'ssh -p xxxx -l name' maixj.net:~/dbs .

这条命令的作用,sync maixj.net:~/dbs整个目录到当前路径!

rsync [OTPTIONS] source destination

-a:archive模式,这一个a,相当于好多参数的合体,-rlptgoD (no -H,-A,-X);

-z:压缩传输;

-P:大写,开启断点续传,同时显示进度,即 -p --progress;

-p:断点续传;

--progress:显示进度;

-e:指示rsync用ssh登录,给出port和username;

--bwlimit:显示带宽,默认单位是KB;

-v:verbose;

-r:recursive;

-l:copy symlinks as symlinks;

-t:preserve mtime;

--exclude=PATTERN,排除项,下面详细介绍一下这个参数:

一下是我个人测试的结果:

这个PATTERN是glob,不是re。

--exclude='cache/',排除路径中所有的cache目录;(不能写成 'cache',含义不同)

--exclude='cache',排除路径中所有cache目录,或以cache为名称的文件;

--exclude='cache*',排除cache开头的文件和目录;

--exclude='/cache',排除第1层路径中的cache(目录或文件);

--exclude='*/cache',排除第2层路径以及后面的路径中的所有cache(目录或文件)

--exclude='cache/*',排除cache目录中的所有文件,但是保留cache这个目录;

注意路径匹配的范围,从source开始:

rsync在copy文件的时候,有一个行为跟cp和scp不一样,源写成 source 和 source/ 表示的含义是不一样的;

rsync -r source d    # 得到的结果是 d 中 包含 整个source目录, d/source/...

rsync -r source/ d   # 得到的结果是d中包含全部source的内容,d/...... ,(cp 和 scp只有这一种情况!)

因此写成source和source/,对pattern的解释是不同的。

写成 source,pattern的匹配从source开始;

写成 source/,pattern的匹配从 /..... 开始;

要精确控制 --exclude 的内容,就要好好体会这些规则,并做好测试。

命令行中可以同时存在多个--exclude参数,即同时排除多个项目。

本文链接:https://www.maixj.net/ict/rsync-24090

留言区

《rsync命令》有3条留言

  • 麦新杰

    rsync对变化的文件,直接update。 []

  • 麦新杰

    在同步远端文件时,如果远端删除了某些文件,本地不会同步删除! []

  • 麦新杰

    rsync -aztP --bwlimit=128 --exclude='*/cache' -e 'ssh -l your_name -p 12345' pynote.net:~/pynote.net . []


前一篇:
后一篇:
-->只要几分钟回答问卷,就能轻松赚现金!

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

go to top