美文网首页
第三十三天课堂笔记rsync备份服务及搭建备份服务器

第三十三天课堂笔记rsync备份服务及搭建备份服务器

作者: 学无止境_9b65 | 来源:发表于2019-04-15 19:58 被阅读0次

    实践排除复制:
    NFS01:
    [root@nfs01 ~]# mkdir /data -p
    [root@nfs01 ~]# cd /data
    [root@nfs01 /data]# touch {a..d}
    [root@nfs01 /data]# ls
    a b c d

    --exclude 排除参数
    例:排除 a b
    [root@nfs01 /data]# rsync -avz /data/ --exclude=a --exclude=b rsync_backup@172.16.1.41::backup
    sending incremental file list
    ./
    c
    d
    排除1到4
    [root@nfs01 /data]# touch {1..5}
    [root@nfs01 /data]# rsync -avz /data/ --exclude={1..4} rsync_backup@172.16.1.41::backup
    sending incremental file list
    ./
    5
    a
    b

    [root@nfs01 /data]# rsync -avz /data/ --exclude={1,3,a} rsync_backup@172.16.1.41::backup
    sending incremental file list
    2
    4

    --exclude-from 从文件排除
    [root@nfs01 /data]# rsync -avz /data/ --exclude-from=./paichu.txt rsync_backup@172.16.1.41::backup
    sending incremental file list
    ./
    16
    17
    18
    19
    20
    paichu.txt

    实践删除:
    rsync作为镜像,相当于raid1,让两台服务器目录保持一致。
    --delete 让两台服务器目录保持一致

    推送:
    rsync -avz --delete /data/ rsync_backup@172.16.1.41::backup
    本地目录有啥,远端就有啥。
    注意:远端目录是不是东西更多,多了东西会被删除。提前备份backup对应的目录。

    rsync -avz --delete rsync_backup@172.16.1.41::backup /data/
    远端有啥。本地目录就有啥,注意本地/data目录。把/data改成根。提前注意备份本地/data

    --partial 支持大文件断点续传
    --bwlimit=KBPS 限速。

    企业案例:
    某上市公司,白天高峰期某DBA人员从数据库服务器通过rsync将上百GB数据复制到备份服务器,导致数据库库服务器带宽占满,造成用户无法访问网站的悲剧。其实可以利用rsync限速功能,将复制速度限制在剩余带宽的1/3或者1/2,可能就不会出现故障了

    1)最简单的实现,可以在配置文件结尾加如下内容(特殊底纹部分):
    [root@backup ~]# cat /etc/rsyncd.conf

    rsync_config_______________start

    created by oldboy

    site: http://www.oldboyedu.com

    uid = rsync
    gid = rsync
    use chroot = no
    fake super = yes
    max connections = 200
    timeout = 600
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    ignore errors
    read only = false
    list = false
    hosts allow = 172.16.1.0/24
    hosts deny = 0.0.0.0/32
    auth users = rsync_backup
    secrets file = /etc/rsync.password
    [backup]
    comment = welcome to oldboyedu backup.
    path = /backup/
    [data] #<==新模块。
    path = /data/ #<==新备份目录。

    除了增加以上两行外,读者也可以设定更多的独立配置参数,例如:独立虚拟用户,独立密码文件等。

    2)建立目录并授权。
    [root@backup ~]# mkdir -p /data
    [root@backup ~]# chown -R rsync.rsync /data
    [root@backup ~]# ls -ld /data
    drwxr-xr-x 2 rsync rsync 6 4月 16 10:04 /data
    3)重启rsync服务(只要修改配置,就考虑重载服务)
    [root@backup ~]# systemctl restart rsyncd
    4)从客户端访问测试
    [root@backup ~]# ls /data
    etc

    1、内部人员产生的数据(定时备份足矣):
    程序员开发代码(他电脑上)==>代码服务上(git/svn代码版本管理)==>测试环境测试===>正式环境
    原则上程序代码可以不备份。

    运维人员,写个定时任务,写个备份脚本,更改或增加服务配置rsyncd.conf,需要备份

    运维人员修改配置(测试服务器)==>代码服务器上(git/svn代码版本管理)==>测试环境测试===>正式环境
    原则上运维人员的变更可以不备份。

    2、用户产生的数据(必须实时备份)
    图片、视频等文件是放在存储服务器上的,任意时刻都可能传上来,必须实时备份。
    文本(博客文章),放在数据库里,,任意时刻都可能发布,必须实时备份。

    第一个里程碑:
    41搭建好rsync服务,并在31、7上测试成功。

    第二个里程碑 开发脚本打包备份
    /backup 备份目录
    /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs 需要备份的内容

    模拟创建:
    [root@nfs01 ~]# mkdir -p /server/scripts
    [root@web01 ~]# mkdir -p /server/scripts /var/html/www /app/logs

    web01:
    [root@web01 ~]# mkdir -p /backup
    [root@web01 ~]# ls -ld /backup/
    drwxr-xr-x 2 root root 6 4月 16 11:36 /backup/

    [root@web01 /]# tar zcvhf /backup/bak_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs
    tar: 从成员名中删除开头的“/”
    /var/spool/cron/root
    /etc/rc.local
    /server/scripts/
    /var/html/www/
    /app/logs/
    [root@web01 /]# ls /backup/
    bak_2019-04-16_2.tar.gz

    写脚本:
    [root@web01 /]# mkdir /server/scripts/ -p
    [root@web01 /]# cd /server/scripts/

    [root@web01 /server/scripts]# cat /server/scripts/bak.sh
    [root@web01 /server/scripts]# cat bak.sh

    !/bin/sh

    export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
    export RSYNC_PASSWORD=oldboy
    IP=(hostname -i) mkdir -p /backup/IP

    1.打包

    tar zchf /backup/IP/bak_(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs &>/dev/null &&\

    2.删除

    find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f &&\

    3.推送

    rsync -az /backup/ rsync_backup@172.16.1.41::backup &>/dev/null
    [root@web01 /server/scripts]# /bin/sh /server/scripts/bak.sh
    [root@web01 /server/scripts]# ls /backup/
    bak_2019-04-16_2.tar.gz

    定时任务:
    [root@web01 /server/scripts]# crontab -e
    [root@web01 /server/scripts]# crontab -l|tail -2

    back.....

    00 00 * * * /bin/sh /server/scripts/bak.sh >/dev/null 2>&1
    [root@web01 /server/scripts]# find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f

    确保备份完整。
    做flag和采集指纹
    [root@nfs01 /server/scripts]# #采集人的指纹
    [root@nfs01 /server/scripts]# md5sum oldboy.txt >zhiwen.log
    [root@nfs01 /server/scripts]# cat zhiwen.log
    348bd3ce10ec00ecc29d31ec97cd5839 oldboy.txt
    [root@nfs01 /server/scripts]# #校验
    [root@nfs01 /server/scripts]# md5sum -c zhiwen.log
    oldboy.txt: 确定

    [root@web01 /server/scripts]# cat bak.sh

    !/bin/sh

    export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
    export RSYNC_PASSWORD=oldboy
    IP=(hostname -i) mkdir -p /backup/IP

    1.打包

    tar zchf /backup/IP/bak_{IP}(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs &>/dev/null &&\ touch /backup/IP/bak{IP}_(date +%F_%w).flag &&\

    采集指纹

    find /backup/ -type f -name "*.tar.gz"|xargs md5sum >/backup/IP/bak_{IP}$(date +%F%w).flag &&\

    2.删除

    find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f &&\

    3.推送

    rsync -az /backup/ rsync_backup@172.16.1.41::backup &>/dev/null

    bak_172.16.1.7_2019-04-16_2.tar.gz
    bak_172.16.1.7_2019-04-17_3.tar.gz
    bak_172.16.1.7_2019-04-18_4.tar.gz
    bak_172.16.1.7_2019-04-16_2.tar.gz

    相关文章

      网友评论

          本文标题:第三十三天课堂笔记rsync备份服务及搭建备份服务器

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