zoukankan      html  css  js  c++  java
  • 利用rsync定时备份ftp服务器

    第一章 概述

    1.1 需求背景:

    现有仓内存储硬件为戴尔I5办公台式机,存储设备为奥瑞科磁盘阵列柜,可以设置raid5磁盘阵列,目前存在以下问题,当磁盘阵列或同时损坏2块硬盘时,数据会
    丢失,对公司造成财产损失,故对其进行升级

    1.2 需求概述:

    实现视频服务器数据定时备份至备份服务器,用户可上传下载文件,不可删除,视频文件保留90天,将90天以前的文件进行删除,并邮件反馈结果

    1.3 网络规划

    FTP服务器:
    10.30.31.240 /data/ftp240
    备份服务器:
    10.30.31.241 /data/ftp241
    

    1.4 硬件规划

    FTP服务器:DELL R730 
     OS:CentOS Linux release 7.5.1804 
     系统盘500G
     存储规划:4T企业级硬盘*5 raid5
    
    备份服务器:DELL R320 
     OS:CentOS Linux release 7.5.1804 
     系统盘500G
     存储规划:4T企业级硬盘*5 raid5
    

    1.5 实现思路

    两台服务器上配置raid5阵列,安装centos7.5服务
    240服务器上安装ftp服务,ftp目录/data/ftp240,虚拟用户alog1----alog1122 ok
    241服务器上以守护进程的方式配置sync服务,备份目录:/data/ftp241
    240服务器安装rsync服务,数据目录:/data/ftp240
    240服务器上编写备份文件脚本,每天凌晨1点进行备份,并将90天之前的文件进行删除
    241服务器上编写脚本,利用md5sum进行结果校验,并将备份的结果进行邮件反馈,将90天之前文件进行删除
    

    第二章 系统安装

    2.1 DELL R730安装centos7

    2.11 raid配置

    raid配置(ctrl+r)----磁盘初始化

    2.12 系统安装

    2.13 磁盘分区挂载

    磁盘使用三个步骤:分区-格式化-挂载 gdisk-mkfs-mount

    [root@db01:~]# fdisk -- n -- w
    [root@db01:~]# mkfs.xfs /dev/sda
    
    [root@db01:~]# lsblk -d
    [root@db01:~]# lsblk -f
    
    启动自动挂载可参考/etc/fatab之设置,设置完毕务必使用mount -a 测试语法是否正确;
    [root@db01:~]# mount /dev/sda /data
    
    [root@db01:~]# df -Th
    
    [root@db01:~]# vim /etc/fstab
    /dev/sda                /data                   xfs     defaults        0 0
    [root@db01:~]# mount -a
    [root@db01:~]# vim /etc/rc.local
    mount /dev/sda /data
    

    第三章 FTP服务配置部署

    3.1 安装vsftpd

    yum install -y vsftpd
    若安装失败,可以手动下载yum源
    wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
    rpm -Uvh epel-release-6*.rpm
    

    3.2 创建本地用户

    作用:用于映射虚拟用户,所有虚拟用户都会映射到此用户后对文件系统进行读写操作

    #创建ftp用户目录
    mkdir -p /data/ftp240
    #chmod -R 755 /data/ftp240待定
    useradd -d /data/ftp240 -s /sbin/nologin virftp
    chown -R virftp:virftp /data/ftp240
    

    3.3 创建虚拟用户[用户和密码]文件

    vim /etc/vsftpd/vuser-list
    alog1
    alog112
    

    3.4 加密用户密码文件生成数据库文件

    yum -y install libdb-utils
    db_load -T -t hash -f /etc/vsftpd/vuser-list /etc/vsftpd/vuser-list.db
    chmod 600 /etc/vsftpd/vuser-list.db
    

    3.5 创建PAM认证文件

    #将auth及account的所有配置行均注释掉,添加如下两行
    vim /etc/pam.d/vsftpd
    auth                 required     pam_userdb.so   db=/etc/vsftpd/vuser-list 
    account              required     pam_userdb.so   db=/etc/vsftpd/vuser-list
    

    3.6 修改主配置文件

    vim /etc/vsftpd/vsftpd.conf
    
    #禁止匿名用户登录
    anonymous_enable=NO
    #允许本地用户登录
    local_enable=YES
    #启用虚拟账户 
    guest_enable=YES
    #把虚拟账户映射到系统账户virftp               
    guest_username=virftp
    #使用虚拟用户验证(PAM验证)
    pam_service_name=vsftpd
    #设置存放各虚拟用户配置文件的目录(此目录下与虚拟用户名相同的文件为他的配置文件)
    user_config_dir=/etc/vsftpd/vsftpd_viruser
    #启用chroot时,虚拟用户根目录允许写入
    allow_writeable_chroot=YES
    chroot_local_user=YES
    #禁删
    cmds_denied=DELE,RMD
    

    3.7 创建虚拟用户[权限]配置文件

    权限示例1:所有权限

    # mkdir -p /etc/vsftpd/vsftpd_viruser/
    # vim /etc/vsftpd/vsftpd_viruser/alog1
    # 允许写入
    write_enable=YES
    #允许浏览FTP目录和下载
    anon_world_readable_only=NO
    # 允许虚拟用户上传文件
    anon_upload_enable=YES
    # 允许虚拟用户创建目录
    anon_mkdir_write_enable=YES
    # 允许虚拟用户执行其他操作(如改名、删除)
    anon_other_write_enable=YES
    # 上传文件的掩码,如022时,上传目录权限为755,文件权限为644
    anon_umask=022
    # 指定虚拟用户的虚拟目录(虚拟用户登录后的主目录)
    local_root=/data/ftp240
    

    权限示例2:只有上传下载的权限

    local_root=/data/ftp/alog2
    anon_upload_enable=yes
    anon_world_readable_only=no
    

    3.8 更改虚拟用户目录权限[略]

    #如果不更改的话,匿名用户是可以访问到的
    chmod 700 /data/ftp240/alog1 
    

    3.9 访问测试

    启动vsftp

    systemctl restart vsftpd
    systemctl enable vsftpd
    

    第四章 Rsync服务配置

    241备份服务器配置:
    1,安装rsync

    #yum install -y rsync
    

    2,编辑配置文件

    #vim /etc/rsyncd.conf
    uid = rsync
    gid = rsync
    port = 873
    fake super = yes
    use chroot = no
    max connections = 200
    timeout = 300
    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 = 10.0.0.0/24 
    hosts deny = 0.0.0.0/32 
    auth users = rsync_backup
    secrets file = /etc/rsync.password
    [backup]
    path = /data/ftp240_bak
    

    3,用户及目录配置

    useradd rsync -M -s /sbin/nologin
    mkdir -p /data/ftp240_bak 
    chown -R rsync.rsync /data/ftp240_bak
    chmod -R 755 /data/ftp240_bak
    echo "rsync_backup:backup@123"  >>/etc/rsync.password
    chmod 600 /etc/rsync.password
    

    4,启动rsync服务

    systemctl start rsyncd
    systemctl enable rsyncd
    

    240FTP服务器配置:

    echo "backup@123" >/etc/rsync.password
    chmod 600 /etc/rsync.password
    
    #测试
    rsync -avz /etc/hostname rsync_backup@10.0.0.241::backup --password-file=/etc/rsync.password
    

    第五章 脚本编写

    240FTP服务器上编写脚本[此处用法1]
    方法一:

    # mkdir -p /server/scripts/
    # vim /server/scripts/ftp240.sh
    #!/bin/bash
    
    Backup_dir="/data/ftp240"
    
    find $Backup_dir -type f -name "*.mp4" -mtime +90|xargs rm -rf 2>/dev/null
    find $Backup_dir/ -type f -mtime -1 ! -name "finger*"|xargs md5sum >$Backup_dir/finger.txt
    rsync -aqrtopg --delete  $Backup_dir/ rsync_backup@10.0.0.241::backup --password-file=/etc/rsync.password
    
    

    方法二:

    #!/bin/bash
    
    Backup_dir="/data/ftp240"
    cd $Backup_dir
    find ./ -type f -name "*.mp4" -mtime +90|xargs rm -rf 2>/dev/null
    find ./ -type d |xargs rmdir -p 2>/dev/null
    find ./ -type f -mtime -1 ! -name "finger*"|xargs md5sum >./finger.txt
    rsync -aqrtopg --delete  $Backup_dir/ rsync_backup@10.0.0.241::backup --password-file=/etc/rsync.password
    
    

    241备份服务器上编写脚本

    
    # mkdir -p /server/scripts/
    # vim /server/scripts/ftp241.sh
    #!/bin/bash
    # check backup data ,md5sum -c根据已生成的md5值,对文件进行校验>,MD5文件与待验证的文件在同一个目录中 
    sed -i 's/ftp240/ftp240_bak/g' /data/ftp240_bak/finger.txt
    find /data/ftp240_bak -type f -name "finger.txt"|xargs md5sum -c >/tmp/md5check.txt
    n1=`grep -i -c 'OK' /tmp/md5check.txt`
    n2=`grep -i -c 'FAILED' /tmp/md5check.txt`
    
    echo -e  "备份成功数量:$n1
    备份失败数量:$n2" >/tmp/check.txt
    
    # send check mail 
    mail -s "check backup info for $(date +%F -d -"1day") data" nishi1281@163.com </tmp/check.txt 
    
    

    第六章 定时任务

    240FTP服务器上设置定时任务

    crontab -e
    # backup data
    0 1 * * * /bin/bash /server/scripts/ftp240.sh &>/dev/null
    

    241FTP服务器上设置定时任务

    crontab -e
    #check backup data
    0 9 * * * /bin/bash /server/scripts/ftp241.sh &>/dev/null 
    ##服务端的定时任务时间会比客户端稍晚一些,为的是客户端有充足的时间将待备份文件传输完
    

    第七章 备份服务器邮件发送实现

    配置163企业邮箱

    编写linux服务邮件相关配置文件

    # yum install mailx
    
    # vim /etc/mail.rc
    在最后一行新增如下内容:
    set from=nishi1281@163.com 
    set smtp=smtp.163.com 
    set smtp-auth-user=nishi1281@163.com 
    set smtp-auth-password=MWACMDQLDUHYAAZTOM  //授权码
    set smtp-auth=login
    重启服务加载文件:
    
    # systemctl restart postfix.service
    第三步 发送邮件测试
    
    [root@backup~]# echo "邮件发送测试"|mail -s "邮件测试" 906288036@qq.com
    [root@backup~]# mail -s "邮件测试" 906288036@qq.com </etc/hosts
    
    

    第八章 磁盘监控告警

  • 相关阅读:
    bzoj1297: [SCOI2009]迷路
    bzoj1875: [SDOI2009]HH去散步
    bzoj2466: [中山市选2009]树
    bzoj1770: [Usaco2009 Nov]lights 燈
    BZOJ 1965: [Ahoi2005]SHUFFLE 洗牌( 数论 )
    BZOJ 1004: [HNOI2008]Cards( 置换群 + burnside引理 + 背包dp + 乘法逆元 )
    BZOJ 1006: [HNOI2008]神奇的国度( MCS )
    BZOJ 1925: [Sdoi2010]地精部落( dp )
    BestCoder Round #57 (div.2)
    BZOJ 1216: [HNOI2003]操作系统( 优先队列 )
  • 原文地址:https://www.cnblogs.com/nsthink-666/p/13174204.html
Copyright © 2011-2022 走看看