rsync介绍
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步,
支持增量传输(只同步变化的数据新消息主要利用里quick check算法实现)
同步原理:
1)建立网络连接
2)信息比对
3)只将辩护熬多数据进行增量备份。
Rsync的特性
Rsync 的特性如下:
- 支持拷贝普通文件和特殊文件、设备等
- 可以又排除指定文件或目录同步的功能,相当于打包tar的排除功能
- 可以做到保持源文件或目录的权限、时间 、软硬连接、属主、组等所有属性均不改变 -p
- 可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar -N)
- 可以使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件(rsync本身不对数据加密)
- 可以通过socket(进程方式)传输文件和数据(服务器和客户端)****(重点)
- 支持匿名的认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像。
rsync软件作用说明:(1v4)
本地数据备份:cp
注意:用rsync同步目录的时候 ,源路径目录不能以/结尾,否则会把里面的内容同步过去,而不是同步的目录。
eg: rsync -a /etc /temp/
远程数据备份:scp
可见,两个文件都从nfs01这台机器上传过来了。
数据删除操作:rm (–delete) 准确来说应该叫替换
这里直接把/temp里面的东西全部替换过来了,把原来的东西全部删除了。所以当你要清空某个文件夹的时候 可以创建一个空目录,然后用 rsync --delete命令替换,比rm效率高很多。
怎么恢复呢? 参考scp 用另一台机器的tmp直接替换过来。
查看数据信息:ls
命令 rsync 【要查看的文件】
利用守护进程方式实现数据同步
man rsync中的守护进程方式说明
服务器端部署步骤
2.2 配置rsync服务端(将服务端配置到 backup 服务器上)
第一个里程碑: 软件是否存在
[root@backup ~]# rpm -qa |grep rsync
rsync-3.0.6-12.el6.x86_64
第二个里程碑: 进行软件服务配置
[root@backup ~]# vim /etc/rsyncd.conf
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
第三个里程:创建rsync备份目录管理用户(虚拟用户)
[root@backup ~]# id rsyncid: rsync: No such user
[root@backup ~]# useradd -s /sbin/nologin -M rsync
第四个里程碑: 创建数据备份储存目录,目录修改属主
[root@backup ~]# mkdir /backup/
[root@backup ~]# chown -R rsync.rsync /backup/
第五个里程碑: 创建认证用户密码文件
echo "rsync_backup:oldboy123" >>/etc/rsync.password
chmod 600 /etc/rsync.password
第六个里程碑: 启动rsync服
rsync --daemon
至此服务端配置完成
[root@backup ~]# ps -ef |grep rsync
root 2076 1 0 17:05 ? 00:00:00 rsync --daemon
root 2163 1817 0 17:38 pts/1 00:00:00 grep --color=auto rsync
[root@backup ~]# netstat -lntup |grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:*
LISTEN 2076/rsync
tcp 0 0 :::873 :::*
LISTEN 2076/rsync
配置rsync客户端(其他服务器为客户端)
第一个里程碑: 软件是否存在
[root@nfs01 ~]# rpm -qa |grep rsync
rsync-3.0.6-12.el6.x86_64
第二个里程碑: 创建认证文件
客户端的认证文件只需要有密码即可
echo "oldboy123" >>/etc/rsync.password
chmod 600 /etc/rsync.password
第三个里程碑: 实现数据传输
交互式
[root@nfs01 ~]# rsync -avzP /etc/hosts rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
hosts
357 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)
sent 63 bytes received 33 bytes 9.14 bytes/sec
total size is 357 speedup is 3.72
免交互式
[root@nfs01 ~]# rsync -avzP /etc/hosts rsync_backup@172.16.1.41::backup --
password-file=/etc/rsync.password
sending incremental file list
hosts
357 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)
sent 199 bytes received 27 bytes 150.67 bytes/sec
total size is 357 speedup is 1.58
rsync 命令同步参数选项&特殊参数
目录参数 参数说明
- -v,–verbose 详细模式输出,传输时的信息
- -z,–compress 传输时进行压缩以提高传输效率
–compress-level=NUM 可按级别压缩 局域网可以不用压缩 - -a,–archive (主要) 归档模式,表示以递归方式传输文件,并保持文件属性。等于-rtopgDl
- -r,–recursive 归档于-a 对子目录以递归模式,即目录下的所有目录都同样传输。小写r
- -t,–times 归档于-a 保持文件时间信息
- -o,–owner 归档于-a 保持文件属主信息
- -p,–perms 归档于-a 保持文件权限
- -g,–group 归档于-a 保持文件属组信息
- -P,–progress 显示同步的过程及传输时的进度等信息
- -e --rsh=COMMAND 使用的信道协议,指定rsh的shell程序 如ssh
- –exclude=PATTERN 指定排除不需要传输的文件信息(和tar参数一样)
- –exclude-from=file 文件名所在的目录文件,即课实现排除多个文件(和tar阐述一样)
- bwlimit=RATE 传输限速
- –delete 让目标目录SRC和源文件的dst一致,即无差异同步数据
4.1 特殊参数实践
指定ip:
[root@backup ~]# rsync --daemon --address=172.16.1.41
[root@backup ~]# netstat -lntup |grep 873
tcp 0 0 172.16.1.41:873 0.0.0.0:* LISTEN 2583/rsync
参数测试:
[root@nfs01 ~]# rsync -avzP /etc/services rsync_backup@172.16.1.41::backup --
password-file=/etc/rsync.password
sending incremental file list
services
641020 100% 19.34MB/s 0:00:00 (xfer#1, to-check=0/1)
sent 127417 bytes received 27 bytes 254888.00 bytes/sec
total size is 641020 speedup is 5.03
指定配置文件路径
[root@backup ~]# rsync --daemon --config=/etc/rsyncd.conf
[root@nfs01 ~]# rsync -avzP /etc/services rsync_backup@172.16.1.41::backup --
password-file=/etc/rsync.password
sending incremental file list
sent 29 bytes received 8 bytes 74.00 bytes/sec
total size is 641020 speedup is 17324.86
服务端指定服务端口:
[root@backup ~]# rsync --daemon --port=5222
[root@backup ~]# netstat -lntup|grep rsync
tcp 0 0 0.0.0.0:5222 0.0.0.0:* LISTEN 2598/rsync
tcp 0 0 :::5222 :::* LISTEN 2598/rsync