Rsync结合SSH可实现Linux间安全增量备份与传输,需依次确认服务状态、配置SSH免密登录、编写同步命令、设置定时任务及排除无关文件。

如果您需要在Linux系统之间实现文件的增量备份与安全传输,则Rsync结合SSH是常用且可靠的方式。以下是完成Rsync远程同步配置的具体步骤:
一、确认Rsync与SSH服务状态
Rsync依赖于SSH协议进行加密传输,因此需确保本地和远程主机均安装Rsync并启用SSH服务。若未安装,将无法执行同步命令;若SSH服务未运行,连接会被拒绝。
1、在本地终端执行rsync --version检查Rsync是否已安装。
2、运行ssh -V验证SSH客户端可用性。
3、登录远程主机,执行systemctl is-active sshd确认SSHD服务处于active状态。
4、如SSH服务未运行,执行sudo systemctl start sshd启动服务。
二、生成并分发SSH密钥对
免密码登录可避免每次同步时手动输入密码,提升自动化能力。通过SSH密钥认证替代口令认证,既保障安全性又满足脚本调用需求。
1、在本地主机执行ssh-keygen -t ed25519 -C "rsync-automation"生成密钥对,默认保存于~/.ssh/id_ed25519。
2、执行ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote_host_ip将公钥复制至远程主机的~/.ssh/authorized_keys中。
3、测试免密登录:ssh user@remote_host_ip ls /tmp,若成功列出目录内容则配置有效。
三、编写基础Rsync同步命令
Rsync默认采用增量传输机制,仅同步变动部分,显著减少带宽占用与执行时间。使用-a(归档模式)保留权限、时间戳、符号链接等属性,-z启用压缩,-e指定SSH通道。
1、执行本地目录同步至远程主机的命令:rsync -avz -e "ssh -p 22" /path/to/local/ user@remote_host_ip:/path/to/remote/。
2、执行远程目录拉取至本地的命令:rsync -avz -e "ssh -p 22" user@remote_host_ip:/path/to/remote/ /path/to/local/。
3、添加--delete参数可在目标端删除源端已不存在的文件,保持完全一致;但务必先用--dry-run参数测试效果。
四、配置定时自动同步任务
借助crontab可设定周期性执行Rsync命令,实现无人值守的增量备份。所有计划任务均以当前用户权限运行,需确保该用户具备对应路径的读写权限及SSH免密访问能力。
1、编辑当前用户crontab:crontab -e。
2、添加一行示例任务(每日凌晨2点同步):0 2 * * * rsync -avz -e "ssh -p 22" /data/backup/ user@192.168.1.100:/backup/ >> /var/log/rsync_daily.log 2>&1。
3、保存退出后,系统自动加载新任务;可通过crontab -l查看已设置项。
4、确保日志目录/var/log/对该用户可写,否则日志记录失败。
五、排除特定文件或目录
同步过程中常需跳过临时文件、缓存目录或敏感配置,避免冗余传输与潜在安全风险。Rsync提供--exclude与--exclude-from两种方式实现灵活过滤。
1、单次命令中排除多个路径:rsync -avz --exclude="*.tmp" --exclude="/cache/" -e "ssh -p 22" /src/ user@host:/dst/。
2、创建排除规则文件/etc/rsync_exclude.list,每行一个模式,例如:*~、.git/、/logs/。
3、调用规则文件执行同步:rsync -avz --exclude-from="/etc/rsync_exclude.list" -e "ssh -p 22" /src/ user@host:/dst/。
4、排除路径末尾斜杠会影响匹配行为:/dir/仅排除目录内容,/dir则排除整个目录及其子项。










