博客
关于我
rsync远程传输
阅读量:444 次
发布时间:2019-03-06

本文共 7302 字,大约阅读时间需要 24 分钟。

# 同一个区域网下增量拷贝 -- rsyncrsync既是一个命令,又是一个服务,支持全量备份和增量备份,不支持差异备份,可以实时备份(inotyfi+rsync),也可以定时定点备份(cron + rsync)监听端口: 873rsync运行模式: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 rsyncrsync-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 user2.修改配置文件(一般来说是以.conf 或 .cnf 或 .cfg结尾),[root@web01 ~]# vim /etc/rsyncd.conf  #先删除,再拷贝#################################### 服务相关配置 ###########################uid = www	#指定rsync进程启动的用户(打工的)---------useraddgid = 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/600log 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 /backupdrwxr-xr-x    2 root root    6 May  6 20:40 backup[root@web01 ~]# chown www.www /backup/[root@web01 ~]# ll /backup/ -ddrwxr-xr-x 2 www www 6 May  6 20:40 /backup/[root@web01 ~]# vim /etc/rsync.passwdbackupmk: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.passwd4.启动服务,并且加入开机自启[root@web01 ~]# systemctl enable rsyncdCreated 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 873tcp        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 rsyncroot       1483      1  0 20:49 ?        00:00:00 /usr/bin/rsync --daemon --no-detachroot       1493   1117  0 20:51 pts/0    00:00:00 grep --color=auto rsync#客户端 -------------------------------------------------rsync客户端不需要修改配置文件,有的服务需要修改客户端配置文件#方法一1.安装rsync[root@backup ~]# yum install -y rsync2.客户端需要创建一个密码文件[root@backup ~]# vim /etc/rsync.pass123或[root@backup ~]# echo 123 > /etc/rsync.passwd3.修改密码文件的权限为600[root@backup ~]# chmod 600 /etc/rsync.pass   # 必须[root@web01 ~]# systemctl enable rsyncd[root@web01 ~]# systemctl start rsyncd[root@web01 ~]# systemctl status rsyncd4.从客户端往服务端推送重要备份文件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 rsync2.修改配置文件[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 -M4.创建密码文件[root@backup ~]# echo 'bck:123' > /etc/rsync.passwd或 export RSYNC_PASSWD=1235.给密码文件授权600,不让其他用户看到用户名和密码(选做)[root@backup ~]# chmod 600 /etc/rsync.passwd6.创建备份目录[root@backup ~]# mkdir /backup7.授权备份目录的属组和属组为www[root@backup ~]# chown www.www /backup/8.启动服务并加入开机自启[root@backup ~]# systemctl start rsyncd[root@backup ~]# systemctl enable rsyncd9.检查端口[root@backup ~]# netstat -lntup|grep 87310.检查进程[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 rsyncdCreated symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.[root@web01 ~]# systemctl start rsyncd

转载地址:http://wllfz.baihongyu.com/

你可能感兴趣的文章
Silverlight for linux 和 DLR(Dynamic Language Runtime)
查看>>
通过理顺软件的依赖关系提高应用程序灵活性
查看>>
WCF的压缩编码
查看>>
微软网络数据包分析工具 Microsoft Network Monitor 3.2
查看>>
Silverlight 2 SDK中文版
查看>>
ASP.NET MVC Action Filters
查看>>
Windows SharePoint Services 3.0 Service Pack 2
查看>>
CodePlex站点的Wiki引擎已开源
查看>>
兰州大学百年校庆--风雨百年萃英路
查看>>
Eucalyptus企业云计算
查看>>
Service Broker 无法工作的问题修复
查看>>
Windows Server 2008 R2 Server Core
查看>>
WCF WebHttp Services in .NET 4
查看>>
使用Sysinternals工具定时休眠Windows Server 2008 R2
查看>>
ASP.NET MVC的Action Filter
查看>>
MonoMac 1.0正式发布
查看>>
Shawn Wildermuth的《Architecting WP7 》系列文章
查看>>
2011 ASP.NET/IIS MVP
查看>>
[腾讯社区开放平台].NET SDK基于New BSD协议开源
查看>>
使用Topshelf 5步创建Windows 服务
查看>>