温馨提示×

ubuntu如何同步多个文件夹

小樊
36
2025-11-15 05:36:27
栏目: 智能运维

在 Ubuntu 中同步多个文件夹的常用做法


一、使用 rsync 并行同步多个目录

  • 适用场景:一次性或周期性把本机或远程的多个目录同步到目标位置,追求稳定、可控、脚本化。
  • 基本思路:对每一个“源目录→目标目录”启动一个 rsync 进程;或使用 GNU Parallel 自动并行。
  • 示例
    • 手动并行(适合目录数量不多且可分组):
      rsync -avz /src/dir1/  /dst/dir1/ &
      rsync -avz /src/dir2/  /dst/dir2/ &
      rsync -avz /src/dir3/  /dst/dir3/ &
      wait
      
    • 使用 GNU Parallel(自动按子目录并行,示例并发数 4):
      sudo apt-get install -y parallel
      find /src -mindepth 1 -maxdepth 1 -type d > dir_list.txt
      cat dir_list.txt | parallel -j 4 rsync -avz {} /dst/{/}
      
    • 远程同步(示例端口 2222):
      rsync -avz -e 'ssh -p 2222' /src/dir1/ user@host:/dst/dir1/
      
  • 常用参数说明:-a(归档,保留权限/时间/属主等)、-v(详细)、-z(压缩)、–delete(镜像删除)。如需定时执行,可配合 cronsystemd timer

二、使用 inotifywait + rsync 实现近实时同步

  • 适用场景:目录内容频繁变化,需要“文件改动即同步”的近实时效果。
  • 安装与思路:
    sudo apt-get install -y rsync inotify-tools
    
    inotifywait 监听 create、modify、delete、move 等事件,触发 rsync 同步对应目录。
  • 示例脚本(将 /data 同步到 user@host:/backup/data):
    #!/usr/bin/env bash
    SRC="/data"
    DST="user@host:/backup/data"
    RSYNC_OPTS="-avz --delete -e ssh"
    
    inotifywait -m -r -e modify,create,delete,move --format '%w%f' "$SRC" | while IFS= read -r file; do
      echo "$(date '+%F %T') change detected: $file, syncing..."
      rsync $RSYNC_OPTS "$SRC/" "$DST/"
    done
    
    建议将脚本加入系统服务并设置开机自启,确保持续运行与日志留存。

三、使用 Syncthing 在多台设备间持续同步多个文件夹

  • 适用场景:多台 Ubuntu/Windows/macOS/Android 设备之间自动、持续、加密地同步,且无需中心服务器。
  • 快速上手
    • 安装:
      sudo apt-get install -y syncthing
      # 启动一次以生成配置,然后按需在桌面环境使用 systemd 管理
      systemctl --user enable --now syncthing.service  # 或 systemctl enable --now syncthing@$USER.service
      
    • 在浏览器打开 http://localhost:8384,添加设备(通过 Device ID 互相配对),为每个需要同步的目录点击 Add Folder 选择本地路径并设置共享设备。
    • 如需远程访问管理界面,可在设置中调整监听地址(例如将 127.0.0.1:8384 改为 0.0.0.0:8384),并配置登录密码与 TLS

四、图形化工具 FreeFileSync 批量同步

  • 适用场景:偏好可视化对比与配置,支持本地/网络/SSH 等多源多目标。
  • 安装与使用
    • 从官网下载 FreeFileSync_*.tar.gz,解压至 /opt/FreeFileSync,运行即可;如需菜单启动器可按需创建 .desktop 文件。
    • 在界面中分别设置多个“源→目标”任务,选择 Two-way / Mirror / Update / Custom 等同步模式,支持过滤器、按内容比较、版本保留等高级功能。

五、方法对比与选型建议

方案 实时性 传输方式 易用性 典型场景
rsync 并行 非实时(可配合定时) 本地/SSH 批量同步、脚本化、可控性强
inotify+rsync 近实时 本地/SSH 中-高 频繁变更目录的自动同步
Syncthing 持续近实时 P2P 直连 多设备持续同步、跨平台
FreeFileSync 手动/计划任务 本地/网络/SSH 可视化对比与配置、一次性/定期批量
  • 选型提示
    • 只在本机或到服务器的批量/定时任务:优先 rsync 并行
    • 需要“改了就同步”:选 inotifywait + rsync
    • 多台设备长期自动同步:选 Syncthing
    • 喜欢图形界面与对比:选 FreeFileSync

0