如何在Linux上设置文件同步

来源:AI技术网作者:广州GEO公司头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何在Linux上设置文件同步》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上设置文件同步》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统中,文件同步是数据备份、多节点数据一致性维护的核心操作,不同的同步场景可以选择不同的工具和方法,下面介绍几种常用的实现方案。

一、使用sync命令进行基础同步

sync命令是Linux系统自带的强制将内存中的文件系统缓冲区数据写入磁盘的工具,适合简单的本地数据落盘同步场景,本身不具备目录对比同步的能力,通常配合其他操作使用。

如果需要将当前所有未写入磁盘的缓冲数据同步到磁盘,直接执行以下命令即可:

# 强制将所有内存中的文件系统缓冲数据写入磁盘
sync

该命令没有额外参数,执行后会阻塞直到所有数据写入完成,适合在系统关机、卸载磁盘前执行,避免数据丢失。

二、使用rsync工具实现灵活同步

rsync是Linux下最常用的文件同步工具,支持本地目录同步、远程服务器同步,具备增量同步、权限保留、排除指定文件等高级功能,大部分Linux发行版默认已经安装该工具,如果没有安装可以通过包管理器安装。

1. 本地目录同步

将源目录的所有内容同步到目标目录,保留文件权限、时间戳等属性,执行以下命令:

# 将 /data/source 目录内容同步到 /data/backup 目录
# -a 归档模式,保留权限、时间戳等属性
# -v 显示同步过程详情
# -z 传输时压缩数据
rsync -avz /data/source/ /data/backup/

注意源目录后面的斜杠,如果带斜杠表示同步目录内的内容,不带斜杠会同步整个目录本身。

2. 远程服务器同步

如果需要将本地文件同步到远程服务器,或者从远程服务器拉取文件,rsync支持通过SSH协议传输,示例如下:

# 将本地 /data/source 目录同步到远程服务器 192.168.0.1 的 /data/backup 目录
rsync -avz -e ssh /data/source/ root@192.168.0.1:/data/backup/

# 从远程服务器拉取文件到本地
rsync -avz -e ssh root@192.168.0.1:/data/backup/ /data/source/

3. 常用参数说明

参数作用说明
--delete删除目标目录中源目录不存在的文件,保证目标目录和源目录完全一致
--exclude排除指定文件或目录,例如 --exclude="*.log" 排除所有日志文件
-n模拟同步过程,不实际执行操作,用于测试同步命令是否符合预期

三、结合inotify-tools实现实时同步

rsync默认需要手动触发或者配合定时任务执行,如果需要实现文件变化后自动同步,可以结合inotify-tools监听文件系统事件,触发rsync同步操作。

1. 安装inotify-tools

CentOS系统安装命令:

yum install -y inotify-tools

Ubuntu系统安装命令:

apt-get install -y inotify-tools

2. 编写实时同步脚本

创建同步脚本 /usr/local/bin/real_time_sync.sh,内容如下:

#!/bin/bash
# 源目录
SRC_DIR="/data/source/"
# 目标目录
DEST_DIR="/data/backup/"
# 远程同步地址,本地同步可以注释该部分,直接执行本地rsync
REMOTE_USER="root"
REMOTE_IP="192.168.0.1"
REMOTE_DIR="/data/backup/"

# 监听源目录的创建、修改、删除、移动事件
inotifywait -mrq --format '%Xe %w%f' -e create,modify,delete,move $SRC_DIR | while read event file
do
    # 本地同步
    rsync -avz $SRC_DIR $DEST_DIR
    # 远程同步,如果需要远程同步取消下面注释
    # rsync -avz -e ssh $SRC_DIR $REMOTE_USER@$REMOTE_IP:$REMOTE_DIR
    echo "$(date '+%Y-%m-%d %H:%M:%S') 同步完成,事件:$event,文件:$file"
done

给脚本添加执行权限:

chmod +x /usr/local/bin/real_time_sync.sh

3. 后台运行脚本

使用nohup将脚本放到后台运行,避免终端关闭后脚本停止:

nohup /usr/local/bin/real_time_sync.sh > /var/log/real_time_sync.log 2>&1 &

如果需要开机自动启动,可以将启动命令添加到/etc/rc.d/rc.local文件中,记得给rc.local添加执行权限。

四、同步注意事项

  • 执行同步操作前,建议先使用rsync的-n参数模拟同步过程,确认同步范围符合预期,避免误删目标目录文件。
  • 远程同步如果使用密码登录,建议配置SSH免密登录,避免脚本执行时需要手动输入密码。
  • 实时同步场景下,如果文件变化频率过高,可能会触发多次同步,可以适当添加同步间隔时间,避免资源占用过高。
  • 同步重要数据前,建议先对目标目录做快照备份,防止同步异常导致数据丢失。

rsyncLinux文件同步inotify-toolssync命令修改时间:2026-06-30 16:00:59

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。