rsync有两种常用的认证方式,一种为rsync-daemon方式,另外一种则是ssh。
在一些场合,使用rsync-daemon方式会比较缺乏灵活性,ssh方式则成为首选。但是今天实际操作的时候发现当远端服务器的ssh默认端口被修改后,rsync时找不到一个合适的方法来输入对方ssh服务端口号。
在查看官方文档后,找到一种方法,即使用-e参数。
-e参数的作用是可以使用户自由选择欲使用的shell程序来连接远端服务器,当然也可以设置成使用默认的ssh来连接,但是这样我们就可以加入ssh的参数了。
假如对方机器的sshd端口改成1234 那么再次使用rsync的传输文件时候如下使用
rsync -e 'ssh -p 1234' username@hostname:SourceFile DestFile
用法如下,下面由于ssh端口是默认的22的话,可以吧-e " ssh -p 22"去掉
[root@linux-node1 tools]# rsync -avz -e " ssh -p 22" * root@172.2.6.11:/tools/
root@172.2.6.11's password:
sending incremental file list
sent 145 bytes received 12 bytes 44.86 bytes/sec
total size is 228404490 speedup is 1454805.67
[root@linux-node1 tools]# touch 1
[root@linux-node1 tools]# rsync -avz -e " ssh -p 22" * root@172.2.6.11:/tools/
root@172.2.6.11's password:
sending incremental file list
1
sent 191 bytes received 31 bytes 88.80 bytes/sec
total size is 228404490 speedup is 1028849.05
[root@linux-node1 tools]#
rsync命令可以当成是高级版的cp+scp
它可以跨机器复制(同步)文件,下面的参数自行百度即可。
# 执行“推”复制同步
[osmond@soho ~]$ rsync -avz --delete /var/www root@192.168.0.101:/var/www
# 执行“拉”复制同步
[osmond@cnetos5 ~]$ rsync -avz --delete root@192.168.0.55:/var/www /var/www
另外注意下,使用rsync命令的时候,自己的主机和对方的主机都需要安装它,否则会报错
[root@linux-node1 tools]# rsync -avz -e " ssh -p 22" * root@172.2.6.11:/tools/
root@172.2.6.11's password:
bash: rsync: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(600) [sender=3.0.6]
新服务器(目标服务器)执行命令 yum install rsync -y 问题解决
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx