• 2. Rsync-远程同步(上)


    课程大纲:

    1.什么是备份?
    	就是给源文件 增加 一个 副本.
    	U盘
    	D  --> E 
    
    2.为什么要做备份?
    	1.数据重要?
    	2.防止误操作
    	3.能够快速恢复
    
    3.能不能不做备份?
    	可以, 不重要的数据可以不用考虑
    
    4.备份使用什么方式?
    	①全量备份,每次都是完全拷贝,效率低下
    	②增量备份,每次仅拷贝发生变化的文件,效率高
    
    5.备份使用的工具有哪些?
    	本地备份:  cp
    	远程备份:  scp  rsync    sz rz
    
    
    6.rsync  远程同步工具
    	实现主机与主机之间的同步, 实现增量的同步.     linuxwindowsmac
    	PS: 如果将rsync当一个服务来使用,则需要知道 rsync  是个  c/s架构
    
    7.rsync 推和拉 两种方式
    	推
    	拉
    	推和拉结合使用
    
    
    8.rsync传输模式
    	1.本地传输     --->  cp
    	2.远程传输     --->  scp
    	3.守护进程     --->  
    
    
    	等价于cp命令
        Local:  rsync [OPTION...] SRC... [DEST]
    			命令   选项      源      目标
    
    	[root@backup ~]# rsync -avz anaconda-ks.cfg  /tmp/
    	
    
    	远程传输
       Access via remote shell:
        上传    Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
    					命令  选项       源   系统用户 主机IP 目标位置
    			1.我要将我本地的那个文件,推送至那台服务器的那个目录,使用的是什么用户
    			[root@backup ~]# rsync -avz ./backup_file root@172.16.1.31:/opt/
    			root@172.16.1.31's password: 		#输入31的root密码
    	
    	下载    Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
    				  命令    选项     系统用户 主机IP  
    			2.我要下载那个主机的那个目录下的文件,使用的是什么系统用户.  然后下载到我本地的那个位置 
    			[root@backup ~]# rsync -avz root@172.16.1.31:/opt/backup_file   ./file.txt
    			root@172.16.1.31's password:    #输入31的root密码
    	
    	
    	目录:  /etc/  /etc    区别? 
    	#推送/etc目录下的所有文件
    	[root@backup ~]# rsync -avz /etc/ root@172.16.1.31:/opt
    	
    	#推送/etc目录以及目录下的所有文件
    	[root@backup ~]# rsync -avz /etc root@172.16.1.31:/opt
    	
    	Rsync借助SSH协议同步数据存在的缺陷    (  使用对端主机的用户名和密码   系统  )
    		1.使用系统用户(不安全)
    		2.使用普通用户(会导致权限不足情况)
    		
    	问题:
    		1.rsync -avz /etc/ root@172.16.1.31:/opt          ---> 172.168.1.31
    		2.路径问题
    		3.普通用户权限
    
    
    	守护进程模式--->一直在后台持续的运行
       Access via rsync daemon:
         Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
         Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
    		   
    	
    	1.安装
    	[root@backup ~]# yum install rsync -y
    	
    	
    	2.配置   ( 改变程序运行轨迹  )
    	[root@backup ~]# cat /etc/rsyncd.conf
    	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 oldboyedu backup!
    	path = /backup
    	
    	3.根据配置创建一些初识环境:
    		3.1创建rsync用户    rsync程序需要rsync这个用户来运行
    		[root@backup ~]# groupadd rsync
    		[root@backup ~]# useradd -M -s /sbin/nologin rsync -g rsync
    		[root@backup ~]# id rsync
    		uid=1000(rsync) gid=1000(rsync) groups=1000(rsync)
    
    		3.2 虚拟用户    /etc/rsync.passwd      username:password
    		[root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd
    		[root@backup ~]# chmod 600 /etc/rsync.passwd
    		
    		3.3 创建一个/backup目录
    		[root@backup ~]# mkdir /backup
    		[root@backup ~]# chown -R rsync.rsync /backup/
    	
    	4.启动
    		[root@backup ~]# systemctl start rsyncd
    		[root@backup ~]# systemctl enable rsyncd
    	
    	5.检测
    	[root@backup ~]# netstat -lntp | grep 873
    	tcp        0      0 0.0.0.0:873       0.0.0.0:*        LISTEN    8616/rsync          
    	
    	6.使用
    	Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
    	[root@nfs ~]# rsync -avz ./anaconda-ks.cfg  rsync_backup@172.16.1.41::backup
    	
    	Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
    	[root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt
    	
    	7.客户端每次都需要使用密码?
    		1.设定变量  RSYNC_PASSWORD  (后面写脚本的时候)
    		[root@nfs ~]# export RSYNC_PASSWORD=123456
    		[root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt
    	
    		2.提前准备一个文件 (只有密码的文件),  然后使用 --password-file 指定位置
    		[root@nfs ~]# echo "123456" >  /etc/rsync.pass
    		[root@nfs ~]# chmod 600 /etc/rsync.pass
    		[root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup /opt --password-file=/etc/rsync.pass
    
    
    	8.-avz 这些选项  怎么理解?
    		-a           #归档模式传输, 等于-tropgDl
    		-v           #详细模式输出, 打印速率, 文件数量等
    		-z           #传输时进行压缩以提高效率
    		-r           #递归传输目录及子目录,即目录下得所有目录都同样传输。
    		-t           #保持文件时间信息
    		-o           #保持文件属主信息
    		-p           #保持文件权限
    		-g           #保持文件属组信息
    		-l           #保留软连接
    		-D           #保持设备文件信息
    		-P           #显示同步的过程及传输时的进度等信息
    		-L           #保留软连接指向的目标文件
    		-e           #使用的信道协议,指定替代rsh的shell程序
    		--exclude=PATTERN   #指定排除不需要传输的文件模式
    		--exclude-from=file #文件名所在的目录文件
    		--bwlimit=100       #限速传输
    		--delete            #让目标目录和源目录数据保持一致
    		
    	9. --delete   这个参数 (让目标目录和源目录数据保持一致)  危险?
    		#推:  源有什么,目标就有什么
    	[root@nfs ~]# rsync -avz /root/ rsync_backup@172.16.1.41::backup --delete
    		#拉: 目标主机有什么, 本地就有什么
    	[root@nfs ~]# rsync -avz rsync_backup@172.16.1.41::backup ./ --delete
    	
    	10.--bwlimit 限速, 这个参数?   1000兆    125MB/s     
    		虚拟机最高的峰值  25MB/s    5MB/s    ---> 取决于实际的情况
    		单位=KB
    	[root@nfs ~]# rsync  -avzP --bwlimit=5120  ubuntu-18.04.1-desktop-amd64.iso  rsync_backup@172.16.1.41::backup
    	sending incremental file list
    	ubuntu-18.04.1-desktop-amd64.iso   159,186,944   8%    5.12MB/s    0:05:41
    	
    	11.--exclude  这个参数  --exclude-from ?
    	
    	[root@nfs ~]# rsync  -avzP --exclude-from=pc.txt  rsync://192.168.0.128/yum  ./
    	[root@nfs ~]# cat pc.txt 
    	centos/
    	code/
    	docker-ce/
    	epel/
    	git/
    	java/
    	jenkins/
    	kubernetes/
    	mongodb/
    	mysql/
    	node/
    	non-supported/
    	php/
    	python/
    	redis/
    	sonarqube/
    	windowstools/
    	zabbix/
    	CentOS-7-x86_64-DVD-1810.iso
    	CentOS-Base.repo
    	docker-ce.repo
    	epel.repo
    	nginx.repo
    	php.repo
    	rsync_exclude.txt
    	zabbix.repo
    	各种源使用说明.txt
    
    	12.使用rsync同步学校内网yum源?
    	mysql/
    	nginx/
    	php/
    

    总结

    1.备份基本知识
    	1.什么是备份?
    	2.为什么要做备份?
    	3.能不能不做备份?
    	4.备份使用什么方式?
    	5.备份使用的工具有哪些?
    2.rsync远程同步  -->备份
    	1.rsync 推 和 拉 两种方式 以及  使用场景
    	2.rsync 传输模式  (三种)
    		本地传输  --->  没意义  cp
    		远程传输  --->  需要借助ssh协议   (使用系统用户)
    		守护进程  --->  虚拟用户
    	3.rsync守护进程如何搭建
    		1.安装
    		2.配置
    		3.启动
    		4.测试    ( 服务端  是否安装成功 )
    		5.使用    ( 客户端  能否正常使用 ) 
    		
    	4.rsync 选项:
    		-avz
    		-P
    		--delete
    		--bwlimit   ( 实际生产故障 )
    		--exclude    排除  --> 使用过程中的需求
  • 相关阅读:
    objective-c内存管理中autorelease的作用
    objective-c在Xcode中@property相关参数的解释
    objective-c中的内存管理
    c#扩展方法-摘自msdn
    objective-c中的category
    c语言中结构体的定义、初始化及内存分配
    c语言中的结构体为值类型,当把一个结构体赋值给另一个结构体时,为值传递
    手动通过Lucene判断该pom文件中jar是否存在,子依赖没判断
    代码方式删除SVN
    Maven多层嵌套
  • 原文地址:https://www.cnblogs.com/yinwu/p/11481963.html
Copyright © 2020-2023  润新知