Linux如何配置Rsync远程同步_Linux文件增量备份与SSH传输【步骤】

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则排除整个目录及其子项