• 搭建中小规模集群之rsync数据同步备份


    NFS重要问题

    1、有关NFS客户端普通用户写NFS的问题。

    1)为什么要普通用户写NFS。

    2)exports加all_squash。

    Rsync介绍

    什么是Rsync?

    Rsync是一款开源的、快速的、多功能的、可实现全量即增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix、linux、windows等多种操作系统平台。

    Rsync简介

    Rsync英文全称Remote synchronization。从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似ssh带的scp命令,但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,Rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令,但同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。

    利用rsync还可以实现删除文件和目录的功能,又相当于rm命令。

    一个rsync相当于scp、cp、rm,但是还优于他们每一个命令。

    Rsync的特性

    1、支持拷贝特殊文件如链接文件、设备等。

    2、可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。

    3、可以做到保持原文件或目录的权限、时间、软硬链接、属主、属组等所有属性均不改变-p。

    4、可以实现增量同步,即只同步变化的数据,因此数据传输效率很高。

    5、可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)。

    6、可以通过socket(进程方式)传输文件和数据(服务端和客户端)。

    7、支持匿名或认证的进程模式传输,可以实现方便安全的进行数据备份及镜像。

    Rsync的企业工作场景说明

    两台服务器之间数据做定时同步cron+rsync

    全网服务器数据备份

    rsync结合inotify的功能做实时的数据同步

    Rsync的工作方式

    rsync命令是客户端命令。

    Rsync大致使用三种主要的传输数据的方式。

    1、单个主机本地之间的数据传输(此时类似cp命令的功能)。

    2、借助rcp、ssh等通道来传输数据(此时类似scp命令的功能)。

    3、以守护进程(socket)的方式传输数据(rsync自身的重要功能)。

    1. [root@server ~]# rsync -avz /etc/hosts /tmp/ #cp
    2. sending incremental file list
    3. hosts
    4.  
    5. sent 124 bytes received 31 bytes 310.00 bytes/sec
    6. total size is 158 speedup is 1.02
    7. [root@server ~]# ls /tmp
    8. hosts yum.log

     

    1. [root@server ~]# ll /tmp/
    2. total 4
    3. -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
    4. -rw-------. 1 root root 0 Feb 4 09:06 yum.log
    5. [root@server ~]# mkdir /null #创建一个空目录
    6. [root@server ~]# rsync -avz --delete /null/ /tmp/ #rm
    7. sending incremental file list
    8. ./
    9. deleting .ICE-unix/
    10. deleting yum.log
    11. deleting hosts
    12.  
    13. sent 29 bytes received 15 bytes 88.00 bytes/sec
    14. total size is 0 speedup is 0.00
    15. [root@server ~]# ll /tmp/
    16. total 0

    借助ssh通道推送数据

    源端:

    1. [root@server ~]# ll /tmp/
    2. total 4
    3. -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
    4. [root@server ~]# rsync -avzP -e 'ssh -p 22' /tmp/ root@192.168.31.133:/tmp
    5. The authenticity of host '192.168.31.133 (192.168.31.133)' can't be established.
    6. RSA key fingerprint is 9e:4c:c8:4d:df:0e:d8:2a:48:8a:04:22:8f:80:64:9a.
    7. Are you sure you want to continue connecting (yes/no)? yes
    8. Warning: Permanently added '192.168.31.133' (RSA) to the list of known hosts.
    9. root@192.168.31.133's password:
    10. sending incremental file list
    11. ./
    12. hosts
    13.          158 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/2)
    14.  
    15. sent 141 bytes received 34 bytes 18.42 bytes/sec
    16. total size is 158 speedup is 0.90

    目标端:

    1. [root@lamp ~]# ll /tmp/
    2. total 0
    3. -rw-------. 1 root root 0 Feb 4 09:10 yum.log
    4. [root@lamp ~]# ll /tmp/
    5. total 4
    6. -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
    7. -rw-------. 1 root root 0 Feb 4 09:10 yum.log

    借助ssh通道拉取数据

    源端:

    1. [root@server ~]# ll /tmp
    2. total 0
    3. [root@server ~]# rsync -avzP -e 'ssh -p 22' root@192.168.31.133:/tmp/ /tmp/
    4. root@192.168.31.133's password:
    5. receiving incremental file list
    6. ./
    7. hosts
    8.          158 100% 154.30kB/s 0:00:00 (xfer#1, to-check=2/4)
    9. yum.log
    10.            0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=1/4)
    11. .ICE-unix/
    12.  
    13. sent 56 bytes received 235 bytes 38.80 bytes/sec
    14. total size is 158 speedup is 0.54
    15. [root@server ~]# ll /tmp
    16. total 4
    17. -rw-r--r--. 1 root root 158 Jan 12 2010 hosts
    18. -rw-------. 1 root root 0 Feb 4 09:10 yum.log

    关键语法说明:

    1、-avz相当于-vzrtopgD1,表示同步时文件和目录属性不变。

    2、-P显示同步的过程,可以用--progress替换。

    3、-e 'ssh -p 22',表示通过ssh的通道传输数据,-p 22可省略。

    4、root@192.168.31.132:/tmp/远程的主机系统用户、地址、路径。

    5、/tmp/本地的路径。

    Rsync命令同步参数选项

    1. Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
    2. Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

    常用参数选项说明:

    -v,--verbose:详细模式输出,传输时的进度等信息。

    -z,--compress:传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩。

    -a,--archive:归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopgDl。

    -r,--recursive:对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写r。

    -t,--times:保持文件时间信息。

    -o,--owner:保持文件属主信息。

    -p,--perms:保持文件权限。

    -g,--group:保持文件属组信息。

    -P,--progress:显示同步的过程及传输时的进度等信息。

    -D,--devices:保持设备文件信息。

    -l,--links:保留软链接。

    -e,--rsh=COMMAND:使用的信道协议,指定替代rsh的shell程序。例如:ssh。

    --exclude=PATTERN:指定排除不需要传输的文件模式。

    --exclude-from=file(文件名所在的目录文件)

    --bwlimit=PATE(限速) limit socket I/O bandwidth。

    生产参数:-avz或者-vzrtopg。

    查看rsync安装包

    1. [root@backup ~]# rpm -qa rsync
    2. rsync-3.0.6-12.el6.x86_64

     

    1. [root@backup ~]# touch /etc/rsyncd.conf #创建rsync配置文件

     

    1. [root@backup ~]# cat /etc/rsyncd.conf
    2. #Rsync server
    3. #created by oldboy 13:42 2017-02-04
    4. ##rsyncd.conf start##
    5. uid = rsync #客户端具有rsync用户的权限
    6. gid = rsync
    7. use chroot = no #与安全相关
    8. max connections = 2000 #客户端最大连接数
    9. timeout = 600 #超时时间
    10. pid file = /var/run/rsyncd.pid #进程号文件
    11. lock file = /var/run/rsync.lock #锁文件
    12. log file = /var/log/rsyncd.log #log文件
    13. ignore errors #忽略错误
    14. read only = false #可读写
    15. list = false #不可远程列表
    16. hosts allow = 192.168.31/24 #允许的ip
    17. hosts deny = 0.0.0.0/32
    18. auth users = rsync_backup #远程连接的用户
    19. secrets file = /etc/rsync.password #存放用户和密码的文件
    20. #################################
    21. [backup] #模块
    22. comment = backup server by oldboy 13:48 2017-02-04 #注释
    23. path = /backup #共享的目录

    启动rsync服务

    1. [root@backup ~]# rsync --daemon
    2. [root@backup ~]# ps -ef|grep rsync|grep -v grep
    3. root 1149 1 0 14:08 ? 00:00:00 rsync --daemon
    4. [root@backup ~]# netstat -lntup|grep rsync
    5. tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1149/rsync
    6. tcp 0 0 :::873 :::* LISTEN 1149/rsync

     

    1. [root@backup ~]# lsof -i:873
    2. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    3. rsync 1149 root 3u IPv4 9918 0t0 TCP *:rsync (LISTEN)
    4. rsync 1149 root 5u IPv6 9919 0t0 TCP *:rsync (LISTEN)

    创建rsync用户

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

    创建共享目录/backup

    1. [root@backup ~]# mkdir /backup
    2. [root@backup ~]# chown -R rsync /backup/
    3. [root@backup ~]# ls -ld /backup
    4. drwxr-xr-x 2 rsync root 4096 Feb 4 14:16 /backup

    创建密码文件/etc/rsync.password

    1. [root@backup ~]# echo "rsync_backup:system">/etc/rsync.password
    2. [root@backup ~]# cat /etc/rsync.password
    3. rsync_backup:system #用户名:密码

    修改密码文件/etc/rsync.password的权限

    1. [root@backup ~]# ll /etc/rsync.password
    2. -rw-r--r-- 1 root root 20 Feb 4 14:19 /etc/rsync.password
    3. [root@backup ~]# chmod 600 /etc/rsync.password
    4. [root@backup ~]# ll /etc/rsync.password
    5. -rw------- 1 root root 20 Feb 4 14:19 /etc/rsync.password

    rsync server配置步骤

    1、vi /etc/rsyncd.conf配置。

    2、创建rsync用户,及共享目录/backup。

    useradd rsync -s /sbin/nologin -M

    id rsync

    mkdir /backup

    chown -R rsync /backup

    3、创建密码文件/etc/rsync.password。

    echo "用户名:密码" >/etc/rsync.password

    chmod 600 /etc/rsync.password

    4、启动服务

    rsync --daemon

    netstat -lntup|grep rsync

    ps -ef|grep rsync|grep -v grep

    5、加入开机自启动

    echo "rsync --daemon" >>/etc/rc.local

    cat /etc/rc.local

    rsync客户端配置步骤

    1、创建密码文件

    echo "密码">/etc/rsync.password

    chmod 600 /etc/rsync.password

    2、rsync

    push:

    rsync -avz /tmp/ rsync_backup@192.168.31.128::backup --password-file=/etc/rsync.password

    pull:

    rsync -avz rsync_backup@192.168.31.128::backup /tmp/ --password-file=/etc/rsync.password

    rsync -avz rsync://rsync_backup@192.168.31.128/backup /tmp/ --password-file=/etc/rsync.password

    安全的优化:

    pkill rsync #结束进程rsync

    rsync --daemon --address=10.0.0.10

    进程管理:

    pkill 进程名

    killall 进程名

    kill pid(进程号)

    平滑结束进程:

    kill -HUP `cat /var/run/rsyncd.pid`

    kill –USR2 `cat /var/run/rsyncd.pid`

    Rsync服务端排错

    1、查看rsync服务配置文件路径是否正确,正确的默认路径为:/etc/rsyncd.conf。

    2、查看配置文件里host allow、host deny允许的ip网段是否是允许客户端访问的ip网段。

    3、查看配置文件中path参数里的路径是否存在,权限是否正确(正常应为配置文件中的UID参数对应的属主和组)。

    4、查看rsync服务是否启动。查看命令为ps -ef|grep rsync。端口是否存在netstat -lnt|grep 873。

    5、查看iptables防火墙和selinux是否开启允许rsync服务通过,也可以关闭。

    6、查看服务端rsync配置的密码文件是否为600的权限,密码文件格式是否正确,正确格式:用户名:密码,文件路径和配置文件里的secrect files参数对应。

    7、如果是推送数据,要查看配置rsyncd.conf文件中用户是否对模块下目录有可读写的权限。

    rsync优点

    1、增量备份同步。

    2、支持socket(daemon)。

    3、集中备份。

    rsync缺点

    1、大量小文件同步的时候比对时间较长,有的时候rsync进程会停止。

    解决办法:a、打包同步。b、drbd(文件系统同步复制block)。

    2、同步大文件时(10G以上)会有中断。未完整同步前是隐藏文件,同步完成之后为正常文件。

    无差异同步:--delete(慎用),使用该参数前先备份。

    客户端rsync命令排除

    排除单个文

    rsync -avz --exclude=a /data1/ rsync_backup@192.168.31.128::oldboy --password-file=/etc/rsync.password

    排除多个文件

    rsync -avz --exclude={a,b} /data1/ rsync_backup@192.168.31.128::oldboy --password-file=/etc/rsync.password

    rsync -avz –exclude-from=paichu.log /data1/ rsync_backup@192.168.31.128::oldboy --password-file=/etc/rsync.password

    定时备份案例

    1. [root@lamp scripts]# cat /server/scripts/bak.sh
    2. #!/bin/sh
    3. path=/backup
    4. dir="`ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'`_$(date +%F)"
    5. mkdir $path/$path/$dir -p &&
    6. /bin/cp /var/spool/cron/root $path/$path/$dir/cron_root_$(date +%F) &&
    7. /bin/cp /etc/rc.local $path/$path/$dir/rc.local_$(date +%F) &&
    8. rsync -az $path/ rsync_backup@192.168.31.128::backup --password-file=/etc/rsync.password
    9. [root@lamp scripts]# /bin/sh /server/scripts/bak.sh

     

    1. [root@lamp scripts]# crontab -e
    2. #rsync定时备份
    3. 00 01 * * * /bin/sh /server/scripts/bak.sh >dev/null 2>&1

    用scp发送到另外一台服务器

    1. [root@lamp scripts]# scp /server/scripts/bak.sh root@192.168.31.134:/tmp

     

     

     

  • 相关阅读:
    【洛谷P4838】P哥破解密码【矩阵乘法】
    2019年暑假 纪中培训总结
    Objective-C中的@property和@synthesize用法
    转载: C#: Left outer joins with LINQ
    SQL 查询某字段id为空(不为空)
    聚类算法(五)--层次聚类(系统聚类)及超易懂实例分析
    聚类算法(四)--DBSCAN
    聚类算法(二)--BIRCH
    聚类算法(二)--Kmeans++、elkan K-Means、Mini Batch K-Means、Sequential Leader Clustering
    聚类算法(一)--Kmeans
  • 原文地址:https://www.cnblogs.com/yinshoucheng-golden/p/6384113.html
Copyright © 2020-2023  润新知