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=” 不确定这个”=” 要还是不要,别的网站上好像都不用,只是空格