4.6 第六步,启动rsync –daemon模式... 8
1.1 什么是Rsync?
rsync是一款开源的快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台
下面是官方的英文简单描述:rsync-afast,versatile,remote(and local)file-copying tool.
http://www.samba.org/ftp/rsync/rsync.html
1.2 Rsync简介
Rsync英文全称为Remote synchronization 从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似ssh带的scp命令。但又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。当然,rsync还可以再本地主机的不同分区或目录之间全量及增量的复制数据,这又类似cp命令。但同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。
一个rsync相当于scp,cp,rm,但是还优于他们每一个命令。
在同步备份数据时,默认情况下,rsync通过其独特的“quick check” 算法,它仅同步大小或者最好修改时间发生变化的文件或目录,当然也可根据权限,属主等熟悉的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据。
提示:传统的cp,scp工具拷贝每次均为完整的拷贝,而rsync除了可以完整拷贝外,还具备增量拷贝的功能,因此,从同步数据的性能及效率上,rsync工具更胜一筹。
CentOS5,rsync2.x比对方法,把所以的文件对比一遍,然后进行同步
CentOS6,rsync3.x比对方法,一遍比对差异,一边对差异的部分进行同步
1.3 rsync的特性
rsync的特性如下:
支持拷贝特殊文件如链接文件,设备等
可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能
可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变-p
可实现增量同步,既只同步发生变化的数据,因此数据传输效率很高,tar –N。
可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)
可以通过socket(进程方式)传输文件和数据(服务端和客户端)*****
支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像
第2章 rsync的企业工作场景说明2.1 定时同步
两台服务器之间数据同步(定时任务)
即cron+rsync
2.2 实时同步
sersync或者(inotify+rsync)
十、全网服务器数据备份解决方案提出及负责实施 200x.03 – 200x.09
1.针对公司重要数据备份混乱状况和领导提出备份全网数据的解决方案。
2.通过本地打包备份,然后rsync结合inotify应用把全网数据统一备份到一个固定存储服务器,然后在存储服务器上通过脚本检查并报警管理员备份结果。
3.定期将IDC机房的数据备份公司的内部不服务器,防止机房地震及火灾问题导致数据丢失。
成功永远比别人多做一点点! 早做一点点 ! ---老男孩
第3章 rsync的工作方式一般来说,rsync大致使用三种主要的传输数据的方式。分别为:
单个主机本地之间的数据传输(此时类似于cp命令的功能)
借助rcp,ssh等通道来传输数据(此时类似于scp命令的功能)
以守护进程(socket)的方式传输数据(这个是rsync自身的重要的功能)
以上的几种rsync的工作方式,我们可以通过man rsync帮助或者查看官方的手册获得:
3.1 local
Local: rsync[OPTION...] SRC... [DEST]
[root@nfs01 tmp]# rsync -avz /etc/hosts /tmp/
sending incremental file list
hosts
sent 200 bytes received 31bytes 462.00 bytes/sec
total size is 349 speedup is1.51
[root@nfs01 tmp]# ls /tmp/
hosts
=============================================================
[root@nfs01 tmp]# mkdir /data
[root@nfs01 tmp]# rsync -avz --delete /data/ /tmp/使/tmp目录和/data目录一致
sending incremental file list
./
deleting data/
deleting .ICE-unix/
deleting hosts
deleting 9
deleting 8
deleting 7
deleting 6
deleting 5
deleting 4
deleting 3
deleting 2
deleting 10
deleting 1
sent 29 bytes received 15bytes 88.00 bytes/sec
total size is 0 speedup is0.00
3.2 Access via remote shell:
Pull: rsync[OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync[OPTION...] SRC... [USER@]HOST:DEST
[root@nfs01 tmp]# ls
1 10 2 3 4 5 6 7 8 9 data
[root@nfs01 tmp]# rsync -avz -e 'ssh -p 52113' /tmp/ root@10.0.0.41:/tmp/
The authenticity of host '[10.0.0.41]:52113 ([10.0.0.41]:52113)'can't be established.
RSA key fingerprint is79:7b:02:4b:6e:fe:c8:d0:b4:cc:b2:27:35:8f:9f:ea.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[10.0.0.41]:52113' (RSA) to the list ofknown hosts.
reverse mapping checking getaddrinfo for bogon [10.0.0.41] failed -POSSIBLE BREAK-IN ATTEMPT!
root@10.0.0.41's password:
sending incremental file list
./
1
10
2
3
4
5
6
7
8
9
data/
sent 494 bytes received 209bytes 18.26 bytes/sec
total size is 0 speedup is0.00
[root@backup ~]# ls /tmp/
1 10 2 3 4 5 6 7 8 9 data
拉取实例语法:
rsync -avz -e 'ssh -p 22' oldboy@10.0.0.41:/tmp/ /tmp/
推送实例语法
rsync -avz -e 'ssh -p 52113' /tmp/ oldboy@172.16.1.41:/tmp/
提示:注意用户权限
上面例子中,oldboy需要对/tmp有相应的权限,否则无法同步
特别提示:
有斜线的话表示只将目录下面的内容传送过去
没有斜线的话表示传送目录下面的内容和目录本身
3.3 Access via rsync daemon:
Pull: rsync[OPTION...] [USER@]HOST::SRC... [DEST]
rsync[OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync[OPTION...] SRC... [USER@]HOST::DEST
rsync[OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
Usages with just one SRC arg and no DEST arg willlist the source files instead of copying.
daemon模式第一种推拉方法(常用)
rsync [option] SRC…. [user@]HOST::DEST
推
rsync –avz /backup/ rsync_backup@172.16.1.41::backup--password-file=/etc/rsync.password
拉
rsync -avz rsync backup@172.16.1.41::backup /backup/ --password-file=/etc/rsync.password
daemon模式第二种推拉方法
rsync[option] SRC… rsync://[user@]HOST/DEST
推
rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/backup –password-file=/etc/rsync.password
拉
rsync -avz rsync://rsync_backup@172.16.1.141/backup /backup/ --password-file=/etc/password
第4章 rsync–da emon配置
4.1 第一步
检查环境
[root@oldboy ~]# uname -r
2.6.32-573.el6.x86_64
[root@oldboy ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
服务端ip
[root@oldboy ~]# ifconfig eth0|head -2
eth0 Link encap:Ethernet HWaddr 00:0C:29:0E:3A:30
inetaddr:192.168.10.14 Bcast:192.168.10.255 Mask:255.255.255.0
客户端ip
[root@oldboy ~]# ip r|head -1
192.168.10.0/24 dev bond0 proto kernel scope link src 192.168.10.100
4.2 第二步,创建rsync专用系统账户
[root@oldboy ~]# useradd -M -s /sbin/nologin rsync
[root@oldboy ~]# grep "rsync" /etc/passwd
rsync:x:501:501::/home/rsync:/sbin/nologin
4.3 第三步,创建rsync专用目录
[root@oldboy ~]# mkdir /backup
[root@oldboy ~]# chown -R rsync:rsync /backup
[root@oldboy ~]# ll -d /backup
drwxr-xr-x 2 rsync rsync 4096 4月 18 10:39 /backup
4.4 第四步,创建配置文件
[root@oldboy ~]# cat /etc/rsyncd.conf
sync server
#created by lx 14:18 2015-6-18
##rsyncd.conf start##
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
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 = 192.168.10.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[backup]
comment = back server by lx 14:18 2015-6-18
path = /backup
4.5 第五步,创建密码配置文件
注,与/etc/rsyncd.conf配置文件中相互对应
[root@oldboy ~]# echo "rsync_backup:oldboy">/etc/rsync.password
[root@oldboy ~]# cat /etc/rsync.password
rsync_backup:oldboy
[root@oldboy ~]# chmod 600 /etc/rsync.password
[root@oldboy ~]# ll /etc/rsync.password
-rw------- 1 root root 20 4月 18 10:46 /etc/rsync.password
4.6 第六步,启动rsync –daemon模式
[root@oldboy ~]# rsync --daemon
[root@oldboy ~]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 2020 root 3u IPv4 12886 0t0 TCP *:rsync (LISTEN)
rsync 2020 root 5u IPv6 12887 0t0 TCP *:rsync (LISTEN)
[root@oldboy ~]# netstat -lntup|grep -w "873"
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2020/rsync
tcp 0 0 :::873 :::* LISTEN 2020/rsync
以上都是服务端配置部分
客户端配置部分
[root@oldboy ~]# echo "oldboy" >/etc/rsync.password
[root@oldboy ~]# cat /etc/rsync.password
oldboy
检验结果
在客户端批量创建10个文件
[root@oldboy ~]# touch /tmp/stu{01..10}
[root@oldboy ~]# ll /tmp/
总用量 40
-rw-r--r-- 1 nginx nginx 7 4月 18 10:55 stu01
-rw-r--r-- 1 nginx nginx 7 4月 18 10:55 stu02
-rw-r--r-- 1 nginx nginx 7 4月 18 10:55 stu03
-rw-r--r-- 1 nginx nginx 7 4月 18 10:55 stu04
-rw-r--r-- 1 nginx nginx 7 4月 18 10:55 stu05
-rw-r--r-- 1 nginx nginx 7 4月 18 10:55 stu06
-rw-r--r-- 1 nginx nginx 7 4月 18 10:55 stu07
-rw-r--r-- 1 nginx nginx 7 4月 18 10:55 stu08
-rw-r--r-- 1 nginx nginx 7 4月 18 10:55 stu09
-rw-r--r-- 1 nginx nginx 7 4月 18 10:55 stu10
同时查看服务端目录
[root@oldboy ~]# ll /backup/
总用量 0
4.7 第七步,检验
在客户端执行以下命令
[root@oldboy ~]# rsync -avz /tmp rsync_backup@192.168.10.14::backup--password-file=/etc/rsync.password
sending incremental file list
tmp/
tmp/stu01
tmp/stu02
tmp/stu03
tmp/stu04
tmp/stu05
tmp/stu06
tmp/stu07
tmp/stu08
tmp/stu09
tmp/stu10
tmp/.ICE-unix/
sent 646 bytes received 206bytes 81.14 bytes/sec
total size is 70 speedup is0.08
在服务端再次查看目录
[root@oldboy ~]# ll -R /backup/
/backup/:
总用量 4
drwxr-xr-x 3 rsync rsync 4096 4月 18 10:31 tmp
/backup/tmp:
总用量 40
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu01
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu02
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu03
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu04
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu05
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu06
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu07
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu08
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu09
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu10
特别注意:
客户端的目录后最好加上/
[root@oldboy ~]# rsync -avz /tmp/ rsync_backup@192.168.10.14::backup--password-file=/etc/rsync.password
sending incremental file list
./
stu01
stu02
stu03
stu04
stu05
stu06
stu07
stu08
stu09
stu10
.ICE-unix/
sent 636 bytes received 205bytes 80.10 bytes/sec
total size is 70 speedup is0.08
查看服务端目录
[root@oldboy ~]# ll /backup/
总用量 40
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu01
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu02
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu03
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu04
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu05
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu06
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu07
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu08
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu09
-rw-r--r-- 1 rsync rsync 7 4月 18 10:55 stu10
-v, --verbose increase verbosity
-q, --quiet suppress non-error messages
-a, --archive archive mode; equals -rlptgoD(no -H,-A,-X)
-r, --recursive recurse into directories 递归
-t, --times preserve modification times保持时间
-o, --owner preserve owner (super-useronly) 保持属主
-p, --perms preserve permissions 保持权限
-g, --group preserve group 保持用户组
-P same as --partial–progress
--progress show progress during transfer
--partial keep partially transferred files
-D same as --devices--specials
--devices preserve device files (super-user only)
--specials preserve special files
-l, --links copy symlinks as symlinks
4.8三种杀死进程的方法
第一种:kill `cat/var/run/rsyncd.pid`
第二种:pkill rsync
第三种:killall rsync
4.9rsync-daemon:排除文件
[root@backup backup]# ls
1 10 2 3 4 5 6 7 8 9 anaconda-ks.cfg data install.log install.log.syslog
排除多个有规律文件:
[root@nfs01 tmp]# rsync -avzrsync_backup@172.16.1.41::backup /tmp/ --password-file=/etc/rsync.password--exclude={1..10}
receiving incremental file list
./
anaconda-ks.cfg
install.log
install.log.syslog
data/
sent 201 bytes received 7608 bytes 5206.00bytes/sec
total size is 38451 speedup is 4.92
[root@nfs01 tmp]# ls
anaconda-ks.cfg data install.log install.log.syslog
排除单个文件:
[root@nfs01 tmp]# rsync -avzrsync_backup@172.16.1.41::backup /tmp/ --password-file=/etc/rsync.password --exclude=1
receiving incremental file list
./
10
2
3
4
5
6
7
8
9
anaconda-ks.cfg
install.log
install.log.syslog
data/
sent 308 bytes received 8033 bytes 5560.67bytes/sec
total size is 38451 speedup is 4.61
[root@nfs01 tmp]# ls
10 2 3 4 5 6 7 8 9 anaconda-ks.cfg data install.log install.log.syslog
排除多个无规律文件:
[root@nfs01 tmp]# rsync -avzrsync_backup@172.16.1.41::backup /tmp/ --password-file=/etc/rsync.password --exclude-from=../paichu.log
receiving incremental file list
./
1
10
2
3
4
5
6
7
8
9
install.log.syslog
sent 326 bytes received 1761 bytes 4174.00bytes/sec
total size is 15139 speedup is 7.25
[root@nfs01 tmp]# ls
1 10 2 3 4 5 6 7 8 9 install.log.syslog
[root@nfs01 tmp]# cat ../paichu.log
data
install.log
anaconda-ks.cfg
注意:拉取和推送都可以。
也可以服务端排除,配置文件里参数
exclude=12 3 4
第5章 rsync的优缺点5.1rsync的优点
1、增量备份、支持socket、集中备份(支持推拉,都是以客户端为参照物的)
2、远程shell,通道模式还可以加密传输,socket需要加密传输,可以利用×××服务或ipsec服务
5.2 rsync的缺点
1、大量小文件同步的时候,比对时间长,有的时候,rsync进程可能会停止
2、同步大文件,10G这样的文件有时候会出错,中断。未完整同步前,是隐藏文件。
第6章 rsync限速6.1scp限速100KB/s
[root@oldboy backup]# ls
02 03 04 05 06 07 08 09 10 back
[root@oldboy backup]# scp -P 22 -l 1000/backup/back root@172.16.1.41:/tmp
back 2% 2352KB 119.6KB/s 13:56ETA^CKilled by signal 2.
[root@oldboy backup]# scp -P 22 -l 100000/backup/back root@172.16.1.41:/tmp
back 50% 50MB 8.4MB/s 00:05 ETA^CKilled by signal 2.
此时的传输速率1000==120KB/s,100000===10MB/s
6.2rsync限速1024KB/s
rsync–auvzP --bwlimit=1本地文件远程文件,默认速度MB/s
[root@oldboy backup]# rsync -avzP--bwlimit=1 /backup/ rsync_backup@172.16.1.41::backup/--password-file=/etc/rsync.password sendingincremental file list
./
back
29589504 28% 1021.66kB/s 0:01:13
已传大小进度速度 剩余时间