上一篇
两个linux如何同步文件夹
- Linux
- 2025-07-24
- 5
在 Linux中同步两文件夹可用 rsync -avz 源目录 目标目录,或设定时任务(crontab)定期
在Linux系统中,两个文件夹之间的同步是日常运维和协作中的常见需求,根据不同的场景(如本地同步、远程同步、单向/双向同步),可以选择不同的工具和方法,以下是一份详细的实现指南:

核心工具与基础命令
rsync 命令
-
适用场景:本地或远程文件夹的单向/双向同步,支持增量传输、压缩、权限保留等。
-
基础语法:
rsync [选项] 源文件夹 目标文件夹 -
常用参数:
| 参数 | 作用 |
|—————|———————————————————————-|
| -a | 归档模式,递归传输并保留文件权限、时间、符号链接等属性 |
| -v | 显示传输过程 |
| -z | 传输时压缩数据包 |
| --delete | 删除目标文件夹中源文件夹不存在的文件(谨慎使用) |
| --progress | 显示传输进度 |
| -e "ssh" | 指定远程同步时使用SSH协议 |

-
示例:
- 本地同步:将文件夹A同步到文件夹B: rsync -av --delete /path/to/A /path/to/B
- 远程同步:将本地文件夹推送到远程服务器: rsync -av -e ssh /local/folder user@remote:/remote/folder
- 目的:简化远程同步流程,避免每次输入密码。
- 配置步骤:
- 生成SSH密钥(若未生成): ssh-keygen -t rsa -b 4096
- 将公钥复制到远程服务器: ssh-copy-id user@remote
- 验证免密登录: ssh user@remote
- 工具选择:
- Unison:专为双向同步设计,支持冲突检测与交互式合并。
- 命令行工具:unison可同步本地与远程目录,需配合SSH或RSH。
- 安装与使用: # 安装Unison(以Ubuntu为例) sudo apt install unison # 同步本地文件夹A与远程文件夹B unison -auto -batch A ssh://user@remote//path/to/B
- 冲突处理:通过-auto参数自动解决冲突,或手动编辑冲突文件。
- 适用场景:需要实时响应文件夹变化(如开发环境)。
- 实现方式: # 安装inotify-tools sudo apt install inotify-tools # 监控文件夹变化并触发rsync inotifywait -mr /path/to/source | while read event; do rsync -av --delete /path/to/source /path/to/dest done
- 优点:低延迟,适合高频更新场景。
- 缺点:依赖系统资源,需考虑性能开销。
- 配置步骤:
- 编辑Crontab: crontab -e
- 添加定时任务(例如每小时同步一次): 0 rsync -av --delete /source/folder /destination/folder >> /var/log/sync.log 2>&1
- 注意事项:
- 使用绝对路径,避免环境变量干扰。
- 重定向日志以便排查问题。
-
创建同步服务:
-
启动服务:
systemctl enable --now folder-sync.service
- 解决方法:使用-a参数(归档模式),默认会递归处理所有子目录并保留隐藏文件。
- 示例: rsync -av --exclude='.tmp' --exclude='/no_backup' /source/ /destination/
- 参数:添加--partial和--progress,支持断点续传并显示进度。
- A1:使用rsync的多目标语法, rsync -av -e ssh /local/folder user@remote:/remote/folder1 user@remote:/remote/folder2
- A2:添加-p参数(-a已包含此功能),或单独使用: rsync -av --preserve-permissions --times /source/ /destination/
SSH免密登录配置
高级同步场景与工具
双向同步与冲突解决
实时同步(inotify监控)
自动化与定时任务
Cron定时同步
Systemd服务管理
工具对比与选择建议
工具/方法 适用场景 优点 缺点 rsync 本地/远程单向同步 轻量、灵活、支持增量传输 需手动处理冲突 Unison 双向同步与冲突管理 可视化冲突解决、跨平台 配置较复杂 inotify+rsync 实时同步 低延迟、自动化 高频率操作下性能消耗大 Cron/Systemd 定时自动化同步 稳定可靠、无需人工干预 依赖系统调度精度
常见问题与解决方案
如何同步子文件夹及隐藏文件?
如何排除特定文件或目录?
中断后如何续传?
相关问答(FAQs)
Q1:如何通过SSH同步远程服务器的多个文件夹?
Q2:同步时如何保留文件的所有者和时间戳?
