zoukankan      html  css  js  c++  java
  • rsync远程传输

    # 同一个区域网下增量拷贝 -- rsync
    rsync既是一个命令,又是一个服务,支持全量备份和增量备份,不支持差异备份,可以实时备份(inotyfi+rsync),也可以定时定点备份(cron + rsync)
    监听端口: 873
    rsync运行模式:C/S,客户端/服务端
    系统 所有用户 都可以使用rsync的 作为客户端或者服务端
    **服务端**:我们把备份的文件放在谁磁盘上,谁就是服务端,(客户端推,服务端拉)
    备份文件的格式:2020-05-06_web01_etc.tar.gz
    企业采用客户端 推 的方式减少服务端的负载,备份到服务器,#再隐藏到云服务器异地备份
    
    -a	:
    -v	:显示传输的过程
    -z	:传输的时候使用gzip 压缩,传输完成立即 解压
    -e 'ssh -p 80'	:指定传输的端口
    --delete            #让目标目录和源目录数据保持一致,可以实现数据的清空
    --password-file=xxx #使用密码文件(虚拟用户 bck:密码)
    export RSYNC_PASSWORD=123   (export使命令行的密码立即生效 )
    
    ------------------- -a 包含 ------------------
    -r           #递归传输目录及子目录,即目录下得所有目录都同样传输。
    -t           #保持文件时间信息
    -o           #保持文件属主信息
    -p           #保持文件权限
    -g           #保持文件属组信息
    -l           #保留软连接
    -D           #保持设备文件信息
    
    --------------------- 不包含 -------------------------
    -L           #保留软连接指向的目标文件(默认只拷贝链接文件)
    -e           #使用的信道协议,指定替代ssh的shell程序,'ssh -p 80'	:指定传输的端口
    
    --exclude=PATTERN   #指定排除不需要传输的文件模式
    --exclude-from=file #文件名所在的目录文件
    
    --bwlimit=100       #限速传输(限制磁盘的I/O)
    --partial           #断点续传
    
    --delete            #让目标目录和源目录数据保持一致
    --password-file=xxx #指定 密码文件
    
    # rsync 的传输模式:
    (/etc是指/etc目录,/etc/是指 /etc目录下所有文件或目录)
    
    本地方式---------------------------------------------相当于cp命令
    	## 拷贝文件
    	[root@backup ~]# rsync /root/3 /usr/local/src/
    	## 拷贝目录
    	[root@backup ~]# rsync -a /etc /usr/local/src/
    
    远程方式------------------------------相当于scp命令,存在普通用户权限不足的情况,存在ssh不安全的情况
    	# 推:rsync [选项...] 本地文件或目录 用户名@主机IP:路径
    	rsync -avz /etc root@10.0.0.41:/root   # 推 
    	# 拉:rsync [选项...] 用户名@主机IP:路径 本地文件或目录
    	rsync -avz root@10.0.0.41:/root /etc
    	
    	同步中科大镜像站,rsync rsync://rsync.mirrors.ustc.edu.cn/repo/ .
    	
    守护进程方式-------------------------------------------服务,#不存在普通用户权限不足的情况,不存在不安全的情况(使用22号端口), 守护进程方式只能客户端 推或拉
    	推:rsrnc -avz 文件或目录 用户@IP或域名::模块
    	拉:rsync -avz 用户@IP或域名::模块 文件或目录
        
    	
    	
    #服务端(小心注释)-----------------------------------备份的文件放在哪,谁就是服务端
    1.[root@web01 ~]# yum install -y rsync
    [root@web01 ~]# rpm -q rsync
    rsync-3.1.2-10.el7.x86_64				#包名,版本,发布次数,适用系统,架构
    [root@web01 ~]# rpm -qc rsync
    /etc/rsyncd.conf		#配置文件
    /etc/sysconfig/rsyncd	#从配置文件
    [root@web01 ~]# rpm -ql rsync
    /etc/rsyncd.conf
    /etc/sysconfig/rsyncd
    /usr/bin/rsync			#启动程序存放路径,在环境变量里面,可以tab,可以不加绝对路径执行
    /usr/lib/systemd/system/rsyncd.service		#可以使用systemctl来管理
    /usr/lib/systemd/system/rsyncd.socket
    [root@web01 ~]# cat /etc/passwd|grep rsync  #查看rsync用户身份是否存在
    [root@web01 ~]# id rsync || echo 不存在
    id: rsync: no such user
    
    
    2.修改配置文件(一般来说是以.conf 或 .cnf 或 .cfg结尾),
    [root@web01 ~]# vim /etc/rsyncd.conf  #先删除,再拷贝
    #################################### 服务相关配置 ###########################
    uid = www	
    #指定rsync进程启动的用户(打工的)---------useradd
    gid = www			
    #指定rsync进程启动的组
    port = 873			
    #指定rsync使用的监听端口(默认873端口,可以改)
    fake super = yes	 
    #无需让rsync以root身份运行,允许接收文件的  完整属性(属主属组不变)
    use chroot = no		 	
    #禁锢指定的目录(只能推到指定的目录,不紧固的话随便推)
    max connections = 200	
    #最大连接数(同时连接的主机数,减少服务端负载)
    timeout = 600			
    #超时时间
    ignore errors			
    #忽略报错
    read only = false		
    #不只读(可读可写)
    list = false						
    #不允许别人查看模块名
    #################################### 命令相关配置 ###########################
    auth users = bck			 
    #传输文件的用户(相当于密码,没有实际意义)---------
    secrets file = /etc/rsync.passwd	  
    #传输用户文件的密码文件------------vim或echo/600
    log file = /var/log/rsyncd.log		  
    #日志文件,使用了rsync之后才会生成
    
    [backupmk]								
    #模块名,可以随便改,小心大写字母,空格,数字,多模块对应多主机(随便推?)
    comment = welcome to oldboyedu backup!	   
    #注释(废物)
    path = /backup							 
    #备份的目录-------mkdir/权限属主属组
    
    
    3.根据配置文件的内容,创建出来需要的用户,目录,密码文件
    [root@web01 ~]# groupadd www -g 666
    [root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M
    
    [root@web01 ~]# mkdir /backup
    [root@web01 ~]# ll /backup
    drwxr-xr-x    2 root root    6 May  6 20:40 backup
    [root@web01 ~]# chown www.www /backup/
    [root@web01 ~]# ll /backup/ -d
    drwxr-xr-x 2 www www 6 May  6 20:40 /backup/
    
    [root@web01 ~]# vim /etc/rsync.passwd
    backupmk:123
    或
    [root@web01 ~]# echo backupmk:123 >/etc/rsync.passwd     (虚拟用户名:密码,必须要做)
    或
    esport RSYNC_PASSWORD=123
    #修改传输文件的密码文件的权限
    [root@web01 ~]# chmod 600 /etc/rsync.passwd
    [root@web01 ~]# ll -d /etc/rsync.passwd
    -rw------- 1 root root 18 May  6 20:44 /etc/rsync.passwd
    
    4.启动服务,并且加入开机自启
    [root@web01 ~]# systemctl enable rsyncd
    Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
    [root@web01 ~]# systemctl start rsyncd
    [root@web01 ~]# systemctl status rsyncd
    [root@web01 ~]# netstat -lntup|grep 873
    tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1483/rsync          
    tcp6       0      0 :::873                  :::*                    LISTEN      1483/rsync
    [root@web01 ~]# ps -ef|grep rsync
    root       1483      1  0 20:49 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
    root       1493   1117  0 20:51 pts/0    00:00:00 grep --color=auto rsync
    
    
    #客户端 -------------------------------------------------
    rsync客户端不需要修改配置文件,有的服务需要修改客户端配置文件
    
    #方法一
    1.安装rsync
    [root@backup ~]# yum install -y rsync
    2.客户端需要创建一个密码文件
    [root@backup ~]# vim /etc/rsync.pass
    123
    或
    [root@backup ~]# echo 123 > /etc/rsync.passwd
    
    3.修改密码文件的权限为600
    [root@backup ~]# chmod 600 /etc/rsync.pass   # 必须
    
    [root@web01 ~]# systemctl enable rsyncd
    [root@web01 ~]# systemctl start rsyncd
    [root@web01 ~]# systemctl status rsyncd
    
    4.从客户端往服务端推送重要备份文件
    rsync [-avz] 源文件 bck@10.0.0.41::[模块]
    rsync -avz /etc rsync_bck@10.0.0.41::backupmk --password-file=/etc/rsync.pass
    
    # 方式二:脚本中使用,强烈推荐方式
    [root@nfs01 ~]# export RSYNC_PASSWORD=zls
    

    客户端 拉取Rsync服务端 backupmk 模块数据至本地客户端的 /123目录

    [root@nfs01 ~]# export RSYNC_PASSWORD=123    # 临时,密码可以是字母,立即生效
    [root@nfs01 ~]# vim /etc/profile.d/rsync.ps.sh  #永久,需要重新加载(bash)
     export RSYNC_PASSWORD=123 
     或
    [root@nfs01 ~]# echo export RSYNC_PASSWORD=123 >/etc/profile.d/rsync.ps.sh  #bash
     
    [root@nfs01 ~]# rsync -avz /etc rsync_backup@172.16.1.41::backup
    

    Rsync实现数据 无差异 同步 (两边一样,有空目录就完了),可以利用 --delete 实现删除的目的

    一定要看好 推拉的目标

    推的时候,无论全量备份还是增量备份,是推一次同名覆盖一次

    拉的时候,无论全量备份还是增量备份,是拉一次同名覆盖一次,除非拉到别的目录

    #拉取远端数据:远端与本地保持一致,远端没有本地有会被删除, 造成客户端数据丢失
    [root@nfs01 ~]# export RSYNC_PASSWORD=123
    [root@nfs01 ~]# rsync -avz --delete bck@172.16.1.41::backupmk /data/
    
    #推送数据至远端:本地与远端保持一致, 本地没有远端会被删除, 造成服务器端数据丢失
    [root@nfs01 ~]# export RSYNC_PASSWORD=zls
    [root@nfs01 ~]# rsync -avz --delete /data/ rsync_backup@172.16.1.41::backupmk 
    
    # 如果推的目录是空目录的话,服务端也被清空了,如果客户端某个重要文件被误删除了,服务端里的相应的数据也被删除了
    
    #企业差异备份和无差异备份可能混合使用
    [root@nfs01 ~]# rsync -avz /data/ rsync_backup@172.16.1.41::backupmkbackupmk
    [root@nfs01 ~]# rsync -avz --delete /data/ rsync_backup@172.16.1.41::backupmk
    

    Rsync的Limit限速(限制磁盘吞吐量 I/O)

    #企业案例: 某DBA使用rsync拉取备份数据时,由于文件过大导致内部交换机带宽被沾满,导致用户的请求无法响应
    [root@nfs01 ~]# export RSYNC_PASSWORD=zls
    [root@nfs01 ~]# rsync -avz --bwlimit=1 rsync_backup@172.16.1.41::backup/ /data/
    

    rsync总结

    服务端

    1.安装rsync
    [root@backup ~]# yum install -y rsync
    2.修改配置文件
    [root@backup ~]# vim /etc/rsyncd.conf 
    3.创建www用户
    [root@backup ~]# groupadd www -g 666
    [root@backup ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M
    4.创建密码文件
    [root@backup ~]# echo 'bck:123' > /etc/rsync.passwd
    或 export RSYNC_PASSWD=123
    5.给密码文件授权600,不让其他用户看到用户名和密码(选做)
    [root@backup ~]# chmod 600 /etc/rsync.passwd
    6.创建备份目录
    [root@backup ~]# mkdir /backup
    7.授权备份目录的属组和属组为www
    [root@backup ~]# chown www.www /backup/
    8.启动服务并加入开机自启
    [root@backup ~]# systemctl start rsyncd
    [root@backup ~]# systemctl enable rsyncd
    9.检查端口
    [root@backup ~]# netstat -lntup|grep 873
    10.检查进程
    [root@backup ~]# ps -ef|grep [r]sync
    

    rsync客户端

    # 安装rsync服务
    [root@web01 ~]# yum install -y rsync
    
    [root@web01 ~]# exprot RSYNC_PASSWD=123
    
    # 设置开机自启动
    [root@web01 ~]# systemctl enable rsyncd
    Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
    [root@web01 ~]# systemctl start rsyncd
    
  • 相关阅读:
    #莫比乌斯函数,Miller-Rabin#洛谷 3653 小清新数学题
    #Dijkstra,二进制拆位#洛谷 5304 [GXOI/GZOI2019]旅行者
    #dp#洛谷 4158 [SCOI2009]粉刷匠
    #李超线段树,树链剖分#洛谷 4069 [SDOI2016]游戏
    #线段树合并#洛谷 3224 [HNOI2012]永无乡
    #主席树,dsu on tree,树上倍增#洛谷 3302 [SDOI2013]森林
    #树状数组,CDQ分治#洛谷 4390 [BOI2007]Mokia 摩基亚
    #单调队列#JZOJ 1753 锻炼身体
    #约数#洛谷 4296 [AHOI2007]密码箱
    #队列#洛谷 6033 合并果子 加强版
  • 原文地址:https://www.cnblogs.com/syy1757528181/p/12852903.html
Copyright © 2011-2022 走看看