1 RSYNC概述
1.1rsync是Linux系统下的数据镜像备份工具,使用快速增量备份工具Remote Sync可以远程同步,可以在不同主机之间进行同步,可实现全量备份与增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适合用于架构集中式备份或异地备份等应用。同时Rsync支持本地复制,或者与其他SSH、rsync主机同步。
官方网站:rsynchttps://rsync.samba.org/ 1.2 rsync与scp之间的区别与SCP的比较:scp无法备份大量数据,类似Windows的复制。
而rsync边复制,边统计,边比较
查看rsync版本
[root@centos7-1 ~]# rsync --version 3.1.2 protocol version 31
Copyright (C) 1996-2015 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, prealloc
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.
2 Rsync特性和优点
- 可以镜像保存整个目录树和文件系统。
- 可以很容易做到保持原来文件的权限、时间、软硬链接等等。
- 无须特殊权限即可安装。
- 快速:第一次同步时 rsync 复制全部内容,但在下一次只传输修改过的文件。
- 压缩传输:rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
- 安全:可以使用scp、ssh等方式来传输文件。
- 支持匿名传输,以方便进行网站镜象。
- 选择性保持:符号连接,硬链接,文件属性,权限,时间等。
快速性:
第一次同步时 rsync 会将指定目录下全部内容复制同步,但在下一次只传输修改过的内容。
安全性:
可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
选择性保持:符号连接,硬链接,文件属性,权限,时间等。
压缩传输:
rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
常见备份分类
(1) 完整备份:每次备份都是从备份源将所有的文件或目录备份到目的地。
(2) 差量备份:备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性)。
(3) 增量备份:备份上次备份以后有变化的数据(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性)。
3 Rsync原理
- 运行模式和端口:
- 采用C/S模式(客户端/服务器模式)[ 实际上是一个点到点的传输,直接使用rsync命令即可完成 ]
- rsync监听的端口:873
- 四个名词的解释:
- 发起端:负责发起rsync同步操作的客户机叫做发起端,通知服务器我要备份你的数据。
备份源:负责响应来自客户机rsync同步操作的服务器叫做备份源,需要备份的服务器。
服务端:运行rsyncd服务,一般来说,需要备份的服务器。
客户端:存放备份数据。
- 数据同步方式:
推push:一台主机负责把数据传送给其他主机,服务器开销很大,比较适合后端服务器少的情况。
拉pull:所有主机定时去找一台主机拉数据,可能就会导致数据缓慢。
推:目的主机配置为rsync服务器,源主机周期性的使用rsync命令把要同步的目录推过去(需要备份的机器是客户端,存储备份的机器是服务端)。
拉:源主机配置为rsync服务器,目的主机周期性的使用rsync命令把要同步的目录拉过来(需要备份的机器是服务端,存储备份的机器是客户端)。
两种方案,rsync都有对应的命令来实现。
3、实验Rsync服务安装
[root@centos7-1 ~]# yum install -y xinetd rsync 服务端
[root@centos7-2 ~]# yum install -y xinetd rsync 客户端
[root@centos7-1 ~]# rsync --daemon
[root@centos7-1 ~]# netstat -anput | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2827/rsync
tcp6 0 0 :::873 :::* LISTEN 2827/rsync
rsync命令选项
- -a:--archive archive mode 权限保存模式,相当于 -rlptgoD 参数,存档,递归,保持属性等。
- -r:--recursive 复制所有下面的资料,递归处理。
- -p:--perms 保留档案权限,文件原有属性。
- -t:--times 保留时间点,文件原有时间。
- -g:--group 保留原有属组。
- -o:--owner 保留档案所有者(root only)。
- -D:--devices 保留device资讯(root only)。
- -l:--links 复制所有的连接,拷贝连接文件。
- -z:--compress 压缩模式,当资料在传送到目的端进行档案压缩。
- -H:--hard-links 保留硬链接文件。
- -A:--acls 保留ACL属性文件,需要配合--perms。
- -P:-P参数和 --partial --progress 相同,只是为了把参数简单化,表示传进度。
- --version:输出rsync版本。
- -v:--verbose 复杂的输出信息。
- -u:--update 仅仅进行更新,也就是跳过已经存在的目标位置,并且文件时间要晚于要备份的文件,不覆盖新的文件。
- --port=PORT:定义rsyncd(daemon)要运行的port(预设为tcp 873)。
- --delete:删除那些目标位置有的文件而备份源没有的文件。
- --password-file=FILE :从 指定密码文件中获取密码。
- --bwlimit=KBPS:限制 I/O 带宽。
- --filter “-filename”:需要过滤的文件。
- --exclude=filname:需要过滤的文件。
- --progress:显示备份过程。
通常常用的选项 –avz
- 建立测试用户(两台主机都需要操作):
[root@centos7-1 ~]#useradd ceshi1 && echo "123456" |passwd --stdin ceshi1
更改用户 ceshi1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@centos7-2 ~]#useradd ceshi1 && echo "123456" |passwd --stdin ceshi1
更改用户 ceshi1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@centos7-1 ~]# mkdir /var/www/html/ -p #创建目录
[root@centos7-2 ~]# mkdir /web-back
[root@centos7-2 web-back]# chown ceshi1:ceshi1 /web-back/
[root@centos7-1 ~]# rsync -avz /var/www/html/ ceshi1@192.168.6.22:/web-back
ceshi1@192.168.6.22's password: 输入ceshi1密码:123456
sending incremental file list
//
sent 7,111 bytes received 20 bytes 2,852.40 bytes/sec
total size is 121,749,648 speedup is 17,073.29
非默认ssh端口同步:
rsync -avz /var/www/html/ -e "ssh -p 2222" ceshi1@192.168.6.22:/ web-back /