zoukankan      html  css  js  c++  java
  • 002 rsync守护进程传输方式详解

    传输模式

    1、本地方式(类似于cp,不支持推送和拉取,只是单纯的复制)
    2、远程方式(类似于scp,又不同于scp)
    3、守护进程方式(客户端和服务端)
    

    本地方式

    #语法
    rsync [参数] 源文件(可多个) 目标地址 本地路径
    
    #类似于cp,但是cp是全量复制并且会修改文件属性,rsync是增量复制,会保证文件属性不变
    

    远程方式

    #pull拉取语法
    rsync [参数] 源文件(可多个)  目标地址 本地路径
    
    #实例
    [root@web1 ~]# rsync -avz root@192.168.15.100:/tmp/ ./
    
    #push推送语法
    rsync [参数] 要推送的文件  远程主机路径
    
    #实例
    rsync -avz ./back/ root@192.168.15.102:/root/
    

    rsync

    既可以本地拷贝也可以远程

    -a	#归档(压缩)模式,表示以递归方式传输文件,并保持所有文件属性
    -z	#在传输过程中进行压缩
    -v	#显示传输的过程
    -n	#执行一个没有实际更改的试运行,只会显示文件会被如何操作
    -c	#让自动跳过基于校验和而非默认的修改时间以及文件大小
    --delete  # 将备份的当作镜像,完全保持一致
    
    --backup	#对目标目录下已经存在的一个文件做备份
    --backup-dir=/xxx/yyy	#可以自定义一个目录去备份
    --suffix="xxx"	#可以指定区分的后缀名
    
    --exclude  # 排除
    --exclude="xxx"
    
    --include # 包含
    
    rsync -a --include="*.txt" --exclude="*" /111/ /222/
    #这个意思是会排除所有的文件,但是会包括1.txt,2.txt等文件
    
    --bwlimit=MB/s  #限速传输
    --link-dest  #指定基准目录
    

    守护进程传输模式

    #为什么使用守护进程模式
    1、rsync传输时,使用的是系统用户和系统用户的密码,非常的不安全
    2、使用普通用户又会出现权限问题
    

    服务端

    #配置rsync
    #查找配置文件
    [root@backup ~]# rpm -qc rsync
    /etc/rsyncd.conf
    /etc/sysconfig/rsyncd
    
    #编辑配置文件
    uid = rsync							#启动服务的用户id---->控制的是客户端的权限
    gid = rsync							#启动服务的用户组id
    port = 873							#服务默认监听端口
    fake super = yes					#无需使用root启动
    use chroot = no						#安全机制
    max connections = 200				#最大连接数
    timeout = 600						#超时时间
    ignore errors						#错误忽略
    read only = false					#只读
    list = false						#查看模块列表
    auth users = rsync_backup			#定义虚拟用户
    secrets file = /etc/rsync.passwd		#定义虚拟用户密码
    log file = /var/log/rsyncd.log			#日志文件
    
    [backup]							#模块
    comment = welcome to my backup!			#模块的备注
    path = /root/backup						#服务器真实的路径
    
    
    #根据配置文件操作
    1、创建用户
    [root@backup ~]# useradd rsync -s /sbin/nologin -M	#不登录,不创建家目录
    
    2、创建密码文件
    [root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd			#密码是用户名 : 密码格式
    rsync_backup:123456
    chmod 600 /etc/rsync.passwd		#切记要授权!!!!!
    
    3、创建备份目录
    [root@backup ~]# mkdir backup	#创建文件夹
    [root@backup ~]# chown -R rsync.rsync /backup/		#授权目录
    
    
    #启动服务
    [root@backup ~]# systemctl start rsyncd
    [root@backup ~]# rsync --daemon
    
    #验证启动
    [root@backup ~]# netstat -lntp | grep 873
    tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1707/rsync          
    tcp6       0      0 :::873                  :::*                    LISTEN      1707/rsync          
    [root@backup ~]# ps -ef | grep rsync
    root       1707      1  0 21:21 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
    root       1714   1619  0 21:23 pts/0    00:00:00 grep --color=auto rsync
    

    配置文件

    uid = rsync
    gid = rsync
    port = 873
    fake super = yes
    use chroot = no
    max connections = 200
    timeout = 600
    ignore errors
    read only = false
    list = false
    auth users = rsync_backup
    secrets file = /etc/rsync.passwd
    log file = /var/log/rsyncd.log
    
    [backup]
    comment = welcome to my backup!
    path = /root/backup
    

    客户端推拉操作

    #push推送语法
    [root@web1 ~]# rsync -avz gaiwangka.sh rsync_backup@192.168.15.101::backup
    #双冒号后面跟的是模块名,配置文件中模块的路径为存储路径
    Password: 
    sending incremental file list
    gaiwangka.sh
    
    sent 206 bytes  received 43 bytes  71.14 bytes/sec
    total size is 194  speedup is 0.78
    
    #pull拉取语法
    [root@web1 ~]# rsync -avz rsync_backup@192.168.15.101::backup ./1/
    Password: 
    receiving incremental file list./
    gaiwangka.sh
    sent 50 bytes  received 253 bytes  67.33 bytes/sec
    total size is 194  speedup is 0.64
    

    客户端推拉数据方法

    方式一:输入密码

    繁琐

    方式二:指定密码文件

    #创建密码文件
    [root@web1 1]# echo "***" > /etc/rsync.passwd 	#这里的文件是纯密码,不需要用户
    [root@web1 1]# chmod 600 /etc/rsync.passwd 
    #要授权!!
    

    方式三:临时环境变量

    export RSYNC_PASSWORD=*****
    #想要永久生效写到环境变量里 
    vim /etc/profile.d/HJBL.sh
    #小细节:这里写环境变量的时候,尽量将环境变量给写到/etc/profile.d/*.sh中,从而降低出错风险
    
    #补充
    #防火墙设置
    [root@backup backup]# firewall-cmd --add-port=873/tcp
    [root@backup backup]# firewall-cmd --list-all
    

    权限问题的强调

    #1、服务端进程的用户身份,与当前登录的用户有关(密码文件有关)
    以什么用户提交的命令,该进程的身份就是该用户
    即当前登录的用户是谁,进程的用户身份就是谁
    
    #2、配置文件中的uid与gid是为了控制客户端的权限
    
    #补充
    #防火墙设置
    [root@backup backup]# firewall-cmd --add-port=873/tcp
    [root@backup backup]# firewall-cmd --list-all
    

    常见报错





    #chdir error
    代表文件夹不存在,检查配置文件中的模块的path路径
    或者你没有创建文件夹
    
  • 相关阅读:
    「模拟赛20180306」回忆树 memory LCA+KMP+AC自动机+树状数组
    python写一个通讯录
    Git学习笔记
    交换排序
    用Windows自带的方法创建WiFi
    MySQL之触发器
    插入排序
    range和arange的区别
    Spring前后端跨域请求设置
    三、图的定义及遍历
  • 原文地址:https://www.cnblogs.com/zhaokunhao/p/14578252.html
Copyright © 2011-2022 走看看