Rsync+Lsyncd实现文件实时同步

部署

建立信任关系

ssh-keygen -t rsa  
ssh-copy-id root@slave1

备份机部署

cat <<EOF > /etc/rsyncd.conf    
[backup]
path = /home/backup
hosts allow = 1.1.1.1
hosts deny = *
list = true
uid = root
gid = root
read only = false
EOF

systemctl enable rsyncd.service
systemctl start rsyncd.service

主控机部署

cat <<EOF > /etc/lsyncd.conf
settings {
    logfile = "/var/log/lsyncd.log",          --日志路径
    statusFile = "/var/log/lsyncd.status",    --状态文件
    pidfile = "/var/run/lsyncd.pid",          --pid文件路径
    statusInterval = 1,                       --状态文件写入最短时间
    nodaemon = false,                         --daemon运行
    maxProcesses = 1,                         --最大进程
    maxDelays = 1,                            --最大延迟
}
sync {
    default.rsyncssh,      --默认rsync+ssh,rsync版本需要升级3以上版本
    source = "/home/backup/",                 --源目录
    delete = true,                            --保持完全同步        
    host = "root@slave1",                
    targetdir = "/home/backup/",              --目标目录
    exclude={   "*.tmp", "*.bak"   },         --需排除的文件

rsync = {
    binary = "/usr/bin/rsync", --需先安装好rsync
    archive = true,            --归档
    compress = false,          --压缩
    owner = true,              --属主
    perms = true,              --权限
    _extra = {"--bwlimit=5120"}, --限速5120KB/S
    whole_file = false
    },
ssh = {
    port = 22
    }
}
EOF

systemctl enable lsyncd.service
systemctl start lsyncd.service

还原数据

rsync -avzP --delete root@slave1:/tmp/ /home/backups/
-a 参数,相当于-rlptgoD(-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件);
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息;
-q 不提示信息
上一篇
下一篇