插件窝 干货文章 如何在Linux上配置数据同步

如何在Linux上配置数据同步

同步 lsyncd 配置 rsync 471    来源:    2025-04-15

Linux数据同步配置指南

在Linux系统上配置数据同步有多种方法,下面我将介绍几种常用的同步方案及其配置步骤。

1. rsync - 文件级同步工具

rsync是最常用的Linux文件同步工具,支持增量同步和远程同步。

基本安装与使用

# 安装rsync
sudo apt-get install rsync    # Debian/Ubuntu
sudo yum install rsync       # CentOS/RHEL

# 本地同步
rsync -avz /source/directory/ /destination/directory/

# 远程同步(推送到远程)
rsync -avz -e ssh /local/path/ user@remotehost:/remote/path/

# 远程同步(从远程拉取)
rsync -avz -e ssh user@remotehost:/remote/path/ /local/path/

常用参数

  • -a: 归档模式,保留权限、时间戳等
  • -v: 详细输出
  • -z: 压缩传输
  • --delete: 删除目标中源不存在的文件
  • --exclude: 排除特定文件/目录

定时同步(crontab)

# 编辑crontab
crontab -e

# 添加每天凌晨3点同步的条目
0 3 * * * /usr/bin/rsync -avz /source/ user@remote:/destination/

2. lsyncd - 实时同步工具

lsyncd使用inotify机制监控文件系统变化并实时同步。

安装与配置

# 安装lsyncd
sudo apt-get install lsyncd    # Debian/Ubuntu
sudo yum install lsyncd       # CentOS/RHEL

# 配置文件示例(/etc/lsyncd.conf)
settings {
    logfile = "/var/log/lsyncd.log",
    statusFile = "/var/log/lsyncd-status.log",
    statusInterval = 20
}

sync {
    default.rsync,
    source = "/source/path",
    target = "user@remotehost:/target/path",
    rsync = {
        binary = "/usr/bin/rsync",
        archive = true,
        compress = true,
        verbose = true,
        rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
    }
}

# 启动服务
sudo systemctl start lsyncd
sudo systemctl enable lsyncd

3. DRBD - 块设备级同步

DRBD(Distributed Replicated Block Device)提供块设备级别的实时同步。

安装与配置

# 安装DRBD
sudo apt-get install drbd-utils    # Debian/Ubuntu
sudo yum install drbd kmod-drbd   # CentOS/RHEL

# 配置示例(/etc/drbd.d/drbd0.res)
resource drbd0 {
    protocol C;
    disk {
        on-io-error detach;
    }
    on node1 {
        device /dev/drbd0;
        disk /dev/sdb1;
        address 192.168.1.1:7788;
        meta-disk internal;
    }
    on node2 {
        device /dev/drbd0;
        disk /dev/sdb1;
        address 192.168.1.2:7788;
        meta-disk internal;
    }
}

# 初始化资源
sudo drbdadm create-md drbd0
sudo drbdadm up drbd0

# 在主节点上设置为primary
sudo drbdadm primary --force drbd0

4. 使用云存储同步

rclone - 支持多种云存储的同步工具

# 安装rclone
curl https://rclone.org/install.sh | sudo bash

# 配置云存储
rclone config

# 同步到云存储
rclone sync /local/path remote:path

5. 数据库同步

MySQL主从复制

-- 主服务器配置(my.cnf)
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = db_name

-- 创建复制用户
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

-- 从服务器配置
CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=  107;
START SLAVE;

安全注意事项

  1. 使用SSH密钥认证而非密码
  2. 限制同步用户的权限
  3. 考虑使用VPN或加密通道传输敏感数据
  4. 定期验证同步数据的完整性
  5. 设置适当的防火墙规则

监控与维护

  1. 设置日志轮转
  2. 监控同步状态
  3. 定期测试恢复流程
  4. 考虑使用校验和验证数据一致性

选择哪种同步方案取决于您的具体需求: - 文件级同步:rsync或lsyncd - 块设备级同步:DRBD - 实时性要求高:lsyncd或DRBD - 云存储集成:rclone - 数据库同步:原生复制功能

需要更详细的特定方案配置或有其他问题,请随时询问。