精华内容
下载资源
问答
  • 重要的数据必须备份,并且必须实时备份,否则一旦出现意外情况,将会给服务器文件安全带来巨大灾难。那么,如何备份服务器文件呢?本文以Windows为例说明服务器文件备份的方法 方法一、通过专门的服务器文件备份...
  • (100台的web服务器数据备份哟~备份思路可以是先在本地按日期打包,然后再推到备份服务器backup上),NFS存储服务器同Web服务器,实际工作中就是全部的服务器) 具体要求如下: 1)所有服务器的备份目录必须都为/...

    项目需求:

    每天晚上00点整在web服务器上打包备份系统配置文件,网站程序目录及访问日志通过rsync命令推送备份服务器backup上备份保留。(100台的web服务器数据备份哟~备份思路可以是先在本地按日期打包,然后再推到备份服务器backup上),NFS存储服务器同Web服务器,实际工作中就是全部的服务器)

    具体要求如下:

    1)所有服务器的备份目录必须都为/backup。

    2)要备份的系统配置文件包括但不限于:

                a.定时任务服务的配置文件(/var/spool/cron/root)(适合web和nfs服务器)。

                 b.开机自启动的配置文件(/etc/rc.local)(适合web和nfs服务器)。

                 c.日常脚本的目录 (/server/scripts)(适合web和nfs服务器)。

                 d.防火墙iptables的配置文件(/etc/sysconfig/iptables)。

                 e.自己思考下还有什么需要备份呢?

    3)Web服务器站点目录假定为(/var/html/www)。

    4)Web服务器A访问日志路径假定为(/app/logs)

    5)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)

    6)备份服务器上,保留每周一的所有数据副本,保留最近7天的备份数据,同时其它要保留6个月的数据副本。(180天网监要求)

    7)备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。

    8)需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中:(完善的系统一定要有告警功能)

    基本备份要求

      已知3台服务器主机名分别为:web01,backup,nfs01,主机信息如下表:

    服务器说明

    外网IP

    内网IP

    主机名

    Nginx web服务器

    10.0.0.8/24

    172.16.1.8/24

    web01

    NFS存储服务器

    10.0.0.31/24

    172.16.1.31/24

    nfs01

    rsync备份服务器

    10.0.0.41/24

    172.16.1.41/24

    backup

    --准备好相应的机器(修改好机器名,关闭iptables,selinux,配置好yum源),并配置好相应的host解析,相同的时间(这里上台机子都已配置完成)

    简单逻辑图

     解题思路

    1)搭建backup服务器。

       a.搭建rsync服务

    2)搭建web服务器。

       1.验证rsync服务能否推送成功。

       2.开发脚本,实现打包,备份,推送,校验,删除。

       3.配置定时任务定时推送,每天0点定时推送。

    3)搭建backup服务器。

    1.实现校验,删除,报警。

    2.配置定时任务每天6点定时执行。

    4)搭建nfs服务器。

       1.验证rsync服务能否推送成功。

       2.开发脚本,实现打包,备份,推送,校验,删除。

       3.配置定时任务定时推送,每天0点定时推送。

    项目实施

    --准备好相应的机器(修改好机器名,关闭iptables,selinux,配置好yum源),并配置好相应的host解析,相同的时间(这里上台机子都已配置完成)

    --host 解析
    
    [root@backup ~]# vim /etc/hosts
    
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    192.168.1.222 web01
    
    192.168.1.233 nfs01
    
    192.168.1.244 backup #添加
    
    --使用ntpdate实现时间同步
    
    [root@nfs-01 ~]# yum install ntpdate
    
    [root@nfs-01 ~]# vim ntpdate.sh #脚本复制好用执行一遍让时间一致
    
    #!/bin/bash
    
    ntpdate time.nist.gov
    
    hwclock -w
    
    [root@nfs-01 nfs-01 ~]# crontab -e
    
    * * * * 1 /root/time.sh #每周同步一次

    1、搭建rsync服务端(blackup服务器)

    1.1.安装rsync

    [root@backup ~]# yum install rsync -y

    1.2.修改/etc/xinetd.d/rsync

    [root@backup ~]# vim /etc/xinetd.d/rsync

    1.3.配置/etc/rsyncd.conf(需要手动生成)

    [root@backup ~]# vim /etc/rsyncd.conf

    uid = rsync #rsync以什么用户启动

    gid = rsync #rsync 以什么组启动

    use chroot = no

    max connections = 200 #最大连接数

    timeout = 300 #超时时间

    pid file = /var/run/rsyncd.pid #pid文件路径

    lock file = /var/run/rsync.lock #指定lock文件

    log file = /var/log/syncd.log #日志文件

    [backup]

    path = /backup/ #back目录

    ignore errors #忽略错误

    read only = no #是否字符(若从客户端同步到服务器必须设为no)

    list = no #在否允许列表

    hosts allow = 192.168.1.0/24 #允许的ip端

    auth users = rsync_backup #认证的用户,服务器必须存在这个系统用户

    secrets file = /etc/rsync.password #指定用户密码文件

    #以上配置文件需去除注释才能直接复制,否则报错

    1.4.创建用户,及目录

    [root@backup ~]# useradd -s /sbin/nologin -M rsync

    [root@blackup ~]# mkdir /backup

    [root@backup ~]# chown -R rsync.rsync /backup

    1.5.创建密码文件

    [root@backup ~]# vim /etc/rsync.password

    rsync_backup:123456 #虚拟用户及密码

    [root@backup ~]# chmod 600 /etc/rsync.password #权限必须为600

    1.6.启动,添加开机启动

    [root@backup ~]# rsync --daemon

    [root@backup ~]# ss -antup|grep rsync

    [root@backup ~]# echo "/usr/bin/rsync --daemon">>/etc/rc.local #开机启动

    2.1客户端配置(nfs01)

    [root@nfs-01 ~]# yum install rsync -y

    [root@nfs-01 ~]# mkdir /backup/

    [root@nfs-01 ~]# touch /backup/1.txt #创建个测试文件

    [root@nfs-01 ~]# echo "123456" >/etc/rsync.password #创建密码文件

    [root@nfs-01 ~]# chmod 600 /etc/rsync.password

    [root@nfs-01 ~]# rsync -avz /backup/ rsync://rsync_backup@192.168.1.244/backup --password-file=/etc/rsync.password

    3.1客户端配置(web01)

    [root@web-01 ~]# yum install rsync -y

    [root@web-01 ~]# mkdir /backup/

    [root@web-01 ~]# touch /backup/2.txt

    [root@web-01 ~]# echo "123456" >/etc/rsync.password

    [root@web-01 ~]# chmod 600 /etc/rsync.password

    [root@web-01 ~]# rsync -avz /backup/ rsync://rsync_backup@192.168.1.244/backup --password-file=/etc/rsync.password

    3.2模拟真实生产环境创建些文件

    [root@web-01 ~]# mkdir -p /var/html/www

    [root@web-01 ~]# touch /var/html/www/{1..10}

    [root@web-01 ~]# mkdir -p /app/logs

    [root@web-01 ~]# touch /app/logs/{1..g}

    3.3创建备份脚本

    [root@web-01 ~]# mkdir /server/scripts -p

    [root@web-01 ~]# vim /server/scripts/sh.sh

    #!/bin/bash

    export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    ip=(ifconfig eth0|awk -F "[ :]+" 'NR==2{print(ifconfig eth0|awk -F "[ :]+" 'NR==2{print4}') #获取ip

    backpath=/backup/ #备份目录

    name=`hostname` #主机名

    mkdir -p backpath/backpath/ip

    #判断周一

    if [ $(date +%w) -eq 2 ];then

    date="$(date +%F -d "-1day")_week1"

    else

    date="$(date +%F -d "-1day")"

    fi

    cd / #切换到根目录并回车

    tar zcf backpath/backpath/ip/name"′′name""{date}"_sysconfig".tar.gz var/spool/cron/ etc/rc.d/rc.local server/scripts/

    tar zcf backpath/backpath/ip/name"′′name""{date}"_data".tar.gz var/html/www/ #注释掉,nfs服务器不需要备份web数据

    tar zcf backpath/backpath/ip/name"′′name""{date}"_logs".tar.gz app/logs/ #注释掉,nfs服务器不需要备份web数据

    find backpath−typef−name"∗.tar.gz"|xargsmd5sum>backpath−typef−name"∗.tar.gz"|xargsmd5sum>backpath/ip/flag_ip/flag_ip"_"${date} #给文件打标记

    #备份到balackup服务器

    rsync -az $backpath rsync://rsync_backup@192.168.1.244/backup --password-file=/etc/rsync.password

    #删除7天谴数据

    find $backpath -type f -mtime +7|xargs rm -f

    [root@web-01 ~]# crontab -e

    00 00 * * * /bin/sh /server/scripts/sh.sh >/dev/null 2>&1 #添加

    3.4创建定时任务,并将脚本文件复制到其他服务器并修改(nfs01)

    [root@nfs-01 ~]# mkdir -p /server/scripts/

    [root@nfs-01 ~]# vim /server/scripts/sh.sh

    #!/bin/bash

    export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    ip=(ifconfig eth0|awk -F "[ :]+" 'NR==2{print(ifconfig eth0|awk -F "[ :]+" 'NR==2{print4}') #获取ip

    backpath=/backup/ #备份目录

    name=`hostname` #主机名

    mkdir -p backpath/backpath/ip

    #判断周一

    if [ $(date +%w) -eq 2 ];then

    date="$(date +%F -d "-1day")_week1"

    else

    date="$(date +%F -d "-1day")"

    fi

    cd / #切换到根目录并回车

    tar zcf backpath/backpath/ip/name"′′name""{date}"_sysconfig".tar.gz var/spool/cron/ etc/rc.d/rc.local server/scripts/

    #tar zcf backpath/backpath/ip/name"′′name""{date}"_data".tar.gz var/html/www/ #注释掉,nfs服务器不需要备份web数据

    #tar zcf backpath/backpath/ip/name"′′name""{date}"_logs".tar.gz app/logs/ #注释掉,nfs服务器不需要备份web数据

    find backpath−typef−name"∗.tar.gz"|xargsmd5sum>backpath−typef−name"∗.tar.gz"|xargsmd5sum>backpath/ip/flag_ip/flag_ip"_"${date} #给文件打标记

    #备份到balackup服务器

    rsync -az $backpath rsync://rsync_backup@192.168.1.244/backup --password-file=/etc/rsync.password

    #删除7天谴数据

    find $backpath -type f -mtime +7|xargs rm -f

    [root@nfs-01 ~]# crontab -e

    00 00 * * * /bin/sh /server/scripts/sh.sh >/dev/null 2>&1 #添加

    设置个就近的时间后查看nfs-01,web-01,能否正常推数据

    [root@backup ~]# ls /backup/

    4、mailx使用外部的SMTP来实现blackup服务器邮件报警

    mailx是一个小型的邮件发送程序

    具体步骤如下:

    4.1、安装

    [root@blackup ~]# yum install mailx

    4.2、编辑配置文件

    [root@blackup ~]# vim /etc/mail.rc #添加如下内容

    set from=xxxx@126.com

    set smtp=smtp.126.com

    set smtp-auth-user=xx@126.com

    set smtp-auth-password=xxx

    set smtp-auth=login

    ---说明

    from:对方收到邮件时显示的发件人

    smtp:指定第三方发邮件的smtp服务器地址

    set smtp-auth-user:第三方发邮件的用户名

    set smtp-auth-password:用户名对应的密码,有些邮箱需要填授权吗

    smtp-auth:SMTP的认证方式,默认是login,也可以改成CRAM-MD5或PLAIN方式

    4.3、测试

    [root@001 ~]# init 6

    [root@001 ~]# mail -s "hesaucaq" xx@qq.com < /etc/passwd

    [root@001 ~]# echo "测试邮件" | mail -s "测试" xxxxx@qq.com

    转自:http://www.cnblogs.com/imweihao/p/7250500.html

    以上已经实现了发邮件功能!!!

    4.4、在(backup)编辑脚本实现报警

    [root@blackup ~]# mkdir -p /server/scripts/

    [root@blackup ~]# cd !$

    脚本如下:

    #!/bin/bash

    export LANG=en

    ip1="192.168.1.222"

    ip2="192.168.1.233" #机器增加需加更多的ip

    logpath=/tmp/flag.log #日志文件地址,后面汇总到这个文件来发送

    #判断周一

    if [ $(date +%w) -eq 2 ];then

    date="$(date +%F -d "-1day")_week1"

    else

    date="$(date +%F -d "-1day")"

    fi

    find /backup/ip1 -name flag_ip1 -name flag_ip1"_"{date}|xargs md5sum -c &>{date}|xargs md5sum -c &>logpath

    find /backup/ip2 -name flag_ip2 -name flag_ip2"_"{date}|xargs md5sum -c &>>{date}|xargs md5sum -c &>>logpath #需更改成ip2和追加

    find /backup/$ip1 -type f -name "*.tar.gz" -a ! -name "*week*" -mtime +180|xargs rm -f

    find /backup/$ip2 -type f -name "*.tar.gz" -a ! -name "*week*" -mtime +180|xargs rm -f #需要更改成ip2

    mail -s "backup`date`" imweihao@126.com < $logpath #汇总到一个文件发送

    [root@blackup scripts]# crontab -e

    10 00 * * * /bin/sh /server/scripts/mail.sh >/dev/null 2>&1 #之间最好错开,如果数据量大的话可能需要时间

    测试:

    设置两个时间点,周一和周二的日期看是否正常,有些时候太会收不到邮件,那是因为被网易的垃圾邮件机制屏蔽了,一会再试,或者发到自己邮箱!

    ---以上已实现多机数据备份及邮件告警如果需要增加机器或者增加备份的数据,在脚本中添加即可

    ---附1:Rsync的命令格式可以为以下六种:

    Rsync的命令格式可以为以下六种:
    rsync [OPTION]... SRC DEST
    rsync [OPTION]... SRC [USER@]HOST:DEST
    rsync [OPTION]... [USER@]HOST:SRC DEST
    rsync [OPTION]... [USER@]HOST::SRC DEST
    rsync [OPTION]... SRC [USER@]HOST::DEST
    rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
    对应于以上六种命令格式,rsync有六种不同的工作模式:
    对应于以上六种命令格式,rsync有六种不同的工作模式:
      1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。如:rsync -a /data /backup
      2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。如:rsync -avz *.c foo:src
      3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。如:rsync -avz foo:src/bar /data
      4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。如:rsync -avzP root@172.16.78.192::www /databack
      5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。如:rsync -avzP /databack root@172.16.78.192::www
      6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www
    rsync参数的具体解释如下:

    正常情况下会使用 -avz相当与-vzrtopgD1,表示同步时文件和目录属性不变

    -v, --verbose 详细模式输出
    -q, --quiet 精简输出模式
    -c, --checksum 打开校验开关,强制对文件传输进行校验
    -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
    -r, --recursive 对子目录以递归模式处理
    -R, --relative 使用相对路径信息
    -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
    --backup-dir 将备份文件(如~filename)存放在在目录下。
    -suffix=SUFFIX 定义备份文件前缀
    -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
    -l, --links 保留软链接
    -L, --copy-links 想对待常规文件一样处理软链结
    --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
    --safe-links 忽略指向SRC路径目录树以外的链结
    -H, --hard-links 保留硬链结
    -p, --perms 保持文件权限
    -o, --owner 保持文件属主信息
    -g, --group 保持文件属组信息
    -D, --devices 保持设备文件信息
    -t, --times 保持文件时间信息
    -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
    -n, --dry-run现实哪些文件将被传输
    -W, --whole-file 拷贝文件,不进行增量检测
    -x, --one-file-system 不要跨越文件系统边界
    -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
    -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
    --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
    -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
    --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
    --delete 删除那些DST中SRC没有的文件
    --delete-excluded 同样删除接收端那些被该选项指定排除的文件
    --delete-after 传输结束以后再删除
    --ignore-errors 及时出现IO错误也进行删除
    --max-delete=NUM 最多删除NUM个文件
    --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
    --force 强制删除目录,即使不为空
    --numeric-ids 不将数字的用户和组ID匹配为用户名和组名
    --timeout=TIME IP超时时间,单位为秒
    -I, --ignore-times 不跳过那些有同样的时间和长度的文件
    --size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
    --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
    -T --temp-dir=DIR 在DIR中创建临时文件
    --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
    -P --progress 显示备份过程及传输进度

    -z, --compress 对备份的文件在传输时进行压缩处理
    --exclude=PATTERN 指定排除不需要传输的文件模式
    --include=PATTERN 指定不排除而需要传输的文件模式
    --exclude-from=FILE 排除FILE中指定模式的文件
    --include-from=FILE 不排除FILE指定模式匹配的文件
    --version 打印版本信息
    --address 绑定到特定的地址
    --config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
    --port=PORT 指定其他的rsync服务端口
    --blocking-io 对远程shell使用阻塞IO
    -stats 给出某些文件的传输状态
    --progress 在传输时现实传输过程
    --log-format=formAT 指定日志文件格式
    --password-file=FILE 从FILE中得到密码
    --bwlimit=KBPS 限制I/O带宽,KBytes per second
    -h, --help 显示帮助信息

     

    ----附2:rsync 常见错误及解决方法

    问题 @ERROR: chroot failed

    @ERROR: chroot failed rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]

    原因:服务器端的目录不存在或无权限。

    解决办法:

    创建目录并修正权限可解决问题。

    问题 skipping non-regular file

    receiving incremental file list

    skipping non-regular file "vendor/bin/doctrine"

    skipping non-regular file "vendor/bin/doctrine.php"

    sent 1990 bytes received 489209 bytes 327466.00 bytes/sec total size is 182515746 speedup is 371.57

    原因:source源文件有软链接。

    解决方法:修改为 rsync -va,其中 -a == -rlptgoD (no -H,-A,-X) 或者 rsync -rvltOD 也可以。

    解决后:

    receiving incremental file list

    vendor/bin/doctrine -> ../doctrine/orm/bin/doctrine

    vendor/bin/doctrine.php -> ../doctrine/orm/bin/doctrine.php

    sent 1998 bytes received 489279 bytes 327518.00 bytes/sec total size is 182515746 speedup is 371.51

    问题@ERROR: module is read only

    sending incremental file list

    ERROR: module is read only

    rsync error: syntax or usage error (code 1) at main.c(866) [receiver=3.0.6]

    rsync: read error: Connection reset by peer (104)

    rsync error: error in rsync protocol data stream (code 12) at io.c(759) [sender=3.0.6]

    原因:source源服务器端权限设置read为only只读权限。

    解决方法:read only = false

    问题@ERROR: auth failed on module tee

    @ERROR: auth failed on module tee rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.6]

    原因:服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。

    解决方法:提供正确的用户名密码解决此问题。

    问题 @ERROR: Unknown module 'tee_nonexists'

    @ERROR: Unknown module 'tee_nonexists' rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.6]

    原因:服务器不存在指定模块。

    解决方法:提供正确的模块名或在服务器端修改成你要的模块以解决问题。

    问题 password file must not be other-accessible

    password file must not be other-accessible

    continuing without password file

    Password:

    原因:这是因为rsyncd.pwd rsyncd.secrets的权限不对,应该设置为600。

    解决方法:chmod 600 rsyncd.pwd

    问题 rsync: failed to connect No route to host

    rsync: failed to connect to 192.168.1.10: No route to host (113) rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=3.0.6]

    原因:对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。

    解决方法:在iptables 中开放该端口,语句如下:

    iptables -I INPUT -p tcp –dport 873 -j ACCEPT

    rsync默认端口873,其实就是把tcp udp的873端口打开。

    问题 rsync error: error starting client-server protocol

    rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.6]

    原因:/etc/rsyncd.conf配置文件内容有错误。请正确核对配置文件。

    问题 rsync: chown "" failed: Invalid argument (22)

    rsync: chown "" failed: Invalid argument (22)

    原因:权限无法复制。去掉同步权限的参数即可。(这种情况多见于Linux向Windows的时候)

    问题 @ERROR: daemon security issue — contact admin

    @ERROR: daemon security issue — contact admin rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]

    原因:同步的目录里面有权限不足的软连接文件,需要服务器端的/etc/rsyncd.conf打开use chroot = yes。

    问题 rsync: read error: Connection reset by peer (104)

    rsync: read error: Connection reset by peer (104) rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receiver=3.0.6]

    解决:很大可能是服务器端没有开启 rsync 服务,开启服务。

    问题 @ERROR: failed to open lock file

    @ERROR: failed to open lock file rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.6]

    解决:配置文件 rsync.conf 中添加 lock file = rsyncd.lock 即可解决。

    部分代码贴图:

    2.1 搭建backup服务器。
    2.1.1 rsync的默认配置文件是/etc/rsyncd.conf,配置文件默认是空的,需要自己编辑
    
    [root@backup ~]# cat /etc/rsyncd.conf
    #rsync_config_____________________________start
    #created by oldboy 15:01 2007-6-5
    ##rsyncd.conf start##
    uid = rsync  
    gid = rsync   
    use chroot = no    
    max connections = 200      
    timeout = 300    
    pid file = /var/run/rsyncd.pid     
    lock file = /var/run/rsyncd.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]     
    path = /backup      
    [nfsbackup]
    path = /nfsbackup
    [luo]
    path = /luo
    ignore errors
    read only = false
    list = false
    hosts allow = 172.16.1.0/24
    #hosts deny = 0.0.0.0/32
    auth users = tang
    secrets file = /etc/tang
    #rsync_config________________________end
    
    2.1.2 添加用户rsync
    
    [root@backup ~]# useradd rsync -s /sbin/nologin -M
    [root@backup ~]# cat /etc/passwd|grep rsync
    rsync:x:501:501::/home/rsync:/sbin/nologin
    
    为什么用虚拟用户?
    应答:文件和进程都要满足属主的要求,文件和进程的存在一定是需要用户的,也是为了安全问题。
    2.1.3 根目录下添加backup目录
    
    [root@backup ~]# mkdir -p /backup/
    [root@backup ~]# chown -R rsync.rsync /backup/
    [root@backup ~]# ls -ld /backup/
    drwxr-xr-x 3 rsync rsync 20480 1月  18 09:51 /backup/
    
    2.1.4 创建rsync的密码配置文件,默认也是空的
    
    [root@backup ~]# cat /etc/rsync.password 
    rsync_backup:oldboy
    [root@backup ~]# chmod 600  /etc/rsync.password 
    [root@backup ~]# ls -l /etc/rsync.password 
    -rw-------. 1 root root 20 11月 29 01:14 /etc/rsync.password
    
    2.1.5 开启服务并开机自启动
    
    [root@backup ~]# tail -1 /etc/rc.local 
    /usr/bin/rsync --daemon

     

    展开全文
  • 1、针对贵公司重要数据备份混乱状况和领导提出备份全网数据的解决方案。 2、本地搭建备份服务器backup。 3、在服务器本地打包备份重要数据,然后rsync结合crond应用把全网数据统一备份到一个固定存储服务器。 4、...
    2017年Linux集群全网服务器数据备份方案实战课—4523人已学习 
    课程介绍    
    jpg
        项目方法思路: 1、针对贵公司重要数据备份混乱状况和领导提出备份全网数据的解决方案。 2、本地搭建备份服务器backup。 3、在服务器本地打包备份重要数据,然后rsync结合crond应用把全网数据统一备份到一个固定存储服务器。 4、在存储服务器上开发脚本检查备份完整性(很重要)并报警管理员(邮件)备份结果。 5、定期将IDC机房的数据备份公司的内部服务器,防止机房地震及火灾问题导致数据丢失。
    课程收益
        Linux运维数据备份企业级的项目实战案例,不需要任何改动几乎适合所有的企业直接应用。让每一个读者,掌握企业级备份方案实战。
    讲师介绍
        老男孩更多讲师课程
        老男孩教育创始人,具备15年一线实战运维经验及教学经验,是IT圈内Linux集群实战架构讲师之一。擅长大规模集群架构优化,擅长云计算、大数据优化,特别注重理论联系实际教学,讲课认真负责,思维严谨,授课形象生动,深入浅出,重视对学员的运维思想、习惯、总结、表达沟通等学习能力的培养,直接受益学生近万人!
    课程大纲
        1.【企业级项目方案】集群数据备份解决方案说明  8:29
        2.【企业级项目方案】集群数据备份方案项目需求分析  9:59
        3.【企业级项目方案】集群数据备份方案实战思路分析1  21:54
        4.【企业级项目方案】集群数据备份方案实战思路分析2  2:26
        5.【企业级项目方案】集群数据备份方案实战配置备份服务器  17:31
        6.【企业级项目方案】实现数据打包-备份-校验-推送-删除  46:22
        7.【企业级项目方案】服务器端脚本实现校验-删除-邮件报警  43:56
        8.【企业级项目方案】项目收尾-答疑-bug调整-总结  7:59
    大家可以点击【查看详情】查看我的课程
    展开全文
  • 使用rsync实现全网数据备份(模拟生产环境)+邮件告知 项目要求来源于网络:http://oldboy.blog.51cto.com/2561410/1856048 假定3台服务器主机名分别为web01、backup、nfs01,主机信息如下表: 服务器...

    使用rsync实现全网数据备份(模拟生产环境)+邮件告知

    项目要求来源于网络:http://oldboy.blog.51cto.com/2561410/1856048

    假定3台服务器主机名分别为web01backupnfs01,主机信息如下表:

    服务器说明

    内网IP

    主机名

    nginx web服务器

    192.168.1.222

    WEB-01

    NFS存储服务器

    192.168.1.233

    NFS-01

    rsync备份服务器

    192.168.1.244

    BACKUP

    要求:每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送备份服务器backup上备份保留(备份思路可以是先在本地按日期打包,然后再推到备份服务器backup上),NFS存储服务器同Web服务器,实际工作中就是全部的服务器。

    具体要求如下:

    1)所有服务器的备份目录必须都为/backup

    2)要备份的系统配置文件包括但不限于:

    a.定时任务服务的配置文件(/var/spool/cron/root)(适合webnfs服务器)。

    b.开机自启动的配置文件(/etc/rc.local)(适合webnfs服务器)。

    c.日常脚本的目录 (/server/scripts)(适合webnfs服务器)。

    d.防火墙iptables的配置文件(/etc/sysconfig/iptables)

    e.自己思考下还有什么需要备份呢?

    3)Web服务器站点目录假定为(/var/html/www)

    4)Web服务器A访问日志路径假定为(/app/logs

    5)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)

    6)备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本。

    7)备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。

    8*需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中:

    特别提示:本题在工作中是网站生产环境全网备份项目方案的一个小型模拟,很有意义。

    --准备好相应的机器(修改好机器名,关闭iptablesselinux,配置好yum源),并配置好相应的host解析,相同的时间(这里上台机子都已配置完成)

    --host 解析

    [root@backup ~]# vim /etc/hosts

    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

    192.168.1.222 web01

    192.168.1.233 nfs01

    192.168.1.244 backup #添加

    --使用ntpdate实现时间同步

    [root@nfs-01 ~]# yum install ntpdate

    [root@nfs-01 ~]# vim ntpdate.sh #脚本复制好用执行一遍让时间一致

    #!/bin/bash

    ntpdate time.nist.gov

    hwclock -w

    [root@nfs-01 nfs-01 ~]# crontab -e

    * * * * 1 /root/time.sh #每周同步一次

    1、搭建rsync服务端(blackup服务器)

    1.1.安装rsync

    [root@backup ~]# yum install rsync -y

    1.2.修改/etc/xinetd.d/rsync

    [root@backup ~]# vim /etc/xinetd.d/rsync

    1.3.配置/etc/rsyncd.conf(需要手动生成)

    [root@backup ~]# vim /etc/rsyncd.conf

    uid = rsync #rsync以什么用户启动

    gid = rsync #rsync 以什么组启动

    use chroot = no

    max connections = 200 #最大连接数

    timeout = 300 #超时时间

    pid file = /var/run/rsyncd.pid #pid文件路径

    lock file = /var/run/rsync.lock #指定lock文件

    log file = /var/log/syncd.log #日志文件

    [backup]

    path = /backup/ #back目录

    ignore errors #忽略错误

    read only = no #是否字符(若从客户端同步到服务器必须设为no)

    list = no #在否允许列表

    hosts allow = 192.168.1.0/24 #允许的ip

    auth users = rsync_backup #认证的用户,服务器必须存在这个系统用户

    secrets file = /etc/rsync.password #指定用户密码文件

    #以上配置文件需去除注释才能直接复制,否则报错

    1.4.创建用户,及目录

    [root@backup ~]# useradd -s /sbin/nologin -M rsync

    [root@blackup ~]# mkdir /backup

    [root@backup ~]# chown -R rsync.rsync /backup

    1.5.创建密码文件

    [root@backup ~]# vim /etc/rsync.password

    rsync_backup:123456 #虚拟用户及密码

    [root@backup ~]# chmod 600 /etc/rsync.password #权限必须为600

    1.6.启动,添加开机启动

    [root@backup ~]# rsync --daemon

    [root@backup ~]# ss -antup|grep rsync

    [root@backup ~]# echo "/usr/bin/rsync --daemon">>/etc/rc.local #开机启动

    2.1客户端配置(nfs01

    [root@nfs-01 ~]# yum install rsync -y

    [root@nfs-01 ~]# mkdir /backup/

    [root@nfs-01 ~]# touch /backup/1.txt #创建个测试文件

    [root@nfs-01 ~]# echo "123456" >/etc/rsync.password #创建密码文件

    [root@nfs-01 ~]# chmod 600 /etc/rsync.password

    [root@nfs-01 ~]# rsync -avz /backup/ rsync://rsync_backup@192.168.1.244/backup --password-file=/etc/rsync.password

    3.1客户端配置(web01

    [root@web-01 ~]# yum install rsync -y

    [root@web-01 ~]# mkdir /backup/

    [root@web-01 ~]# touch /backup/2.txt

    [root@web-01 ~]# echo "123456" >/etc/rsync.password

    [root@web-01 ~]# chmod 600 /etc/rsync.password

    [root@web-01 ~]# rsync -avz /backup/ rsync://rsync_backup@192.168.1.244/backup --password-file=/etc/rsync.password

    3.2模拟真实生产环境创建些文件

    [root@web-01 ~]# mkdir -p /var/html/www

    [root@web-01 ~]# touch /var/html/www/{1..10}

    [root@web-01 ~]# mkdir -p /app/logs

    [root@web-01 ~]# touch /app/logs/{1..g}

    3.3创建备份脚本

    [root@web-01 ~]# mkdir /server/scripts -p

    [root@web-01 ~]# vim /server/scripts/sh.sh

    #!/bin/bash

    export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    ip=$(ifconfig eth0|awk -F "[ :]+" 'NR==2{print $4}') #获取ip

    backpath=/backup/ #备份目录

    name=`hostname` #主机名

    mkdir -p $backpath/$ip

    #判断周一

    if [ $(date +%w) -eq 2 ];then

    date="$(date +%F -d "-1day")_week1"

    else

    date="$(date +%F -d "-1day")"

    fi

    cd / #切换到根目录并回车

    tar zcf $backpath/$ip/$name"_"${date}"_sysconfig".tar.gz var/spool/cron/ etc/rc.d/rc.local server/scripts/

    tar zcf $backpath/$ip/$name"_"${date}"_data".tar.gz var/html/www/ #注释掉,nfs服务器不需要备份web数据

    tar zcf $backpath/$ip/$name"_"${date}"_logs".tar.gz app/logs/ #注释掉,nfs服务器不需要备份web数据

    find $backpath -type f -name "*.tar.gz"|xargs md5sum > $backpath/$ip/flag_$ip"_"${date} #给文件打标记

    #备份到balackup服务器

    rsync -az $backpath rsync://rsync_backup@192.168.1.244/backup --password-file=/etc/rsync.password

    #删除7天谴数据

    find $backpath -type f -mtime +7|xargs rm -f

    [root@web-01 ~]# crontab -e

    00 00 * * * /bin/sh /server/scripts/sh.sh >/dev/null 2>&1 #添加

    3.4创建定时任务,并将脚本文件复制到其他服务器并修改(nfs01

    [root@nfs-01 ~]# mkdir -p /server/scripts/

    [root@nfs-01 ~]# vim /server/scripts/sh.sh

    #!/bin/bash

    export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    ip=$(ifconfig eth0|awk -F "[ :]+" 'NR==2{print $4}') #获取ip

    backpath=/backup/ #备份目录

    name=`hostname` #主机名

    mkdir -p $backpath/$ip

    #判断周一

    if [ $(date +%w) -eq 2 ];then

    date="$(date +%F -d "-1day")_week1"

    else

    date="$(date +%F -d "-1day")"

    fi

    cd / #切换到根目录并回车

    tar zcf $backpath/$ip/$name"_"${date}"_sysconfig".tar.gz var/spool/cron/ etc/rc.d/rc.local server/scripts/

    #tar zcf $backpath/$ip/$name"_"${date}"_data".tar.gz var/html/www/ #注释掉,nfs服务器不需要备份web数据

    #tar zcf $backpath/$ip/$name"_"${date}"_logs".tar.gz app/logs/ #注释掉,nfs服务器不需要备份web数据

    find $backpath -type f -name "*.tar.gz"|xargs md5sum > $backpath/$ip/flag_$ip"_"${date} #给文件打标记

    #备份到balackup服务器

    rsync -az $backpath rsync://rsync_backup@192.168.1.244/backup --password-file=/etc/rsync.password

    #删除7天谴数据

    find $backpath -type f -mtime +7|xargs rm -f

    [root@nfs-01 ~]# crontab -e

    00 00 * * * /bin/sh /server/scripts/sh.sh >/dev/null 2>&1 #添加

    设置个就近的时间后查看nfs-01web-01,能否正常推数据

    [root@backup ~]# ls /backup/

    4mailx使用外部的SMTP来实现blackup服务器邮件报警

    mailx是一个小型的邮件发送程序

    具体步骤如下:

    4.1、安装

    [root@blackup ~]# yum install mailx

    4.2、编辑配置文件

    [root@blackup ~]# vim /etc/mail.rc #添加如下内容

    set from=xxxx@126.com

    set smtp=smtp.126.com

    set smtp-auth-user=xx@126.com

    set smtp-auth-password=xxx

    set smtp-auth=login

    ---说明

    from:对方收到邮件时显示的发件人

    smtp:指定第三方发邮件的smtp服务器地址

    set smtp-auth-user:第三方发邮件的用户名

    set smtp-auth-password:用户名对应的密码,有些邮箱需要填授权吗

    smtp-authSMTP的认证方式,默认是login,也可以改成CRAM-MD5PLAIN方式

    4.3、测试

    [root@001 ~]# init 6

    [root@001 ~]# mail -s "hesaucaq" xx@qq.com < /etc/passwd

    [root@001 ~]# echo "测试邮件" | mail -s "测试" xxxxx@qq.com

    转自:http://www.cnblogs.com/imweihao/p/7250500.html

    以上已经实现了发邮件功能!!!

    4.4、在(backup)编辑脚本实现报警

    [root@blackup ~]# mkdir -p /server/scripts/

    [root@blackup ~]# cd !$

    脚本如下:

    #!/bin/bash

    export LANG=en

    ip1="192.168.1.222"

    ip2="192.168.1.233" #机器增加需加更多的ip

    logpath=/tmp/flag.log #日志文件地址,后面汇总到这个文件来发送

    #判断周一

    if [ $(date +%w) -eq 2 ];then

    date="$(date +%F -d "-1day")_week1"

    else

    date="$(date +%F -d "-1day")"

    fi

    find /backup/$ip1 -name flag_$ip1"_"${date}|xargs md5sum -c &> $logpath

    find /backup/$ip2 -name flag_$ip2"_"${date}|xargs md5sum -c &>> $logpath #需更改成ip2和追加

    find /backup/$ip1 -type f -name "*.tar.gz" -a ! -name "*week*" -mtime +180|xargs rm -f

    find /backup/$ip2 -type f -name "*.tar.gz" -a ! -name "*week*" -mtime +180|xargs rm -f #需要更改成ip2

    mail -s "backup`date`" imweihao@126.com < $logpath #汇总到一个文件发送

    [root@blackup scripts]# crontab -e

    10 00 * * * /bin/sh /server/scripts/mail.sh >/dev/null 2>&1 #之间最好错开,如果数据量大的话可能需要时间

    测试:

    设置两个时间点,周一和周二的日期看是否正常,有些时候太会收不到邮件,那是因为被网易的垃圾邮件机制屏蔽了,一会再试,或者发到自己邮箱!

    ---以上已实现多机数据备份及邮件告警如果需要增加机器或者增加备份的数据,在脚本中添加即可

    ---附1:Rsync的命令格式可以为以下六种:

    Rsync的命令格式可以为以下六种:
    rsync [OPTION]... SRC DEST
    rsync [OPTION]... SRC [USER@]HOST:DEST
    rsync [OPTION]... [USER@]HOST:SRC DEST
    rsync [OPTION]... [USER@]HOST::SRC DEST
    rsync [OPTION]... SRC [USER@]HOST::DEST
    rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
    对应于以上六种命令格式,rsync有六种不同的工作模式:
    对应于以上六种命令格式,rsync有六种不同的工作模式:
      1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。如:rsync -a /data /backup
      2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。如:rsync -avz *.c foo:src
      3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。如:rsync -avz foo:src/bar /data
      4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。如:rsync -avzP root@172.16.78.192::www /databack
      5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。如:rsync -avzP /databack root@172.16.78.192::www
      6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www
    rsync参数的具体解释如下:

    正常情况下会使用 -avz相当与-vzrtopgD1,表示同步时文件和目录属性不变

    -v, --verbose 详细模式输出
    -q, --quiet 精简输出模式
    -c, --checksum 打开校验开关,强制对文件传输进行校验
    -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
    -r, --recursive 对子目录以递归模式处理
    -R, --relative 使用相对路径信息
    -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
    --backup-dir 将备份文件(如~filename)存放在在目录下。
    -suffix=SUFFIX 定义备份文件前缀
    -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
    -l, --links 保留软链接
    -L, --copy-links 想对待常规文件一样处理软链结
    --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
    --safe-links 忽略指向SRC路径目录树以外的链结
    -H, --hard-links 保留硬链结
    -p, --perms 保持文件权限
    -o, --owner 保持文件属主信息
    -g, --group 保持文件属组信息
    -D, --devices 保持设备文件信息
    -t, --times 保持文件时间信息
    -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
    -n, --dry-run现实哪些文件将被传输
    -W, --whole-file 拷贝文件,不进行增量检测
    -x, --one-file-system 不要跨越文件系统边界
    -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
    -e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
    --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
    -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
    --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
    --delete 删除那些DST中SRC没有的文件
    --delete-excluded 同样删除接收端那些被该选项指定排除的文件
    --delete-after 传输结束以后再删除
    --ignore-errors 及时出现IO错误也进行删除
    --max-delete=NUM 最多删除NUM个文件
    --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
    --force 强制删除目录,即使不为空
    --numeric-ids 不将数字的用户和组ID匹配为用户名和组名
    --timeout=TIME IP超时时间,单位为秒
    -I, --ignore-times 不跳过那些有同样的时间和长度的文件
    --size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
    --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
    -T --temp-dir=DIR 在DIR中创建临时文件
    --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
    -P --progress 显示备份过程及传输进度

    -z, --compress 对备份的文件在传输时进行压缩处理
    --exclude=PATTERN 指定排除不需要传输的文件模式
    --include=PATTERN 指定不排除而需要传输的文件模式
    --exclude-from=FILE 排除FILE中指定模式的文件
    --include-from=FILE 不排除FILE指定模式匹配的文件
    --version 打印版本信息
    --address 绑定到特定的地址
    --config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
    --port=PORT 指定其他的rsync服务端口
    --blocking-io 对远程shell使用阻塞IO
    -stats 给出某些文件的传输状态
    --progress 在传输时现实传输过程
    --log-format=formAT 指定日志文件格式
    --password-file=FILE 从FILE中得到密码
    --bwlimit=KBPS 限制I/O带宽,KBytes per second
    -h, --help 显示帮助信息

     

    ----附2:rsync 常见错误及解决方法

    问题 @ERROR: chroot failed

    @ERROR: chroot failed rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]

    原因:服务器端的目录不存在或无权限。

    解决办法:

    创建目录并修正权限可解决问题。

    问题 skipping non-regular file

    receiving incremental file list

    skipping non-regular file "vendor/bin/doctrine"

    skipping non-regular file "vendor/bin/doctrine.php"

    sent 1990 bytes received 489209 bytes 327466.00 bytes/sec total size is 182515746 speedup is 371.57

    原因:source源文件有软链接。

    解决方法:修改为 rsync -va,其中 -a == -rlptgoD (no -H,-A,-X) 或者 rsync -rvltOD 也可以。

    解决后:

    receiving incremental file list

    vendor/bin/doctrine -> ../doctrine/orm/bin/doctrine

    vendor/bin/doctrine.php -> ../doctrine/orm/bin/doctrine.php

    sent 1998 bytes received 489279 bytes 327518.00 bytes/sec total size is 182515746 speedup is 371.51

    问题@ERROR: module is read only

    sending incremental file list

    ERROR: module is read only

    rsync error: syntax or usage error (code 1) at main.c(866) [receiver=3.0.6]

    rsync: read error: Connection reset by peer (104)

    rsync error: error in rsync protocol data stream (code 12) at io.c(759) [sender=3.0.6]

    原因:source源服务器端权限设置read为only只读权限。

    解决方法:read only = false

    问题@ERROR: auth failed on module tee

    @ERROR: auth failed on module tee rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.6]

    原因:服务器端该模块(tee)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。

    解决方法:提供正确的用户名密码解决此问题。

    问题 @ERROR: Unknown module 'tee_nonexists'

    @ERROR: Unknown module 'tee_nonexists' rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.6]

    原因:服务器不存在指定模块。

    解决方法:提供正确的模块名或在服务器端修改成你要的模块以解决问题。

    问题 password file must not be other-accessible

    password file must not be other-accessible

    continuing without password file

    Password:

    原因:这是因为rsyncd.pwd rsyncd.secrets的权限不对,应该设置为600。

    解决方法:chmod 600 rsyncd.pwd

    问题 rsync: failed to connect No route to host

    rsync: failed to connect to 192.168.1.10: No route to host (113) rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=3.0.6]

    原因:对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。

    解决方法:在iptables 中开放该端口,语句如下:

    iptables -I INPUT -p tcp –dport 873 -j ACCEPT

    rsync默认端口873,其实就是把tcp udp的873端口打开。

    问题 rsync error: error starting client-server protocol

    rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.6]

    原因:/etc/rsyncd.conf配置文件内容有错误。请正确核对配置文件。

    问题 rsync: chown "" failed: Invalid argument (22)

    rsync: chown "" failed: Invalid argument (22)

    原因:权限无法复制。去掉同步权限的参数即可。(这种情况多见于Linux向Windows的时候)

    问题 @ERROR: daemon security issue — contact admin

    @ERROR: daemon security issue — contact admin rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]

    原因:同步的目录里面有权限不足的软连接文件,需要服务器端的/etc/rsyncd.conf打开use chroot = yes。

    问题 rsync: read error: Connection reset by peer (104)

    rsync: read error: Connection reset by peer (104) rsync error: error in rsync protocol data stream (code 12) at io.c(794) [receiver=3.0.6]

    解决:很大可能是服务器端没有开启 rsync 服务,开启服务。

    问题 @ERROR: failed to open lock file

    @ERROR: failed to open lock file rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.6]

    解决:配置文件 rsync.conf 中添加 lock file = rsyncd.lock 即可解决。

     

    转载于:https://www.cnblogs.com/imweihao/p/7252624.html

    展开全文
  • 全网服务器数据备份解决方案 全网服务器数据备份解决方案 一、需求描述 已知3台服务器主机名分别为:web01,backup,nfs01,主机信息如下表: 操作系统 服务器角色 IP地址 ...

    全网服务器数据备份解决方案

     

    一、需求描述

    已知3台服务器主机名分别为:web01,backup,nfs01,主机信息如下表:

    操作系统

    服务器角色

    IP地址

    备注

    CentOS release 6.10 (Final)

    NFS客户端(nfs-server)

    内网172.16.1.31/24  外网10.0.0.31/24

     

    CentOS release 6.10 (Final)

    NFS服务端(backup)

    内网172.16.1.41/24  外网10.0.0.41/24

     

    CentOS release 6.10 (Final)

    NFS客户端(web01)

    内网172.16.1.8/24  外网10.0.0.8/24

     

    每天晚上00点整在Web服务器       上打包备份,网站程序目录及访问日志通过rsync命令推送备份服务器backup上备份保留。(备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)

    具体要求如下:

    1)web服务器和备份服务器的备份目录都必须为/backup

    2)要备份的系统配置文件包括但不限:

       a.定时任务服务的配置文件(/var/spool/cron/root)

       b.开机自启动的配置文件(/etc/rc.local)

       c.日常脚本的目录(/server/scripts)

       d.防火墙iptables的配置文件(/etc/sysconfig/iptables)

    3)web服务器站点目录为(/application/nginx/html/blog)

    4)Web服务器A访问日志的路径为(/application/nginx/logs)

    5)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)

    6)备份服务器上,保留最近7天的备份数据,同时保留6个月内每周一的所有数据。

    7)备份服务器上要安装备份数据服务器的内网IP为目录保存备份,备份的文件安装时间名字保存。

    8)需要确保备份的数据尽量完整争取,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员的邮箱中。

    二、实现过程

    实施前先完成rsync --deamon相关配置参考,rsync+sersync实现数据文件实时同步

    完成用系统默认mail服务实现邮件发送相关配置

    1、服务端测试(集群中的备份服务器)

    [root@backup 10.0.0.8]# ps -ef |grep rsync

    root       1351      1  0 Sep01 ?        00:00:00 rsync --daemon

    [root@backup 10.0.0.8]# netstat -lntup|grep rsync

    tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      1351/rsync         

    tcp        0      0 :::873                      :::*                        LISTEN      1351/rsync         

    [root@backup 10.0.0.8]# telnet localhost 873

    Trying ::1...

    Connected to localhost.

    Escape character is '^]'.

    @RSYNCD: 30.0

    2、客户端测试服务(指集群中有备份需求的服务器)

    [root@nfs01 backup]# telnet 172.16.1.41 873

    Trying 172.16.1.41...

    Connected to 172.16.1.41.

    Escape character is '^]'.

    @RSYNCD: 30.0

    开发脚本,实现打包,备份,推送,校验,删除

    [root@web01 backup]# vim /server/scripts/backup.sh

    IP=$(ifconfig|awk -F"[ :]+" 'NR==2{print $4}')

    Path=/backup

    if [ $(date +%w) -eq 6 ]

    then

            Time="week_$(date +%F_%w)"

    else

            Time="$(date +%F)"

    fi

    LANG=en

    mkdir -p $Path/$IP/$Time/

    cd / &&\

    /bin/tar zcfh $Path/$IP/$Time/conf_back_$Time.tar.gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables &&\

    /bin/tar zcfh $Path/$IP/$Time/script_back_$Time.tar.gz server/scripts &&\

    md5sum /backup/$IP/$Time/*.tar.gz>$Path/$IP/$Time/flag_$Time.log

    rsync -avz $Path/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password --bwlimit=10

    find /backup -type f -mtime +7|xargs rm -f

    添加backup.sh脚本到定时任务

    [root@web01 backup]# crontab -l

    00 00 * * * /bin/sh /server/scripts/backup.sh >/dev/null 2>&1  完成客户端的定时任务推送工作

    3、服务端配置

    开发脚本,实现校验,删除,发送邮件

    [root@backup 10.0.0.8]# cat /server/scripts/check_and_del.sh

    #check mdk5 flag and del +180day !name=*week_*_6* for moudle [backuup]

    #!/usr/bin/sh

    Path=/backup

    IP=$(ifconfig|awk -F"[ :]+" 'NR==2{print $4}')

    if [ $(date +%w) -eq 6 ]

    then

            Time="week_$(date +%F_%w)"

    else

            Time="$(date +%F)"

    fi

    LANG=en

     

    find $Path -type f -name "flag_${Time}.log"|xargs md5sum -c>>$Path/result_${Time}.report

    mail -s ${Time}'backup check report' yinxian*****@126.com<$Path/result_${Time}.report

    find $Path -type f ! -name '*week_*_6.tar.gz' -mtime +180|xargs rm -f

    添加定时任务,每天上午6点发送邮箱

    [root@backup scripts]# crontab -l

    * * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

    * * * * * /bin/bash  /server/scripts/check_and_del.sh >/dev/null 2>&1

    调试排错总结

    发现的问题,时间同步会使rsync数据同步卡住

    脚本排错可以在脚本加v,参数

    查询服务器各项性能,CPU利用率,内存使用率

    [root@backup backup]# tcpdump host 10.0.0.8 

    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

    listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

    16:47:33.938222 IP 10.0.0.1.64619 > 10.0.0.8.ssh: Flags [P.], seq 292073317:292073369, ack 3766568025, win 258, options [nop,nop,TS val 19117577 ecr 91556660], length 52

     

    posted on 2019-04-22 18:19 justlikeit 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/justlikeit/p/10751913.html

    展开全文
  • NAS存储与数据备份方案数据备份部分是整个网络系统的关键点,任何原因造成数据丢失都将带来无法估量的损失,因为这些数据涉及到公司各应用系统(包括缺陷、动态成本、点检、物质仓储、大宗物料、生产运营等系统),...
  • 很多时候,因各种各样的问题而导致数据丢失损坏的事件时刻发生,数据的安全是很多企业用户担心的问题,经常为此忧虑担心。其实不用担心,只要做好数据...备份的地址不要到服务器里面,万一服务器出问题比如硬盘坏了...
  • 1.1基本备份要求 已知3台服务器主机名分别为:web01,backup,nfs01,主机信息如下表: 服务器说明 外网IP 内网IP 主机名 Nginx web服务器 10.0.0.8/24 172.16.1.8/24 ...
  • 公司机房(IDC数据中心)搬迁过程中,机房服务器、网络等设备的搬迁是一项非常重要的工作,涉及多类不同服务器设备,包含单位核心数据备份数据、应用等诸多核心资产,是一项系统性工程。为规范性、科学性指导企业...
  • 教程名称: 经典的服务器数据备份技术白皮书【】08年服务器版块及存储备份版块基本知识电子书【】HP服务器双机热备方案【】IBM X3650服务器 DS3200 SAS 磁盘柜双机热备方案【】linux下的服务器双机热备份【】NAS与...
  • 现代IT技术认为,一个成功系统中数据及作业的重要性已远超过硬件设备本身,在一套完善的...双机容错系统是由IBM公司提出的全套集群解决方案,结合IBM服务器产品的安全可靠性和集群技术的优点,为用户提供一个完善的系统。
  • 1.针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案。 2.通过本地打包备份,然后rsync结合crond应用把全网数据统一备份到一个固定存储服务器,然后在存储服务器上通过脚本检查备份完整性并报警管理员...
  • 在信息化建设飞速的今天,网络的普及与不断提速使得信息的接收变得异常方便,企业与个人...提到如何确保数据安全,大部份人都会想到除了做好必要的防范措施以外,有效的数据备份必不可少,数据备份已成为提升数据安...
  • 方案以一天一次的频率,在每天凌晨2:00备份生产环境数据库至文件服务器。为保证备份文件不过多占用文件服务器空间,备份文件以tgz压缩包格式保存且只保存7天的备份文件。另外每次备份都保存备份日志,一旦出现备份不...
  • RDB数据备份方案

    2017-11-30 15:14:06
    数据备份方案 (1)写crontab定时调度脚本去做数据备份 (2)每小时都copy一份rdb的备份,到一个目录中去,仅仅保留最近48小时的备份 (3)每天都保留一份当日的rdb的备份,到一个目录中去,仅仅保留最近1个月的...
  • 从信息化安全的角度,服务器、应用系统、数据一定是企业、组织最为核心的IT支撑体系,而服务器硬件故障、软件故障、病毒、人为破坏或误操作等均会给学校造成难以估量的损失。服务器的保护成本一直居高不下,对于少量...
  • 场景是这样的,新接手的项目,在国外的服务器有10多台,国内的几台,部署要求在ant代码前必须全备份上一个版本,早上登录了国内的几台机器操作后,一阵烦躁,看到四川人民在受苦受难,自己的家人也遭受了几次余震,...
  • 服务器备份方案

    千次阅读 2008-06-21 23:49:00
    服务器备份方案数据备份越来越为人们所重视时,如何备份就成了人们关注的问题。随着数据量的逐渐增大,一个不容忽视的问题显现出来:备份所需要的时间越来越长,它对服务器资源的占用也越来越多。当企业需要备份...
  • 基于多用户和数据隐私的考虑,提出了个人数据备份系统解决方案。它利用网络存储设备具有的大容量、高可靠性、高安全性特点,为用户提供一定容量的空间来保存个人数据,同时利用软件的权限管理很好地实现个人数据的...
  • 航天联志服务器存储备份解决方案针对实际业务、文档数据存储体系进行了一套完整的规划和设计。整个方案主要以安全性、高性能、高扩展性三方面为基础,并依据此原则分析的业务数据流程和组织管理,设计技术方案,指导...
  • 备份全网服务器数据生产架构方案案例模型 某公司里有一台web服务器,里面的数据很重要,但是始果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份,要求如下: 每天晚上00点整在...
  • 几种常见的数据备份方案

    万次阅读 2014-10-31 14:41:40
    最近一直在使用木浪科技的多备份进行网站的备份,这是一款全新的互联网产品,感觉在便捷性和有效性方面都好于传统的数据备份方案。向大家推荐。 今天,我们不了多备份,而是想和大家简单聊聊常见的数据备份方案。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,680
精华内容 672
关键字:

服务器数据备份方案