使用lsyncd同步目录

使用lsyncd同步目录

在本地对两个目录进行同步

安装依赖

sudo apt update
sudo apt install lsyncd rsync -y

创建目录与日志文件

手动创建日志文件并赋予权限,防止程序因无法写入日志而崩溃

# 1. 创建配置与日志目录
sudo mkdir -p /etc/lsyncd
sudo mkdir -p /var/log/lsyncd

# 2. 手动创建日志文件
sudo touch /var/log/lsyncd/lsyncd.log
sudo touch /var/log/lsyncd/lsyncd.status

# 3. 赋予权限(确保 lsyncd 有权写入)
sudo chmod -R 755 /var/log/lsyncd

调高内核监控上限

实时同步依赖 inotify,Linux 默认上限极低(8192),需要调高

# 永久写入配置文件
echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
# 立即应用
sudo sysctl -p

编写配置文件

sudo nano /etc/lsyncd/lsyncd.conf.lua
settings {
    logfile    = "/var/log/lsyncd/lsyncd.log",
    statusFile = "/var/log/lsyncd/lsyncd.status",
    nodaemon   = false,  -- 后台运行
    insist     = true,   -- 持续重试
}

sync {
    default.rsync,
    -- 注意:源目录末尾不要斜杠,会同步文件夹本身
    source    = "/var/www/html/files", 
    -- 目标目录
    target    = "/mnt/backup/destination/", 

    rsync     = {
        binary   = "/usr/bin/rsync",
        archive  = true,  -- 归档模式 (-a)
        verbose  = true,  -- 详细模式 (-v)
        _extra   = {"--delete"} -- 同步删除 (--delete)
    }
}

## 不同步指定文件,目标端删除不影响源端
####
```

settings {
    logfile    = "/var/log/lsyncd/lsyncd.log",
    statusFile = "/var/log/lsyncd/lsyncd.status",
    nodaemon   = false,
    insist     = true,
}

sync {
    default.rsync,
    source    = "/var/www/html/files",
    target    = "/mnt/backup/destination/",
    
    -- 【排除规则区域】
    -- 启用方法:删除行首的 -- 符号。注意每行末尾要有逗号。
    exclude = {
        -- 1. 排除特定文件 (精确匹配)
        -- "1.txt",
        -- "important_config.php",

        -- 2. 排除特定类型 (后缀匹配)
        -- "*.log",
        -- "*.tmp",

        -- 3. 排除特定文件夹
        -- "temp/",
        -- "cache/",
    },

    rsync     = {
        binary   = "/usr/bin/rsync",
        archive  = true,
        verbose  = true,
        -- 保持单向镜像:源端删,目标删;目标删,源端不删。
        _extra   = {"--delete"} 
    }
}

```

启动服务

文件在标准位置,直接启动服务即可,无需修改 Systemd 脚本

# 1. 启动服务
sudo systemctl start lsyncd

# 2. 设置开机自动启动
sudo systemctl enable lsyncd

# 3. 检查状态
sudo systemctl status lsyncd

操作

修改配置文件


sudo nano /etc/lsyncd/lsyncd.conf.lua

sudo systemctl restart lsyncd

查看同步日志

#实时同步日志
tail -f /var/log/lsyncd/lsyncd.log
#查看同步报告
cat /var/log/lsyncd/lsyncd.status

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注