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"