rsync使用非默认ssh端口登录的方法

by Web全栈工程师 on 2016 年 11 月 06 日

rsync有两种常用的认证方式,一种为rsync-daemon方式,另外一种则是ssh。

在一些场合,使用rsync-daemon方式会比较缺乏灵活性,ssh方式则成为首选。但是今天实际操作的时候发现当远端服务器的ssh默认端口被修改后,rsync时找不到一个合适的方法来输入对方ssh服务端口号。

在查看官方文档后,找到一种方法,即使用-e参数。

-e参数的作用是可以使用户自由选择shell程序来连接远端服务器,当然也可以设置成使用默认的ssh来连接,但是这样我们就可以加入ssh的参数了。

具体语句写法如下:

rsync -azv -e 'ssh -p 2222' USER@HOST:/SRC [DEST]

从远处主机拉数据到本地

rsync -avzP --delete root@{remoteHost}:{remoteDir} {localDir}	

参数说明:

  • -a 参数,相当于-rlptgoD(-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件);
  • -z 传输时压缩;
  • -P 传输进度;
  • -v 传输时的进度等信息;

把本地数据推送给远处服务器

	rsync -avzP --delete {localDir} root@{remoteHost}:{remoteDir}

常见问题及其解决办法

问题:出现“rsync: mkstemp failed: Operation not permitted”提示,
产生的原因:rsync会创建临时文件,进程必须拥有父目录的写权限,
解决办法:使用–inplace参数

Comments on this entry are closed.

Previous post:

Next post: