rsync 备份笔记

    前言:常帅撤了!常帅撤了!常帅撤了!  哎,我的靠山没了, 接手公司服务器,之前一直没与服务器打过交道,虽然之前也买过不少vps,可压根就没去搭理它。最近公司将西部的主机服务全部迁到青云了,然后看到他之前弄的rsync备份服务器的数据库和图片文件功能。照着步骤也弄了一遍,做个笔记。



  1. 服务器配置
  2. http://blog.sina.com.cn/s/blog_5eda2dda01015f78.html
    http://www.cnblogs.com/itech/archive/2010/06/13/1757952.html 
    
    # /etc/rsyncd.conf
    uid = nobody   #传输文件守护进程拥有的权限
    gid = nobody   #传输文件守护进程拥有的权限
    use chroot = no  #true:传输文件以前首先chroot到path参数所指定的目录下,需要roots权限
    max connections = 10 
    pid file = /var/run/rsyncd.pid   #指定rsync的pid文件
    lock file = /var/run/rsync.lock  #指定支持max connections参数的锁文件
    log file = /var/log/rsyncd.log  #指定rsync的日志文件,而不将日志发送给syslog
    hosts allow = *   #该选项指定哪些IP的客户允许连接该模块
    [files]
    path = xxxx需要备份的路径
    comment = this is a back files 
    read only = true      #该选项设定是否允许客户上载文件
    list = yes            #该选项设定当客户请求可以使用的模块列表
    auth users = #连接上来的用户名   #只有这些用户才允许连接该模块,与系统用户关系
    secrets file = #连接的帐号和密码文件
    
    [dbbak]
    path = xxxx需要备份的数据库文件路径
    comment = this is a back files
    read only = true
    list = yes
    auth users = #连接上来的用户名
  3. 备份数据库sh
  4. #!/bin/bash
    # 以下配置信息请自己修改
    mysql_user= #MySQL备份用户
    mysql_password= #MySQL备份用户的密码
    mysql_host=#数据库服务器IP
    mysql_port=#数据库服务端口
    mysql_charset="utf8" #MySQL编码
    backup_db_arr=("db1" "db2") #要备份的数据库名称,多个用空格分开隔开 如("db1" "db                                                                                                                                                             2" "db3")
    backup_location="xxxxx"  #备份数据存放位置,末尾请不要带"/",此项可以保持默                                                                                                                                                             认,程序会自动创建文件夹
    expire_backup_delete="ON" #是否开启过期备份删除 ON为开启 OFF为关闭
    expire_days=7 #过期时间天数 默认为三天,此项只有在expire_backup_delete开启时有效
    # 本行开始以下不需要修改
    backup_time=`date +%Y%m%d%H%M`  #定义备份详细时间
    backup_Ymd=`date +%Y-%m-%d` #定义备份目录中的年月日时间
    backup_3ago=`date -d '3 days ago' +%Y-%m-%d` #3天之前的日期
    backup_dir=$backup_location/$backup_Ymd  #备份文件夹全路径
    welcome_msg="Welcome to use MySQL backup tools!" #欢迎语
    # 连接到mysql数据库,无法连接则备份退出
    /usr/bin/mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password <                                                                                                                                                              $backup_dir/$dbname-$backup_time.sql.gz`
                            flag=`echo $?`
                            if [ $flag == "0" ];then
                                    echo "database $dbname success backup to $backup                                                                                                                                                             _dir/$dbname-$backup_time.sql.gz"
                            else
                                    echo "database $dbname backup fail!"
                            fi
                    done
            else
                    echo "ERROR:No database to backup! backup stop"
                    exit
            fi
            # 如果开启了删除过期备份,则进行删除操作
            if [ "$expire_backup_delete" == "ON" -a  "$backup_location" != "" ];then
                     #`find $backup_location/ -type d -o -type f -ctime +$expire_day                                                                                                                                                             s -exec rm -rf {} \;`
                     `find $backup_location/ -type d -mtime +$expire_days | xargs rm                                                                                                                                                              -rf`
                     echo "Expired backup data delete complete!"
            fi
            echo "All database backup success! Thank you!"
            exit
    fi

  5. 客户端连接
  6.     
    *  *  *  *  *  command
    分 时 日 月 周 命令
    第1列表示分钟1~59 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要运行的命令
    
    
    v:详细模式输出
    r:对子目录以递归模式处理
    t:保持文件时间信息
    o:保持文件属主信息
    p:保持文件权限
    g:保持文件属组信息
    --progress:显示备份过程
    --delete:删除那些DST中SRC没有的文件
    backup:服务器指定的用户名
    @IP: 服务器IP
    ::PATH: 服务器配置的path名称
    /home/backup/files: 本地保存的路径.
    --password-file:备份密码(服务端指定)
    
    0 2 * * * /usr/bin/rsync -vrtopg --progress --delete username@ip:path /home/backup/files --password-file=password > /dev/null 2>&1 &
    #password  ,必须600权限
    xxx密码(服务端指定)

  7. 总结:
  8.    先到服务器配置好同步的目录,用户名,密码
  9.    客户端通过IP(域名),用户名,密码连接
  10.    去告诉林吉,我又学会了一招,被他鄙视,说我现在才用。。尼玛。。。