在 Linux 中,“同步文件目录”通常有以下几种常见场景和需求。下面我按使用场景 + 命令示例来说明,你可以按需选择。
rsync(最推荐)rsync -av --delete /source/ /dest/
参数说明:
-a:归档模式(保留权限、时间等)-v:显示过程--delete:删除目标中源没有的文件(保持完全一致)⚠️ 注意:/source/ 结尾的 / 很重要,表示同步目录内容。
cp(简单但不够智能)cp -a /source/. /dest/
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/
scp(不适合频繁同步)scp -r /local/path user@remote:/remote/path
rsync + inotify(实时监听)适合小规模实时同步。
inotifywait -m -r -e modify,create,delete /source | while read; do
rsync -avz /source/ user@remote:/dest/
done
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"
}
unisonunison /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 |
如果你能告诉我:
我可以给你一套更精确的配置方案。