Rsync 简介;
Rsync 是一款开源的、快速的 多功能的 可以实现全量以及增量的本地或者是远程的数据同步备份的优秀工具
并且可以不进行改变原有的数据属性信息,实现数据的备份和迁移的特性 ,Rsync 软件适用于 Linux/unix/windows 等多种操作系统上 。
Rsync备份服务知识点;
1,Rsync可以实现的备份方式 ;
本地备份
远程备份
无差异备份
2,Rsync实现方式介绍 ;
全量备份数据
增量备份数据
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 全量 - 增量的区别 +
+ 完整数据传送表示为 全量 , 传送新增加的数据表示增量, +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
实现rsync增量同步数据,是运用了其独特的“quick check”算法
CentOS5,rsync2.x比对方法,把所有的文件比对一遍,然后进行同步。
CentOS6,rysnc3.x比对方法,一边比对差异,一边对差异的部分进行同步。
3,Rsync 特性总结说明 ;
01:支持多种类型文件拷贝
02:支持文件复制排除功能
03:支持文件复制属性不变
04:支持文件复制增量同步
05:支持文件复制隧道加密
06:支持守护进程同步数据
07:支持数据同步身份验证
1. 可以镜像保存整个目录树和文件系统;
2. 可以很容易做到保持原来文件的权限、时间、软硬链接等;
3. 无须特殊权限即可安装;
4. 优化的流程,文件传输效率高;
5. 可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接;
6. 支持匿名传输,以方便进行网站镜像。
4,Rsync复制原理说明 ;
网站内部人员数据备份场景
1,定时任务+rsync
网站外部用户数据备份场景
2,实时同步工具+rsync
5,Rsync工作方式,介绍 ;
5.1 本地方式 、 隧道方式 、守护进程 ;
5.2 单个主机本地之间的数据传输(此时类似于cp命令的功能)。
5.3 借助rcp,ssh等通道来传输数据(此时类似于scp命令的功能)。
5.4 以守护进程(socket)的方式传输数据(这个是rsync自身的重要的功能)。
=======================开始部署===================================
[root@rsync ~]# rpm -qa | grep rsync #查看软件是否安装
rsync-3.0.6-12.el6.x86_64
[root@rsync ~]#
[root@rsync ~]# rsync --version #查看版本信息
rsync version 3.0.6 protocol version 30
Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes
rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you
are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.
配置rsync软件的配置文件
cat >>/etc/rsyncd.conf<
#created by HQ at 2017
##rsyncd.conf start##
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup #虚拟用户
secrets file = /etc/rsync.password
[backup] #备份模块(可以多个不同名称)
comment = "backup dir by oldboy"
path = /backup
EOF
########################### 配置文件注释 #####################################
#rsync_config
#created by oldboy 15:00 2016-11-15
##rsyncd.conf start##
uid = rsync # 用户 远端的命令使用rsync访问共享目录
gid = rsync # 用户组
use chroot = no # 安全相关
max connections = 200 # 最大连接数
timeout = 300 # 超时时间
pid file = /var/run/rsyncd.pid # 进程对应的进程号文件
lock file = /var/run/rsyncd.lock # 锁文件
log file = /var/log/rsyncd.log # 日志文件
ignore errors # 忽略错误
read only = false # 可写
list = false # 不能列表
hosts allow = 172.16.1.0/24 # 允许连接的服务器
hosts deny = 0.0.0.0/32 # 后勤组连接的服务器
auth users = rsync_backup # 虚拟用户
secrets file = /etc/rsync.password # 虚拟用户对应的用户和密码文件
[backup] # 模块名称
path = /backup # 服务端提供访问的目录
########################### 配置文件注释 #####################################
第一步 ; 创建备份存储的目录,和创建管理用户用户组
[root@rsync ~]# mkdir -p backup #创建目录
[root@rsync ~]# ls
backup install.log install.log.syslog optimize-init_sys.sh sysctl.conf
[root@rsync ~]# useradd rsync -s /sbin/nologin -M #创建rsync备份目录的管理用户与用户组
[root@rsync ~]# chown -R rsync.rsync backup/ #授权
[root@rsync ~]# ll
总用量 64
-rw-------. 1 root root 1510 11月 18 2017 anaconda-ks.cfg
drwxr-xr-x. 2 rsync rsync 4096 6月 21 23:05 backup
-rw-r--r--. 1 root root 30419 11月 18 2017 install.log
-rw-r--r--. 1 root root 9371 11月 18 2017 install.log.syslog
-rwxr-xr-x. 1 root root 4065 8月 5 2017 optimize-init_sys.sh
-rwxr-xr-x. 1 root root 2184 8月 5 2017 sysctl.conf
[root@rsync ~]#
第二步;创建服务端和客户端的身份认证文件
[root@rsync ~]# echo "rsync_backup:oldboy123" >/etc/rsync.password
[root@rsync ~]# chmod 600 /etc/rsync.password #配置文件权限只允许 root 用户查看
[root@rsync ~]# cat /etc/rsync.password
rsync_backup:oldboy123
[root@rsync ~]#
第三步 ;启动 rsync 服务
[root@rsync ~]# rsync --daemon #启动服务
[root@rsync ~]# netstat -lntup |grep rsync #rsync 端口是 873 端口
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2425/rsync
tcp 0 0 :::873 :::* LISTEN 2425/rsync
[root@rsync ~]#
CentOS 默认以 xinetd 方式运行 rsync 服务。rsync 的 xinetd 配置文件 在 /etc/xinetd.d/rsync。
要配置以 xinetd 运行的 rsync 服务需要执行如下的命令,也可以rsync --daemon 这样独立运行 。
# chkconfig rsync on
# service xinetd restart
======================= 客户端配置 ===============================
[root@localhost ~]# rpm -qa | grep rsync #查看软件是否安装,如已安装则无需在进行安装
rsync-3.0.9-18.el7.x86_64
[root@localhost ~]# echo "oldboy123" >/etc/rsync.password #创建认证
[root@localhost ~]# cat /etc/rsync.password
oldboy123
[root@localhost ~]#
[root@localhost ~]# rsync --daemon #启动服务
[root@localhost ~]# netstat -lntup |grep rsync #查看是否监听端口
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1397/rsync
tcp6 0 0 :::873 :::* LISTEN 1397/rsync
[root@localhost ~]#
[root@rsync ~]# rsync -av /etc/hosts 172.16.1.8:/mnt/
[email protected]'s password:
sending incremental file list
hosts
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
hosts
[root@localhost mnt]#
rsync 中的推和拉的概念 ;
####################### rsync备份服务部署扩展功能 ############################
①. rsync服务端多模块功能配置
配置文件多模块信息
[root@rsync backup]# cat /etc/rsyncd.conf
#rsync_config
#created by HQ at 2017
##rsyncd.conf start##
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup] #backup模块
comment = "backup dir by oldboy"
path = /backup
[nfsbackup] #新增加的一个模块
comment = "nfsbackup dir by oldboy"
path = /nfsbackup
说明:01:修改配置文件信息,实现多模块功能后,需要重启rsync服务
02:多模块信息配置好后,需要创建多模块指定备份目录
# 创建多模块目录
mkdir /nfsbackup
mkdir /nfsbackup -p
chown -R rsync.rsync /nfsbackup/
ll -d /nfsbackup/
# 进行多模块目录测试
rsync -avz /etc/rc.local rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
rsync -avz /etc/rc.local rsync_backup@172.16.1.41::nfsbackup --password-file=/etc/rsync.password
# 利用rsync客户端在备份目录中创建多级目录
①. 多级目录的表现格式为 backup/sa/ 如果sa后面没有接/ 表示的是文件不是目录
②. rsync客户端创建目录,只能创建一级,不能创建多级目录
# 利用rsync客户端同步数据(非常重要)
rsync -avz /tmp/ [email protected]::backup/ --password-file=/etc/rsync.password
说明:/tmp/ 表示同步tmp目录下内容,但不包含目录本身
rsync -avz /tmp [email protected]::backup/ --password-file=/etc/rsync.password
说明:/tmp 表示同步tmp目录下内容及目录本身
===============================================================
#rsync异常问题总结:
问题一:
[root@nfs tmp]# rsync -avz /etc/hosts [email protected]::backup
Password:
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
问题原因:
①. 认证的用户名或者密码输入的不正确
②. 认证文件编写有问题(认证内容信息)
③. 认证文件的权限设置的不正确(权限为600,文件用户和用户组还是root不变)
④. rsync服务端配置文件中指定的认证文件路径与实际认证文件路径不符
问题二:
[root@nfs01~]#rsync -avz /etc/hosts [email protected]::backup --password-file=/etc/rsync.password
rsync: failed to connect to 172.16.1.41: Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]
问题原因:
①. rsync服务没有启动
问题三:
rsync -avz /etc/sysconfig/network [email protected]::nfsbackup --password-file=/etc/rsync.password
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
解决原因:
①. rsync服务端没有模块指定的目录,需要进行创建和授权
问题四:
[root@web01 ~]# rsync -avz /etc/rc.local [email protected]::backup/sa/ --password-file=/etc/rsync.password
sending incremental file list
rsync: mkdir "sa" (in backup) failed: File exists (17)
rsync error: error in file IO (code 11) at main.c(576) [receiver=3.0.6]
rsync: connection unexpectedly closed (5 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]
①. 传输的文件或目录与备份服务目录中文件名称相同,拒绝传输
==========================End===================================
下面列出rsync常用选项:
选项 | 说明 |
---|---|
-a, ––archive | 归档模式,表示以递归方式传输文件,并保持所有文件属性,等价于 -rlptgoD (注意不包括 -H) |
-r, ––recursive | 对子目录以递归模式处理 |
-l, ––links | 保持符号链接文件 |
-H, ––hard-links | 保持硬链接文件 |
-p, ––perms | 保持文件权限 |
-t, ––times | 保持文件时间信息 |
-g, ––group | 保持文件属组信息 |
-o, ––owner | 保持文件属主信息 (super-user only) |
-D | 保持设备文件和特殊文件 (super-user only) |
-z, ––compress | 在传输文件时进行压缩处理 |
––exclude=PATTERN | 指定排除一个不需要传输的文件匹配模式 |
––exclude-from=FILE | 从 FILE 中读取排除规则 |
––include=PATTERN | 指定需要传输的文件匹配模式 |
––include-from=FILE | 从 FILE 中读取包含规则 |
––copy-unsafe-links | 拷贝指向SRC路径目录树以外的链接文件 |
––safe-links | 忽略指向SRC路径目录树以外的链接文件(默认) |
––existing | 仅仅更新那些已经存在于接收端的文件,而不备份那些新创建的文件 |
––ignore-existing | 忽略那些已经存在于接收端的文件,仅备份那些新创建的文件 |
-b, ––backup | 当有变化时,对目标目录中的旧版文件进行备份 |
––backup-dir=DIR | 与 -b 结合使用,将备份的文件存到 DIR 目录中 |
––link-dest=DIR | 当文件未改变时基于 DIR 创建硬链接文件 |
––delete | 删除那些接收端还有而发送端已经不存在的文件 |
––delete-before | 接收者在传输之前进行删除操作 (默认) |
––delete-during | 接收者在传输过程中进行删除操作 |
––delete-after | 接收者在传输之后进行删除操作 |
––delete-excluded | 在接收方同时删除被排除的文件 |
-e, ––rsh=COMMAND | 指定替代 rsh 的 shell 程序 |
––ignore-errors | 即使出现 I/O 错误也进行删除 |
––partial | 保留那些因故没有完全传输的文件,以是加快随后的再次传输 |
––progress | 在传输时显示传输过程 |
-P | 等价于 ––partial ––progress |
––delay-updates | 将正在更新的文件先保存到一个临时目录(默认为 “.~tmp~”),待传输完毕再更新目标文件 |
-v, ––verbose | 详细输出模式 |
-q, ––quiet | 精简输出模式 |
-h, ––human-readable | 输出文件大小使用易读的单位(如,K,M等) |
-n, ––dry-run | 显示哪些文件将被传输 |
––list-only | 仅仅列出文件而不进行复制 |
––rsyncpath=PROGRAM | 指定远程服务器上的 rsync 命令所在路径 |
––password-file=FILE | 从 FILE 中读取口令,以避免在终端上输入口令,通常在 cron 中连接 rsync 服务器时使用 |
-4, ––ipv4 | 使用 IPv4 |
-6, ––ipv6 | 使用 IPv6 |
––version | 打印版本信息 |
––help | 显示帮助信息 |
若使用普通用户身份运行 rsync 命令,同步后的文件的属主将改变为这个普通用户身份。
若使用超级用户身份运行 rsync 命令,同步后的文件的属主将保持原来的用户身份。
---------------------
作者:Ever-z
来源:CSDN
原文:https://blog.csdn.net/sinat_41075146/article/details/80733419