温馨提示×

如何同步linux文件目录

小樊
77
2026-10-04 13:52:49
栏目: 智能运维

在 Linux 中,“同步文件目录”通常有以下几种常见场景和需求。下面我按使用场景 + 命令示例来说明,你可以按需选择。


一、本地目录之间同步(同一台机器)

1. 使用 rsync(最推荐)

rsync -av --delete /source/ /dest/

参数说明:

  • -a:归档模式(保留权限、时间等)
  • -v:显示过程
  • --delete:删除目标中源没有的文件(保持完全一致)

⚠️ 注意:/source/ 结尾的 / 很重要,表示同步目录内容。


2. 使用 cp(简单但不够智能)

cp -a /source/. /dest/
  • 适合一次性复制
  • 不会自动删除多余文件

二、两台 Linux 服务器之间同步

1. 使用 rsync + ssh(最常用)

rsync -avz --delete -e ssh user@remote:/path/ /local/path/

示例(从远程拉取):

rsync -avz user@192.168.1.10:/data/ /backup/data/

推送:

rsync -avz /local/data/ user@192.168.1.10:/data/

2. 使用 scp(不适合频繁同步)

scp -r /local/path user@remote:/remote/path

三、实时同步(文件变动自动同步)

1. rsync + inotify(实时监听)

适合小规模实时同步。

inotifywait -m -r -e modify,create,delete /source | while read; do
  rsync -avz /source/ user@remote:/dest/
done

2. lsyncd(生产环境推荐)

# 安装
yum install lsyncd   # 或 apt install lsyncd

# 配置示例
settings {
  logfile = "/var/log/lsyncd.log"
}
sync {
  default.rsyncssh,
  source = "/data",
  host = "192.168.1.10",
  targetdir = "/data"
}

四、双向同步(两台机器互相同步)

使用 unison

unison /local/path ssh://user@remote//remote/path

适合:

  • 两台服务器内容可能各自变化
  • 不推荐高并发场景

五、定期自动同步(定时任务)

crontab -e

示例(每天凌晨 2 点):

0 2 * * * rsync -avz /data/ user@remote:/data/

六、常见同步方案选择建议

需求 推荐方案
本地备份 rsync
远程备份 rsync + ssh
实时同步 lsyncd
双向同步 unison
简单复制 cp / scp

如果你能告诉我:

  • 是本地还是远程
  • 是否需要实时
  • 是否是服务器生产环境

我可以给你一套更精确的配置方案。

0 踩