首页 > 代码库 > rsync存储服务器-全网备份

rsync存储服务器-全网备份

一、rsync功能介绍: 复制 (同步)的工具


全量及增量

本地和远程

Rsync英文全称为Remotesynchronization

本地复制cp(全量备份),rsunc也有此功能(增量)

远程复制scp(全量备份),rsync也有此功能(增量)

删除工具rm,rsync也有此功能


二、 Rsync的特性


支持拷贝特殊文件如链接文件,设备等

可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能

可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变  - p

可以实现增量同步,即只同步发生变化的数据,因此数据传输效率很高(tar-N)

可以使用rcp,rsh,ssh等方式来配合传输文件(rsync本身不对数据加密)

可以通过socket(进程方式)传输文件和数据(服务端和客户端)*****

支持匿名的或认证(无需系统用户)的进程模式传输,可实现方便安全的进行数据备份及镜像

 

注:cp scp rm仅仅是命令

rsync除了作为命令使用,还可以服务使用(持续运行一个进程)

client/server;客户端/服务器

brower/server:浏览器/服务器


三、 rsync 的三种工作模式:


1、用参数选项说明:


-v,--verhose 详细模式输出,传输时的进度等信息

-z,--compress 传输时进行压缩以提高传输效率,--compress-level=NUM可按级别压缩

-a,--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于–rtopgD1

===========================================================================

-r,--recursive对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写r

-t,--time 保持文件时间信息

-o,-owner 保持文件属主信息

-p,--perms 保持文件权限

-g,--group 保持文件属组信息

-p,--progress 显示同步的过程及传输时的进度等信息

-D,--devices 保持设备文件信息

-i,-links 保留软连接

-e,--rsh=COMMAND 使用的信道协议,指定替代rsh的shell。例如:ssh

--exclude=PATTERN 指定排除不需要传输的文件模式(和tar参数一样)

--exclude-from=file(文件名所在的目录文件)(和tar参数一样)

--bwlimit-RATE  limit socket I/O bandwidth (限速功能)


    2、本地复制/删除:


    本地复制:用法类似cp  拷贝文件或目录(copy) -i操作前确认,-p保持属性,-r目录。-a(dpr)

[root@oldboy opt]# rpm -qa rsync

rsync-3.0.6-12.el6.x86_64

[root@oldboy opt]# rsync -v /etc/hosts /opt/d

hosts

sent 227 bytes  received 31 bytes  516.00 bytes/sec

total size is 158  speedup is 0.61

[root@oldboy opt]# cat d

127.0.0.1   localhost localhost.localdomain localhost4localhost4.localdomain4

::1         localhost localhost.localdomainlocalhost6 localhost6.localdomain6

 

    本地删除:让null目录的内容和/tmp目录一样(删除原理)

rsync -avz --delete /null/ /tmp/

rsync -avz --delete /null/ /


    3、 通过通道(ssh,rsh)拷贝(异机)


push:推动

rsync –avz /opt root@10.0.0.31:/tmp/

pull:从服务器拽

rsync –avz root@10.0.0.31:/tmp//tmp/

借助SSH通道(加密传输):

push:推动

rsync –avz –e ‘ssh –p 22’ /opt root@10.0.0.31:/tmp/

pull:从服务器拽

rsync –avz –e ‘ssh –p 22’root@10.0.0.31:/tmp//tmp/

注:将来可以做密匙认证,传输时候可以不用密码了


    4、服务模式(daemon)*****


client                 /server

客户端                 /服务器

定角色:

client:nfs01,m01     server:backup


    1)服务端操作:


[root@backup ~]# cat /etc/rsyncd.conf   

#rsync_config_________________________start

#created by oldboy 15:01 2016-06-04

#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/rsync.lock            #==>锁文件(保证数据的安全)

log file = /var/log/rsyncd.log             #==>rsync的日志文件

[backup]                                   #==>模块名称

path = /backup                             #==>服务器端提供访问的目录

ignore errors                              #==>忽略错误信息

read only = false                           #==>客户端是否可上传

list = false                                #==>不能列表(不能ls)

hosts allow =172.16.1.0/24                 #==>允许那些服务器连接

(这俩host二者留其一就可以;不然外网IP也能推送数据过来)

hosts deny =0.0.0.0/32                     #==>拒绝那些机器连接

auth users = rsync_backup                   #==>虚拟用户

secrets file = /etc/rsync.password          #==>存放虚拟账号的用户和密码

#rsync_config_______________end

===================================================================

 

===================================================================

[root@backup ~]# mkdir /backup –p

==================================================
[root@backup ~]# id rsync
id: rsync:无此用户
[root@backup ~]# useradd -s /sbin/nologin rsync -M
[root@backup ~]# id rsync
uid=501(rsync) gid=501(rsync) 组=501(rsync)

========================================================

[root@backup ~]# ll -ld /backup
drwxr-xr-x 2 root root 4096 9月  23 18:52 /backup
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# ll -ld /backup               
drwxr-xr-x 2 rsync rsync 4096 9月  23 18:52 /backup

================================================================
[root@backup ~]# ll /etc/rsync.password
ls: 无法访问/etc/rsync.password: 没有那个文件或目录
[root@backup ~]# echo "rsync_backup:oldboy" >/etc/rsync.password
[root@backup ~]# ll /etc/rsync.password
-rw-r--r-- 1 root root 20 9月  23 18:58 /etc/rsync.password
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# ll /etc/rsync.password       
-rw------- 1 root root 20 9月  23 18:58 /etc/rsync.password

===================================================================

[root@backup ~]# rsync --daemon
[root@backup ~]# netstat -lntup|grep rsync
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      3649/rsync          
tcp        0      0 :::873                      :::*                        LISTEN      3649/rsync


     2)客户端操作:


[root@nfs01 ~]# echo "oldboy" >/etc/rsync.password

[root@nfs01 ~]# ll /etc/rsync.password

-rw-r--r-- 1 root root 7 9月  23 19:04 /etc/rsync.password

[root@nfs01 ~]# chmod 600 /etc/rsync.password

[root@nfs01 ~]# ll /etc/rsync.password      

-rw------- 1 root root 7 9月  23 19:04 /etc/rsync.password

推送命令:
[root@nfs01 ~]# rsync -avz /tmp/ rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password 
sending incremental file list

sent 920 bytes  received 13 bytes  88.86 bytes/sec
total size is 698  speedup is 0.75
[root@nfs01 ~]# touch /tmp/oldboy.txt
[root@nfs01 ~]# rsync -avz /tmp/ rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.password 
sending incremental file list
./
oldboy.txt

sent 979 bytes  received 35 bytes  96.57 bytes/sec
total size is 698  speedup is 0.69


    四、#####总结:”rsync服务端与客户端配置步骤


    ***====Rsync服务端:


1、查看rsync安装包

rpm -qa rsync

 

2、添加rsync服务的用户,管理本地目录的

useradd -s /sbin/nologin -M rsync

id rsync

 

3、生成rsyncd.conf配置文件

vi /etc/rsyncd.conf放入事先准备的配置。man rsyncd.conf去查(http://www.samba.org/ftp/rsync/rsyncd.conf.html)。

 

4、根据rsyncd.conf的auth users配置账户,远程连接的。

并根据secrets file参数生成密码文件

echo "rsync_backup:oldboy">/etc/rsync.password

cat /etc/rsync.password

 

5、为密码文件配置权限

chmod 600 /etc/rsync.password

ls -l /etc/rsync.password

 

6、创建共享的目录并授权rsync服务管理

mkdir /backup -p

chown -R rsync.rsync /backup

如果没有/backup目录,就会chdirfailed。

 

7、启动rsync服务并检查

rsync --daemon

ps -ef|grep rsync|grep -v grep

lsof -i :873

 

8、加入开机自启动

echo "/usr/bin/rsync --daemon">>/etc/rc.local

tail -1 /etc/rc.local

(over)


    ***===rsync客户端


1、生成连接服务器需要的密码文件

echo "oldboy" >/etc/rsync.password

cat /etc/rsync.password

 

2、为密码文件配置权限

chmod 600 /etc/rsync.password

ls -l /etc/rsync.password

 

3、同步文件

推送:

rsync -avz /tmp/rsync_backup@10.0.0.8::oldboy --password-file=/etc/rsync.password

rsync -avz /tmp/rsync://rsync_backup@10.0.0.8/backup/ --password-file=/etc/rsync.password

拉取:

rsync -avz rsync_backup@10.0.0.8::oldboy /tmp/--password-file=/etc/rsync.password

rsync -avz rsync://rsync_backup@10.0.0.8/backup//tmp/ --password-file=/etc/rsync.password

提示:上述的backup为模块名,不是路径。

    


    五、 Rsync排错思路


    1、 Rsync守护进程服务传输数据排错思路:

     ※rsync服务器拍错思路:

1)查看rsync服务配置文件路径是否正确,正确的默认路径为:/etc/rsyncd.conf

2)查看配置文件里host allow,host deny,允许的ip网段是否是允许客户端访问的ip网段

3)查看配置文件中path参数里的路径是否存在,权限是否正确(正常应为配置文件中的UID参数对应的属主和组)

4)查看rsync服务是否启动。查看命令为:ps –ef|grep rsync。端口是否在netstat –lnt|grep 873

5)查看iptables防火墙和selinux是否开启允许rsync服务通过,也可以考虑关闭

6)查看服务器rsync配置的密码文件是否为600的权限,密码文件格式是否正确,正确格式为用户名:密码,文件路径和配置文件里的secrectfiles参数对应

7)如果是推送数据,要查看下,配置rsyncd.conf文件中用户是否对模块下目录有可读写的权限

 

    2、 ※Rsync客户端排错思路

1)查看客户端rsync配置的密码文件是否为600的权限,密码文件格式是否正确,注意:仅需要有密码,并且和服务端的密码一致

2、用telnet连接rsync服务器ip地址873端口,查看服务是否启动(可测试服务端防火前是否阻挡)telnet 10.0.0.141  873

3)客户端执行命令时rsync –avzP rsync_backup@10.0.0.141::oldboy/test/test/ --password-file=/etc/rsync.password

注:此命令细节牢记,尤其10.0.0.41::oldboy/test/处的双冒号及随其后的oldboy为模块名称        

    3、自我模拟排错实践

不正规操作,自己排查熟悉操作流程


     六、Rsync优缺点


rsync优点:

1、    增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)

2、    远程Shell通道模式还可以加密(SSH)传输,socket(daemon)需要加密传输,可以利用vpn服务或ipsec服务

rsync缺点:

1、    大量小文件实时同步的时候,比对时间较长,有的时候,同步过程中,rsync进程可能会停止,僵死

2、    同步大文件,10G这样的大文件有时也会出问题,中断。未完整同步前,是隐藏文件,可以通过续传(--partial)等参数实现传输

3、    一次性远程拷贝可以用scp,大量小文件要达成一个包再拷贝


本文出自 “Linuxgao” 博客,请务必保留此出处http://linuxgao.blog.51cto.com/11934904/1930466

rsync存储服务器-全网备份