CentOS7下基于rsync的同步程序lsyncd安装设置使用教程

最近我准备迁移VPS上的网站,研究了一下基于rsync的同步程序lsyncd, 以方便快速的迁移文件.

1. lsyncd介绍


lsyncd是基于rsync的实时文件同步程序
具体介绍看lsyncd官方网站: http://axkibe.github.io/lsyncd/

2. lsyncd安装依赖程序


lsyncd依赖rsync和SSH,需要同时在服务端和客户端安装

2.1 为目标服务器设置SSH秘钥登录


在源服务器设置SSH公私密钥对,然后上传到目标服务器,可以让我们无密码登录远程服务器
ssh-keygen -b 4096 -t rsa #创建公私密钥对
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] #上传公钥到目标服务器,请自行修改为远程服务器IP
grep RSAAuthentication  /etc/ssh/sshd_config #目标服务器查看RSAAuthentication配置
grep PubkeyAuthentication /etc/ssh/sshd_config #目标服务器查看PubkeyAuthentication配置
sed -i "s@#RSAAuthentication yes@RSAAuthentication yes@g" /etc/ssh/sshd_config
sed -i "s@#PubkeyAuthentication yes@PubkeyAuthentication yes@g" /etc/ssh/sshd_config
systemctl restart sshd #目标服务器重启sshd

根据秘钥生成公钥(备用)
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

2.2 安装lsyncd rsync


yum install -y epel-release # 安装epel源
yum install -y  lsyncd rsync --enablerepo=epel # 安装lsyncd rsync,同步依赖rsync3.1,客户端必须安装rsync(yum -y install rsync)

3.修改lsyncd 配置文件


这里仅记录基于rsyncssh的远程同步,其他配置请参考官方网站的代码自行修改.
vim /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,                            --最大延迟(根据需要修改,建议15秒)
    insist = 1,                                    --强制运行(出错不停止,不断尝试同步到远程目标)
}
sync {
    default.rsyncssh,      --默认rsync+ssh,rsync版本需要升级3以上版本
    source = "/data/your/files",        --源目录(结尾不要带斜杠/)
    delete = true,                            --保持完全同步        
    host = "[email protected]",          --目标主机 (自行修改为你的目标服务器IP)
    targetdir = "/data/mydata", --目标目录(同步前需要创建好目录,不然会出错)
    exclude={                 
             "default/**","*.temp", "*.tmp"            --需排除的文件和目录
    },
rsync = {
    binary = "/usr/bin/rsync", --需先安装好rsync
    archive = true,            --归档
    compress = false,          --压缩 (图片文件多,不开压缩;html文件多,开启压缩)
    owner = true,              --属主
    perms = true,              --权限
    whole_file = false,
    _extra = {"-P", "--bwlimit=12800"},  --限制带宽(限制100兆带宽,默认单位KB/s)
    },
ssh = {
    port = 22  --默认SSH端口,可修改
    }
}
--可以设置多个snyc进行同步
 sync {
    default.rsyncssh,      --默认rsync+ssh,rsync版本需要升级3以上版本
    source = "/data/other/files",        --源目录(结尾不要带斜杠/)
    delete = true,                            --保持完全同步        
    host = "[email protected]",          --目标主机 (自行修改为你的目标服务器IP)
    targetdir = "/data/new/backup", --目标目录(同步前目录需要创建好,不然会出错)
    exclude={                 
            "default/**", "*.temp", "*.tmp"            --需排除的文件和目录
    },
    rsync = {
    binary = "/usr/bin/rsync", --需先安装好rsync
    archive = true,            --归档
    compress = false,          --压缩
    owner = true,              --属主
    perms = true,              --权限
    whole_file = false,
    _extra = {"-P", "--bwlimit=50000"},  -- 使用-P参数,断点续传
    },
ssh = {
    port = 22
    }
}

4. 启动lsyncd, 开始同步文件


systemctl status lsyncd
systemctl enable lsyncd
systemctl start lsyncd
#systemctl restart lsyncd

lsyncd错误排除
请参考日志文件,逐一排除

cat /var/log/lsyncd.log

此处评论已关闭