2021/05/24

rsync


rsync (remote sync) 远程同步。

rsync 与 scp 的最大区别是rsync会检查发送方和接收方已有的文件,仅传输有变动的部分(默认规则是文件大小或修改时间有变动)。

rsync [可选参数] 原文件 目标文件

常见参数说明

-r          递归复制整个目录。
-a          比-r更详尽,除了递归同步以外,还同步元信息(比如修改时间、权限等)。
-v          将执行结果输出到终端。
-n          模拟执行,但不实际执行。
--delete    将目标目录成为源目录的镜像副本,即删除只存在于目标目录、不存在于源目录的文件。
--exclude   排除某些文件或目录。
--include   参数用来指定必须同步的文件模式,往往与 --exclude 结合使用。
-e          指定连接目标服务器使用协议
-z          同步时压缩数据。
-P          展示传输进度,并允许恢复中断的传输。是 --progress 和 --partial 这两个参数的结合。

将本地文件复制到远程
rsync demo.txt root@192.168.40.12:/tmp/

将本地文件夹复制到远程
rsync -vr demo/ root@192.168.40.12:/tmp/demo

将远程文件复制到本地
rsync root@192.168.40.12:/tmp/demo.txt ~/

将远程文件夹复制到本地
rsync -vr root@192.168.40.12:/tmp/demo /tmp

将本地 demo 目录 复制到远程,远程的端口为 23, 用户为 test, 不能使用普通密码 需要使用秘钥传输
rsync -rvzP -e 'ssh -p 23 -i ~/.ssh/test' ~/demo test@192.168.40.12:~/

免密执行,在A服务器拉取B服务器数据

rsync root@B:/tmp/demo.txt ~/

在A服务器执行 ssh-keygen -t rsa 生成共秘钥,接着将A服务器的公钥放入B服务器中 scp ~/.ssh/id_rsa.pub root@B:~/.ssh/authorized_keys ,接下来在A服务器执行scp拉取数据即可不用输入密码

更多指令可参考 阮一峰写的rsync用法

ssh -p 22 -i ~/.ssh/nphadoop.pub hadoop@124.71.87.240 "mkdir -p demo"