Ubuntu文件系统数据同步方法
rsync是Ubuntu下最常用的文件同步工具,支持本地/远程同步,采用差分算法仅传输差异部分,节省带宽和时间。
sudo apt-get update && sudo apt-get install rsync安装。rsync -avz /源目录/ /目标目录/(-a保留文件属性,-v显示详细过程,-z压缩传输)。rsync -avz -e ssh /源目录/ 用户名@远程IP:/目标目录/。crontab -e添加如0 * * * * rsync -avz /源目录/ /目标目录/(每小时同步一次)。Unison支持双向同步,适合需要频繁修改两边文件的场景(如团队协作),能自动检测并解决文件冲突。
sudo apt-get install unison。unison /源目录/ /目标目录/(首次运行需确认同步方向,后续会自动提示冲突)。~/.unison/default.prf文件(如设置同步策略auto = true自动解决冲突),或通过unison -batch实现非交互式同步。Syncthing是开源的点对点同步工具,无需中央服务器,支持多设备实时同步,数据传输加密。
sudo apt-get install syncthing。syncthing(终端运行,或通过systemctl --user enable syncthing设置开机自启)。http://localhost:8384,注册账号并登录。FreeFileSync提供可视化界面,支持手动/自动同步,适合不熟悉命令行的用户。
wget https://freefilesync.org/download/FreeFileSync_11.28_Linux.tar.gz,tar -xvf FreeFileSync_11.28_Linux.tar.gz。FreeFileSync.desktop文件,添加Exec=/path/to/FreeFileSync %F,拷贝到/usr/share/applications/。定时同步可确保数据定期一致,避免手动操作遗漏。
crontab -e,添加如0 3 * * * rsync -avz /源目录/ /目标目录/(每天凌晨3点同步)。sudo nano /etc/systemd/system/sync.service,内容为[Unit] Description=File Sync; [Service] ExecStart=/usr/bin/rsync -avz /源目录/ /目标目录/。sudo nano /etc/systemd/system/sync.timer,内容为[Unit] Description=Run sync hourly; [Timer] OnCalendar=hourly Persistent=true; [Install] WantedBy=timers.target。sudo systemctl enable sync.timer && sudo systemctl start sync.timer。inotifywait是inotify-tools的一部分,可监控文件系统事件(如创建、修改、删除),触发同步命令实现实时同步。
sudo apt-get install inotify-tools。inotifywait -m -r -e modify,create,delete /源目录/ | while read path action file; do rsync -avz /源目录/ /目标目录/; done(-m持续监控,-r递归目录,-e指定监控事件)。