当前位置: 首页 > news >正文

Linux 下 rsync 工具详解与实用指南

Linux 下 rsync 工具详解与实用指南

一、什么是 rsync?

rsync(remote sync)是 Linux/Unix 系统下常用的数据同步和备份工具。它可以高效地在本地与远程主机之间同步文件和目录,支持增量同步、断点续传、权限保留等功能,是数据迁移、备份、镜像的利器。


二、rsync 的基本语法

rsync [选项] 源路径 目标路径
  • 源路径和目标路径可以是本地路径,也可以是远程路径(格式为 user@host:/path)。
  • 常用选项如下:
选项含义
-a归档模式,等同于 -rlptgoD,常用于备份
-v显示详细过程(verbose)
-z传输时压缩数据
-P显示进度,并支持断点续传
-r递归复制子目录
-u只同步源比目标新的文件
–delete删除目标目录中源目录已删除的文件
-e指定远程 shell,如 ssh

三、常见用法示例

1. 本地目录同步

/home/user/data/ 同步到 /backup/data/

rsync -av /home/user/data/ /backup/data/

注意:源路径末尾的 / 表示同步目录内容,不加 / 表示连目录本身一起同步。

2. 本地与远程主机同步

将本地目录同步到远程服务器:

rsync -avz /home/user/data/ user@remote_host:/data/backup/

将远程服务器目录同步到本地:

rsync -avz user@remote_host:/data/backup/ /home/user/data/

3. 只同步新文件或有变动的文件

rsync -avu /home/user/data/ user@remote_host:/data/backup/

4. 显示同步进度

rsync -avzP /home/user/data/ user@remote_host:/data/backup/

5. 删除目标端多余文件(保持两端完全一致)

rsync -avz --delete /home/user/data/ user@remote_host:/data/backup/

6. 通过指定端口的 SSH 进行同步

rsync -avz -e 'ssh -p 2222' /home/user/data/ user@remote_host:/data/backup/

四、rsync 的典型应用场景

  1. 网站数据备份:定期将网站目录同步到备份服务器。
  2. 日志归档:将生产服务器日志同步到本地分析服务器。
  3. 多机文件分发:将同一份代码或数据分发到多台服务器。
  4. 断点续传大文件:大文件同步中断后可继续传输,无需重头再来。

五、rsync 的注意事项

  • 权限问题:使用 rsync 时,确保有足够的读写权限。
  • 防火墙与端口:远程同步时,目标主机需开放 SSH 端口(默认22)。
  • 安全性:建议通过 SSH 通道加密传输数据,避免明文泄露。
  • 定时任务:可结合 crontab 实现定时自动同步。

六、进阶用法

1. 排除某些文件或目录

rsync -av --exclude 'tmp/' --exclude '*.log' /home/user/data/ user@remote_host:/data/backup/

2. 只同步指定类型文件

rsync -av --include '*.jpg' --exclude '*' /home/user/photos/ user@remote_host:/photos/backup/

3. 使用 rsync 守护进程(适合大规模分发)

可配置 /etc/rsyncd.conf,通过 rsync:// 协议进行同步,适合大规模分发和镜像站点搭建。


七、常见问题与排查

  • rsync: command not found
    需先安装:sudo apt install rsyncsudo yum install rsync
  • Permission denied
    检查 SSH 密钥、账号权限、目录权限
  • 同步慢
    可加 -z 压缩,或排查网络带宽

八、总结

rsync 是 Linux 下极为强大的文件同步工具,支持本地与远程、单向与双向、增量与全量等多种同步方式。掌握 rsync,可以大大提升你的数据管理和运维效率。

建议:

  • 日常备份、迁移、分发文件时优先考虑 rsync
  • 结合脚本和定时任务,实现自动化运维

如有更复杂的 rsync 场景或脚本需求,欢迎留言交流!

相关文章:

  • 数据库 1.0.1
  • 如何使用通义灵码提高前端开发效率
  • FastDatasets新功能,让模型学会“思考”!
  • 文件操作和IO-2 使用Java操作文件
  • 如何使用VH6501进行CAN采样点测试
  • 【办公类-18-04】(Python)“验血单信息”批量生成打印(学校、班级、姓名、性别)
  • 【Linux基础操作】
  • 【MySQL成神之路】运算符总结
  • MySQL底层专题之索引数据结构和存储引擎
  • 笔记:显示实现接口如何实现,作用是什么
  • 算法打卡第二天
  • 【老马】流程引擎(Process Engine)概览
  • Linux系统中,Ctrl+C的运行过程是什么?
  • 接口测试速成指南:基础知识+工具使用全解析
  • 如何查看Python内置函数列表
  • 连接Redis数据库
  • JWT单双token实现机制记录
  • 2025系统架构师---案例题(押题)
  • Pydantic数据验证实战指南:让Python应用更健壮与智能
  • 使用引用的原因 和 运算符重载的必要性
  • 巴外交部:以军在杰宁向外交使团开火
  • 见微知沪|高校当让优秀青年脱颖而出,让科研锚定国家需求
  • 国家话剧院发讣告悼念朱媛媛:始终秉持“戏比天大”的信念
  • B站一季度净亏损收窄99%:游戏营收大增76%,AI类广告收入增近4倍
  • 加快推进科技服务业高质量发展,九部门联合发文
  • 贯彻落实《生态环境保护督察工作条例》,充分发挥生态环境保护督察利剑作用