rsync文件同步遇到SSH端口非默认?教你如何轻松指定端口(附完整命令示例)

rsync文件同步遇到SSH端口非默认?教你如何轻松指定端口(附完整命令示例)

最近在折腾服务器数据迁移,你是不是也遇到过这种尴尬:用scp传大文件,传了几个小时,结果网络一抖,连接断了,进度归零,血压瞬间拉满。这种时候,rsync就成了救星,它能断点续传,只同步差异部分。但很多云服务器或者内部机器,为了安全考虑,SSH服务往往不跑在默认的22端口上,比如改成了2022、2222之类的。这时候,如果你直接把scp命令里的端口参数-P照搬到rsync上,铁定会报错“connection refused”。别慌,这不是rsync的锅,而是你打开它的方式不对。这篇文章,我就来手把手拆解,如何让rsync乖乖地通过你指定的非标准SSH端口进行高效、可靠的文件同步,附上我踩过坑后总结的完整命令和实战技巧。

1. 理解核心:为什么rsync需要特殊处理端口?

很多人第一次用rsync指定端口失败,根本原因在于没搞清楚rsyncSSH的关系。rsync本身是一个强大的文件同步工具,但它不直接处理网络连接。当我们需要跨机器同步时,rsync通常依赖一个“远程shell”来建立通道。在Linux/Unix世界里,这个默认的远程shell就是SSH

所以,当你执行 rsync source user@remote_host:dest 时,背后实际发生的是:

  1. rsync 在本地启动。
  2. 它通过系统默认的SSH配置(通常是22端口),去连接 remote_host
  3. 连接成功后,它在远程主机上也启动一个rsync进程(作为守护进程或通过SSH通道)。
  4. 两个rsync进程通过这个加密的SSH通道通信,比较文件差异并传输数据。

因此,指定端口的本质,是指定rsync所使用的SSH客户端连接远程主机时的端口。你不能直接告诉rsync“用2022端口”,而是要告诉它:“请调用SSH,并且让SSH用2022端口去连接”。

这就引出了rsync-e (或 --rsh) 参数,它的全称是“remote shell”。你可以通过这个参数,自定义用来连接远程主机的shell命令。解决非默认端口问题的钥匙,就在这里。

2. 实战:使用 -e 参数指定SSH端口

理论清楚了,上手就简单。核心命令格式如下:

rsync [选项] -e "ssh -p 端口号" 源文件/目录 用户名@远程主机:目标路径

或者从远程同步到本地:

rsync [选项] -e "ssh -p 端口号" 用户名@远程主机:源路径 本地目标路径

关键点-e "ssh -p 2022"。这里的 -p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值