zoukankan      html  css  js  c++  java
  • [svc]rsync简单部署

    安装rsync服务端-backup服务器

    yum install rsync -y
    
    useradd rsync -s /sbin/nologin -M
    chown -R rsync.rsync /data
    
    cat >/etc/rsyncd.conf<<EOF
    uid = rsync
    gid = rsync
    use chroot = no
    max connections = 100
    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 = 192.168.2.0/24
    hosts deny = 0.0.0.0/32
    auth users = rsync_backup
    secrets file = /etc/rsync.password
    
    [data]
    path=/data
    EOF
    
    echo "rsync_backup:123456" > /etc/rsync.password
    chmod 600 /etc/rsync.password
    
    mkdir /data
    chown  -R rsync.rsync /data
    
    rsync --daemon #启动
    rsync --daemon --address=192.168.2.11
    
    pkill rsync
    kill –USR2 `cat /var/run/rsyncd.pid` #优雅关闭
    kill -HUP `cat /var/run/rsyncd.pid`
    
    - 客户端: 执行推拉操作
    yum install rsync -y
    echo "123456" >/etc/rsync.password
    chmod 600 /etc/rsync.password
    
    
    rsync -avz rsync_backup@192.168.2.11::data /data #会提示密码
                                          模块名
    
    - 拉取
    rsync -avz rsync_backup@192.168.2.11::data /data --password-file /etc/rsync.password
    
    - 推送(到备份服务器-rsync服务端)
    rsync -avz /data rsync_backup@192.168.2.11::data --password-file /etc/rsync.password
    
    - 排除单个文件
    rsync -avz /data/ --exclude=a.log rsync_backup@192.168.2.11::data --password-file=/etc/rsync.password
    
    - 排除多个文件
    rsync -avz /data/ --exclude={1.md,2.md,3.md} rsync_backup@192.168.2.11::data --password-file=/etc/rsync.password
    
    rsync -avz /data1/ --exclude={a..g}.txt rsync_backup@192.168.2.11::data --password-file=/etc/rsync.password
    
    --exclude-from
    [root@sshserver2 /]# cat paichu.log 
    1
    2
    
    rsync -avz /data/ --exclude-from=paichu.log rsync_backup@192.168.2.11::data  --password-file=/etc/rsync.password
    
    man rsyncd.conf # 查看配置选项
    man rsync       # 查看启动参数
    [root@B-BackUP ~]# netstat -ntulp |grep rsync
    tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      1637/rsync          
    tcp        0      0 :::873                      :::*                        LISTEN      1637/rsync
    

    配置小结

    rsync server:

    1,vim /etc/rsyncd.conf(用户rsync, 模块,目录,非系统虚拟用户 及密码文件)
    2,创建共享目录 /data
    3,创建rsync用户并授权访问/data
    4,创建密码文件,复制配置文件里的路径,然后添加密码内容
      内容:虚拟用户名:密码
    5,密码文件权限 600
    6,rsync –daemon  然后放入 /etc/rc.local
    7,tail /var/log/rsyncd.log  #看日志
    

    rsync客户端-执行推拉操作

    1,密码文件和服务端没任何关系. --password-file=/etc/rsync.password,内容仅包含密码
    2, /etc/rsync.password 600
    

    rsync.conf配置说明

    参考

    rsyncd.conf参数 参数说明
    uid=rsync rsync使用的用户。
    gid=rsync rsync使用的用户组(用户所在的组)
    use chroot=no 如果为true,daemon会在客户端传输文件前“chroot to the path”。这是一种安全配置,因为我们大多数都在内网,所以不配也没关系
    max connections=200 设置最大连接数,默认0,意思无限制,负值为关闭这个模块
    timeout=400 默认为0,表示no timeout,建议300-600(5-10分钟)
    pid file rsync daemon启动后将其进程pid写入此文件。如果这个文件存在,rsync不会覆盖该文件,而是会终止
    lock file 指定lock文件用来支持“max connections”参数,使得总连接数不会超过限制
    log file 不设或者设置错误,rsync会使用rsyslog输出相关日志信息
    ignore errors 忽略I/O错误
    read only=false 指定客户端是否可以上传文件,默认对所有模块为true
    list=false 是否允许客户端可以查看可用模块列表,默认为可以
    hosts allow 指定可以联系的客户端主机名或和ip地址或地址段,默认情况没有此参数,即都可以连接
    hosts deny 指定不可以联系的客户端主机名或ip地址或地址段,默认情况没有此参数,即都可以连接
    auth users 指定以空格或逗号分隔的用户可以使用哪些模块,用户不需要在本地系统中存在。默认为所有用户无密码访问
    secrets file 指定用户名和密码存放的文件,格式;用户名;密码,密码不超过8位
    [backup] 这里就是模块名称,需用中括号扩起来,起名称没有特殊要求,但最好是有意义的名称,便于以后维护
    path 这个模块中,daemon使用的文件系统或目录,目录的权限要注意和配置文件中的权限一致,否则会遇到读写的问题

    排错

    1,防火墙和selinux
    2,/var/log/rsyncd.log
    3,整个部署流程整体考虑排查
    4,操作习惯

    1,部署流程熟练
    2,原理理解
    3,学会看日志,命令行输入rsync命令.日志输入/var/log/rsyncd.log
    会部署 会原理 会看日志

    服务端没目录
    服务端目录没授权
    服务器rsync.password 权限问题
    No route 防火墙问题

    无差异备份:企业里要求数据一模一样

    rsync推送企业工作常见:
    --delete有风险: 一般不要用
    本地有啥,远端就有啥,本地没有的远端有也要删除.远端的目录数据可能丢失.

    rsync -avz --delete rsync_backup@192.168.2.11::data /data1/ --password-file=/etc/rsync.password
    

    --delete # 除非实在没办法在用,一般别用.
    万一要用:
    推送: 先备份远端,然后再执行
    拉取: 先备份本地然后再执行

    全网备份引子

    [root@C-NFS scripts]# cat back.sh 
    #bin/sh
    dir="`ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'`_$(date +%F)"
    mkdir /backup/$dir_ -p &&
    /bin/cp /var/spool/cron/root /backup/$dir/cron_root_$(date +%F) &&
    /bin/cp /etc/rc.local /backup/$dir/rc.local_$(date +%F) &&
    rsync -az /backup/ rsync_backup@192.168.2.11::backup/ --password-file=/etc/rsync.password
    
    - 追加定时任务
    [root@C-NFS scripts]# crontab –e 
    #############
    00 01 * * *  /bin/sh /root/shell/back.sh >/dev/null 2>&1
    
    说明:
    1,和别的时间错开,不一定晚上12点.
    2,这样就实现全网备份
    3,如同黄雀一样,rsyncbackup服务器后还有rsyncserver来备份他自己的数据,根据公司规模来.
    

    企业面试题:
    老板让备份 web server本地保留7天备份 backup服务器180天.

    为了避免搭建rsync服务端

    1.打包 scp过去
    2,解压 rsync -a src/ dst/

    rsync -a src/ dst/  ## 同步目录一定要加斜线
    
    rsync -a src dst # 是错误的
    
  • 相关阅读:
    USACO Name That Number
    USACO Milking Cows
    hdu 1540 Tunnel Warfare (线段树维护左右最长连续区间)
    Contest 1
    JNU周练1026
    树形DP
    Python和C扩展实现方法
    Python模拟C++输出流
    SkipList算法实现
    Python 迭代dict 效率
  • 原文地址:https://www.cnblogs.com/iiiiher/p/8586488.html
Copyright © 2011-2022 走看看