温馨提示×

linux怎样同步两个目录

小樊
56
2026-09-01 15:25:30
栏目: 智能运维

在 Linux 下“同步两个目录”有多种方式,取决于你是一次性同步还是实时/定时同步,以及是否跨机器。下面按常见场景给你总结。


一、最常用:rsync(本地或远程都行)

1️⃣ 本地目录同步(单向)

rsync -av /src/ /dst/

说明:

  • -a:归档模式(保留权限、时间等)
  • -v:显示过程
  • 注意 /src/ 末尾斜杠:表示同步目录内容,不是目录本身

✅ 只同步有变化的部分(增量)


2️⃣ 删除目标中多余文件(完全镜像)

rsync -av --delete /src/ /dst/

⚠️ 危险:目标比源多出的文件会被删


3️⃣ 两台机器同步

rsync -av /local/ user@remote:/remote/path/

或反向:

rsync -av user@remote:/remote/path/ /local/

二、双向同步(两个目录互相更新)

方法 1:rsync + cron(半自动)

# 每 5 分钟同步一次
*/5 * * * * rsync -a --delete /a/ /b/
*/5 * * * * rsync -a --delete /b/ /a/

⚠️ 不适合频繁修改同一文件


方法 2:unison(推荐双向)

unison /dir1 /dir2

特点:

  • 真正双向
  • 能检测冲突
  • 适合笔记本 / 服务器

安装:

sudo apt install unison   # Debian/Ubuntu

三、实时同步(文件一变就同步)

1️⃣ inotify + rsync

inotifywait -m -r -e modify,create,delete /src | \
while read; do
  rsync -a /src/ /dst/
done

2️⃣ lsyncd(生产推荐)

sudo apt install lsyncd

配置示例:

sync {
  default.rsync,
  source = "/src",
  target = "/dst"
}

四、网络文件系统(像本地一样)

  • NFS:Linux ↔ Linux
  • SSHFS:挂载远程目录
sshfs user@host:/path /mnt

五、快速对比总结

需求 推荐
一次性备份 rsync
定时同步 rsync + cron
双向同步 unison
实时同步 lsyncd
远程挂载 sshfs / nfs

如果你能告诉我:

  • 本地还是远程
  • 单向还是双向
  • 是否要 实时

我可以直接给你一条最合适的命令或配置。

0