在Ubuntu系统中,触发数据同步的方式可分为手动触发、实时触发和定时触发三类,以下是具体实现方法:
手动触发适用于临时需要同步数据的场景,常用工具为rsync(命令行)和FreeFileSync(图形界面)。
rsync是Ubuntu自带的增量同步工具,仅传输变化的文件部分,节省带宽和时间。基本命令格式为:rsync -avz /源目录/ /目标目录/ # 本地同步(保留文件属性、压缩传输)
rsync -avz -e "ssh -p 端口号" /源目录/ 用户名@远程IP:/目标目录/ # 远程同步(需配置SSH免密登录)
参数说明:-a(归档模式,保留权限、时间等属性)、-v(显示详细过程)、-z(压缩传输)、-e(指定SSH命令)。FreeFileSync.desktop文件并复制到/usr/share/applications/(创建桌面快捷方式);实时触发适用于需要立即同步的场景(如代码开发、文档协作),常用组合为inotify-tools+rsync或lsyncd。
inotify-tools用于监控文件系统事件(创建、删除、修改),rsync负责同步变化。步骤:
sudo apt-get install inotify-tools rsync;sync_data.sh,内容如下:#!/bin/bash
SOURCE_DIR="/path/to/source" # 替换为实际源目录
TARGET_DIR="/path/to/target" # 替换为实际目标目录
inotifywait -m -r -e create,delete,modify --format '%w%f' "$SOURCE_DIR" | while read FILE
do
rsync -avz --delete "$SOURCE_DIR/" "$TARGET_DIR" # --delete删除目标目录中源目录不存在的文件
done
chmod +x sync_data.sh;./sync_data.sh(后台运行可使用nohup ./sync_data.sh &)。lsyncd是基于rsync的轻量级实时同步工具,配置更简单。步骤:
sudo apt-get install lsyncd;/etc/lsyncd.conf,添加以下内容:settings {
logfile = "/var/log/lsyncd.log", # 日志文件路径
statusFile = "/var/log/lsyncd.status" # 状态文件路径
}
sync {
default.rsync,
source = "/path/to/source", # 源目录
target = "/path/to/target", # 目标目录
rsync = {
archive = true, # 归档模式
compress = true, # 压缩传输
delete = true # 删除目标目录中多余的文件
}
}
sudo systemctl start lsyncd(开机自启:sudo systemctl enable lsyncd)。定时触发适用于需要定期备份的场景(如每天凌晨同步),常用工具为cron(系统定时任务)。
crontab -e;0 2 * * * rsync -avz --delete /path/to/source/ /path/to/target/ # 本地同步
0 2 * * * rsync -avz -e "ssh -p 端口号" /path/to/source/ 用户名@远程IP:/path/to/target/ # 远程同步
tail -f /var/log/syslog查看执行日志)。以上方法覆盖了Ubuntu下不同场景的数据同步需求,可根据实际情况选择合适的方式(如实时性要求高用inotify-tools+rsync,定期备份用cron,图形界面操作用FreeFileSync)。