在Linux中,使用rsync同步数据时,假如采用的是ssh方式,并且目标机器的sshd端端并不是默认的22端口,该如何做?
在使用rsync
通过SSH进行数据同步时,如果目标机器的SSH服务没有运行在默认的22端口上,你需要指定SSH连接应该使用的端口。这可以通过-e
选项来实现,后面跟上ssh
命令和-p
参数来指定端口号。
以下是使用非默认端口的SSH进行rsync
同步的基本命令格式:
rsync -avz -e "ssh -p <port>" <source> <user>@<host>:<destination>
这里的参数解释如下:
-a
:代表--archive
,它使得rsync
同步时保持原有文件的属性,如权限、时间戳等。-v
:代表--verbose
,它使得rsync
在同步过程中提供详细的输出信息。-z
:代表--compress
,它在传输过程中压缩数据,以减少传输的数据量。-e
:允许你指定一个命令来创建到远程主机的安全连接。在这个例子中,我们使用ssh
。-p <port>
:指定SSH连接应该使用的端口号。<source>
:源文件或目录的路径。<user>
:目标机器上的用户名。<host>
:目标机器的主机名或IP地址。<destination>
:目标文件或目录的路径。
例如,如果目标机器的SSH服务运行在端口2222
上,你可以使用以下命令:
rsync -avz -e "ssh -p 2222" /path/to/source/ user@example.com:/path/to/destination/
在这个例子中,/path/to/source/
是本地要同步的源目录,user@example.com
是目标机器的用户名和地址,/path/to/destination/
是目标目录,而-p 2222
指定了使用端口2222
。
此外,如果你经常需要使用非默认端口进行同步,可以将这个端口号配置在~/.ssh/config
文件中,这样你就不需要在每次使用rsync
时都指定端口号。配置文件示例如下:
Host myserver HostName example.com User myuser Port 2222
在这个配置中,Host myserver
是一个别名,你可以在rsync
命令中使用它来代替完整的主机名和端口信息:
rsync -avz -e "ssh -p 2222" /path/to/source/ myserver:/path/to/destination/
综上所述,你就不需要在每次命令中都指定端口号,因为SSH客户端会从配置文件中读取端口信息。
综上所述,请确保在使用这些命令之前,你已经正确配置了SSH密钥或密码认证,以便rsync
能够无障碍地通过SSH连接到远程主机。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)