Linux中rsync远程同步最常用安全方式是SSH通道,无需守护进程;需满足本地有rsync、远程开启SSH且可登录;支持push(本地→远程)和pull(远程→本地)模式,常用选项包括-avz、--delete、--exclude及-e指定端口等。

Linux 中通过 rsync 远程同步文件到服务器,最常用、最安全的方式是走 SSH 通道,无需额外配置守护进程,也不依赖 rsync 服务端是否运行。
确认基础条件
确保以下几点已满足:
- 本地机器已安装 rsync(多数发行版默认自带,用 rsync --version 验证)
- 目标服务器已开启 SSH 服务(默认端口 22),且你拥有可登录的用户权限
- 本地能通过 SSH 连通目标服务器(例如 ssh user@host 可成功登录)
推送文件到远程服务器(Push 模式)
这是最常见场景:把本地文件/目录传到远端。
基本命令格式:
rsync -avz /本地/路径/ user@远程主机:/远程/路径/
- -a:归档模式,保留权限、所有者、时间戳、软链接等
- -v:显示详细过程,方便排查
- -z:传输中启用压缩,节省带宽(尤其适合文本类文件)
- 源路径末尾加 / 表示“同步内容”,不加则同步整个目录名
示例:
将本地 /home/me/project/ 同步到远程服务器 192.168.1.100 的 /var/www/html/ 目录下:
rsync -avz /home/me/project/ admin@192.168.1.100:/var/www/html/
从远程拉取文件(Pull 模式)
若需把远程服务器上的文件复制到本地,只需调换源和目标位置:
rsync -avz user@远程主机:/远程/路径/ /本地/路径/
例如从远程下载备份包:
rsync -avz backup@server.example.com:/backup/site.tar.gz ./
进阶实用技巧
同步时加入这些选项可提升可靠性与控制力:
- --delete:删除目标中源里不存在的文件(使目标严格等于源)
- --exclude='*.log':跳过指定类型文件(支持通配符)
- -e "ssh -p 2222":指定非标准 SSH 端口(如 2222)
- --dry-run:模拟执行,只显示将要操作的内容,不真正传输
例如带排除和删除的完整命令:
rsync -avz --delete --exclude='cache/' --exclude='*.tmp' -e "ssh -p 2222" /data/ user@host:/backup/data/
注意路径斜杠和权限问题
rsync 对路径末尾的 / 敏感:
- /src/ → 同步目录内容(推荐)
- /src → 同步 src 目录本身(即目标会多一层 src 文件夹)
远程路径写法需符合目标系统权限。若目标目录属 root,而你用普通用户登录,又没 sudo 权限,则无法写入。此时可考虑:
- 用有写权限的用户登录(如部署专用账号)
- 提前在目标端创建好目录并赋权:ssh user@host "sudo mkdir -p /var/www && sudo chown user:user /var/www"


















