美文网首页
Ubuntu20.04通过rsync和inotify实现定时备份

Ubuntu20.04通过rsync和inotify实现定时备份

作者: 羋学僧 | 来源:发表于2023-04-22 15:30 被阅读0次

    通过rsync和inotify实现定时备份与实时备份。

    为了避免主服务单点故障,可以将数据备份到远程备份机器。可以使用rsync工具同步Jenkins home到远程,可以利用rsync工具的 “--exclude-from=FILE”功能,定制一个exclude文件,过滤掉无需备份的数据。

    实例拓扑图

    基础配置:(两台都要做 更改源为阿里源)
    cat > /etc/apt/sources.list <<'EOF'
    deb http://mirrors.aliyun.com/ubuntu/ focal main restricted   #优先检索focal的main和restricted组件。
    deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted
    deb http://mirrors.aliyun.com/ubuntu/ focal universe
    deb http://mirrors.aliyun.com/ubuntu/ focal-updates universe
    deb http://mirrors.aliyun.com/ubuntu/ focal multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-updates multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu focal-security main restricted
    deb http://mirrors.aliyun.com/ubuntu focal-security universe
    deb http://mirrors.aliyun.com/ubuntu focal-security multiverse
    EOF
    
    更新源
    apt-get update
    

    一、备份服务器操作(backup服务器)(10.10.201.156上)

    备份服务器:主服务器或主机文件将需要备份的文件同步到此服务器上,即从WEB服务器上同步过来进行备份。

    1.1安装rsync

    sudo apt-get install rsync
    ubuntu 20.04 默认已经安装
    

    1.2修改/etc/dault/rsync文件

    sudo vim /etc/default/rsync
    
    修改如下部分:
    
    RSYNC_ENABLE=true(默认为false)
    

    1.3方便管理rsync配置文件,新建文件夹rsync

    sudo mkdir -p /etc/rsync/
    

    1.4建立密码文件rsync.secrets

    密码文件是双机同步时认证的关键,两机密码需要相同。

    1.建立密码文件
    vim /etc/rsync/rsyncd.secrets
    
    如下www-data是用户名 123456是密码
    
    www-data:123456
    
    保存退出
    
    2.赋予权限
    chmod 600 /etc/rsync/rsyncd.secrets
    

    1.5建立文件存储的目录

    备份到备份服务器的文件 存储的目录 (路径要和下面配置文件中定义的一样 我的存储位置是/var/www/pub)

    mkdir -p /var/www/pub
    

    1.6拷贝文件rsyncd.conf,并自定义修改内容

    1.拷贝rsyncd.conf 模板文件到/etc/rsyncd.conf
    cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/rsyncd.conf
    
    2.编辑配置文件
    vim /etc/rsyncd.conf
    如下
    
    # 日志文件路径
    log file=/var/log/rsyncd
    # pid文件
    pid file=/var/run/rsyncd.pid
    # 模块名称(重要)
    [www-data]
    comment = public archive
    # 备份文件的存储路径,需要确保存在(重要) 和上面1.5建立的一样
    path = /var/www/pub
    use chroot = yes
    # 最大连接数10个
    # max connections=10
    # lock文件
    lock file = /var/lock/rsyncd
    # 不仅读也要写权限
    read only = no
    list = yes
    # uid与pid非必要情况可设置为www-data
    uid = root
    pid = root
    # 用户名称
    auth users = www-data
    # 指定同步校验用户时的密码文件
    fake super = yes
    # 密码文件
    secrets file = /etc/rsync/rsyncd.secrets
    strict modes = yes
    # 指定主服务器ip
    hosts allow = 10.10.201.155
    # 是否忽略错误
    ignore errors = no
    # 是否忽略非可读的
    ignore nonreadable = yes
    # 日志转移
    transfer logging = yes
    # 日志输出格式
    log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
    # 最大响应时间
    timeout = 600
    refuse options = checksum dry-run
    dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
    

    1.7启动服务

    从启动服务
    /etc/init.d/rsync restart
    查看服务状态
    /etc/init.d/rsync status
    
    或者
    从启动服务
    systemctl restart   rsync
    查看服务状态
    systemctl status   rsync
    

    二、主服务器配置(WEB服务器)(10.10.201.155上)

    主服务器:指重要文件的原件在该服务器上。

    2.1安装rsync

    sudo apt-get install rsync
    

    2.2修改/etc/dault/rsync文件

    sudo vim /etc/default/rsync
    修改如下部分:
    RSYNC_ENABLE=true(默认为false)
    

    2.3方便管理rsync配置文件,新建文件夹rsync

    sudo mkdir -p /etc/rsync/
    

    2.4建立密码文件rsync.secrets

    密码文件是双机同步时认证的关键,两机密码需要相同(这里只需要密码就行)

    1.创建密码文件
    vi /etc/rsync/rsyncd.secrets
    如下
    123456
    保存退出
    
    2.赋予权限
    chmod 600 /etc/rsync/rsyncd.secrets
    

    2.5验证主从服务器的连接状态

    rsync -vzrtopg --progress www-data@10.10.201.156::www-data --password-file=/etc/rsync/rsyncd.secrets
    
    解释一下各个参数的含义:
    www-data : 在备份服务器上设置的用户名
    10.10.201.156 : 备份服务器ip
    www-data : 备份服务器10.10.201.156中rsyncd.conf中模块名称
    

    2.6测试数据备份效果

    将WEB服务器(10.10.201.155)上的文件备份到备份服务器(10.10.201.156)上

    1.建立测试用的目录(需要备份的文件 例如nginx的配置文件)
    mkdir -p /etc/nginx
    2.建立一些文件
    touch /etc/nginx/{1,2,3,4}
    3.执行备份文件的操作
    rsync -avzPt --delete /etc/nginx/ www-data@10.10.201.156::www-data --password-file=/etc/rsync/rsyncd.secrets
    
    解释一下各个参数的含义:
    /etc/nginx/ : 需要备份的文件的存储路径
    www-data : 在备份服务器上设置的用户名
    10.10.201.156 : 备份服务器ip
    www-data : 备份服务器中rsyncd.conf中模块名称
    
    ##############################总结   ######################################
    总结来说:通过rsync将主web服务器/etc/nginx/路径下的所有文件备份到用户名为www-data,
    ip地址为10.10.201.156的备份服务器,里面的rsyncd.conf文件中的www-data模块下的path
    (也就是/var/www/pub)指向路径里面。
    如果/etc/nginx后面不加 / 就会将nginx文件夹整个保存到/var/www/pub下。如下
    
    rsync -avzPt --delete /etc/nginx www-data@10.10.201.156::www-data --password-file=/etc/rsync/rsyncd.secrets
    ##################################################################################
    

    三、定时备份

    3.1选择命令编辑方式

    crontab -e
    选择3
    

    3.2输入定时命令

    在最后一行添加如下 后 保存提出
    0 5 * * * rsync -avzPt --delete /etc/nginx/ www-data@10.10.201.156::www-data --password-file=/etc/rsync/rsyncd.secrets
    
    解释一下各个参数的含义:
    0 :指分钟
    5 :指小时
    即在每天5点00分执行该备份命令。
    
    下面为每5分钟运行一次
    */5 * * * * rsync -avzPt --delete /etc/nginx/ www-data@10.10.201.156::www-data --password-file=/etc/rsync/rsyncd.secrets
    

    四、实时备份

    (只要WEB服务器上监控的目录 /etc/nginx 有变化 就同步到backup备份服务器上 包括添加 修改 删除等)

    4.1安装inotify web服务器上(10.10.201.155上)

    安装
    apt-get install inotify-tools
    
    安装完成后,inotifywait默认路径为/usr/bin/inotifywait
    

    4.2创建脚本

    vim /etc/rsync/rsync.init.sh 
    > #!/bin/bash
    > /usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib /etc/rsync/temp/ | while read files
    > do
    > rsync -avzPt --delete --password-file=/etc/rsync/rsyncd.secrets /etc/rsync/temp/ www-data@192.168.27.131::www-data
    > echo "{files} was rsynced" >> /temp/rsync.log 2>&1
    > done
    > EOF
    
    解释一下各个参数的含义:
    #!/bin/bash : 脚本文件必备
    /usr/bin/inotifywait : inotifywait默认路径
    modify,delete,create,attrib : 修改,删除,新建,更改格式(对文件操作)
    /etc/nginx/ : 监听的文件路径
    while read files : 文件被读取时
    echo “{files} was rsynced” >> /temp/rsync.log 2>&1 : 日志信息保存
    

    4.3修改脚本权限

    chmod 755 /etc/rsync/rsync.init.sh
    

    4.4设置脚本开机自启

    1.先查看rc-local 是否启动
    systemctl status rc-local.service
    2. 启动服务
    systemctl start rc-local.service
     
    3.重启服务
    systemctl restart rc-local 
    4.添加开启启动 rc-local.service
    systemctl enable  rc-local.service
    
    4.添加rc-local.service软连接
    ln -sf /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
    
    5.编辑rc-local.service
    vim /etc/systemd/system/rc-local.service
    最后一行 添加如下
    [Install]
    WantedBy=multi-user.target
    Alias=rc-local.service
    
    保存退出
    

    4.5创建rc.local文件并赋权

    1.编辑文件
    vim /etc/rc.local
    如下
    #!/bin/bash
    /bin/bash /etc/rsync/rsync.init.sh > /dev/null 2>&1 &
    exit 0
    
    2.赋予权限
    chmod 755 /etc/rc.local
    

    4.6重新加载服务

    1.刷新
    systemctl daemon-reload
    2.查看服务状态
    systemctl status rc-local.service
    

    4.7测试

    web服务器(10.10.201.155)建立几个文件如下

    1.进入WEB服务器的监控的目录
    cd /etc/nginx
    2.建立文件
    touch 1
    touch 12
    touch 123
    touch 1234
    

    备份服务器(10.10.201.156)去查看

    1.进入备份文件的目录
    cd /var/www/pub
    2.查看文件 (已经实时备份过来了)
    ls
    

    相关文章

      网友评论

          本文标题:Ubuntu20.04通过rsync和inotify实现定时备份

          本文链接:https://www.haomeiwen.com/subject/nomsjdtx.html