33 rsync 实战训练

33 rsync 实战训练

1
2
http://www.ruanyifeng.com/blog/2020/08/rsync.html
http://blog.chinaunix.net/uid-10362953-id-2961174.html

1. -r 参数

1-1. 源文件source 同步到 目标文件destination ,递归同步

1
rsync -r source destination

1-2. 如果有多个文件(source1,source2)或目录需要同步

1
rsync -r source1 source2 destination

2. -a 参数

2-1. -a参数可以替代-r , 而且-a 更常用

1
rsync -a source destination

目标目录destination如果不存在,rsync 会自动创建。
执行上面的命令后,源目录source被完整地复制到了目标目录destination下面,即形成了destination/source的目录结构

2-2. 如果只想同步源目录source里面的内容到目标目录destination,则需要在源目录后面加上斜杠

1
rsync -a source/ destination

3. -n 参数

3-1. 如果不确定 rsync 执行后会产生什么结果,可以先用-n或–dry-run参数模拟执行的结果

1
rsync -an source/ destination

4. -v 参数

4-1. 则是将结果输出到终端,这样就可以看到哪些内容会被同步

1
rsync -av source/ destination

5. -delete 参数

5-1. 要使得目标目录成为源目录的镜像副本,则必须使用–delete参数

1
rsync -av --delete source/ destination

6. -exclude 参数

有时,我们希望同步时排除某些文件或目录,这时可以用–exclude参数指定排除模式

6-1. 排除所有.txt的文件

1
rsync -av --exclude='*.txt' source/ destination

6-2. 如果要排除某个目录(dir1)里面的所有文件,但不希望排除目录本身

1
rsync -av --exclude='dir1/*' source/ destination

6-3. 多个排除模式(file1.txt,dir1/*)

1
rsync -av --exclude='file1.txt' --exclude='dir1/*' source/ destination

6-4. 多个排除模式也可以利用 Bash 的大扩号的扩展功能,只用一个–exclude参数

1
rsync -av --exclude={'file1.txt','dir1/*'} source/ destination

6-5. 如果排除模式很多,可以将它们写入一个文件(exclude-file.txt),每个模式一行,然后用–exclude-from参数指定这个文件

1
rsync -av --exclude-from='exclude-file.txt' source/ destination

6-6. 只复制目录结构,忽略掉文件

1
rsync -av --include='*/' --exclude='*' source/ destination

7. SSH 协议

7-1. 它可以将本地内容,同步到远程服务器username@remote_host

1
rsync -av source/ username@remote_host:destination

7-2. 也可以将远程内容同步到本地

1
rsync -av username@remote_host:source/ destination

8. -e 参数

8-1. 指定 SSH 使用2234端口

1
2
rsync -av -e='ssh -p 2234' source/ username@remote_host:destination          //7-1. 这条改
rsync -av -e='ssh -p 2234' username@remote_host:source/ destination          //7-2. 这条改

9-1. 增量备份

–link-dest参数用来指定同步时的基准目录
/compare/path 基准目录
/source/path 源目录
/target/path 目标目录

那些没变动的文件则会生成硬链接。这个命令的第一次备份时是全量备份,后面就都是增量备份了

1
rsync -av --delete --link-dest /compare/path /source/path /target/path

10. 指定端口8081

1
rsync -av --port=8081 source/ destination                 //4-1. 这条改

11. 限速100kb/s同步数据

1
rsync -av --bwlimit=100 source/ destination                 //4-1. 这条改
备注:
“-e=” 不确定这个”=” 要还是不要,别的网站上好像都不用,只是空格

Leave a Reply

Your email address will not be published. Required fields are marked *