网站地图    收藏   

主页 > 系统 > linux系统 >

Rsync学习记录 - Linux操作系统:Ubuntu_Centos_Debian

来源:自学PHP网    时间:2015-04-14 11:12 作者: 阅读:

[导读] Rsync学习记录rsync服务端排错思路1、查看rsync服务配置文件路径是否正确、正确的默认路径为/etc/rsyncd.conf2、查看配置文件里host allow。 host deny,允许的ip网段是否允许客户端访问的ip网段...

Rsync学习记录
 
rsync服务端排错思路 
1、查看rsync服务配置文件路径是否正确、正确的默认路径为/etc/rsyncd.conf 
2、查看配置文件里host allow。 host deny,允许的ip网段是否允许客户端访问的ip网段。 
3、查看配置文件中path参数的路径是否存在,权限是否正确(正常应为配置文件中的UID参数对应的属主和组) 
4、查看rsync服务是否启动,查看命令为: ps -f | grep rsync 端口是否存在 netstat -lnt | grep 873 
5、查看iptables防火墙和selinux是否开启允许rsync服务通过,也可考虑关闭。 
6、查看服务端rsync配置的密码文件是否为600权限,密码文件格式是否正确。 
7、如果是推送数据,要查看下,配置rsyncd.conf文件中用户是否对模块下目录有可读写的权限。 
 
启动rsync服务 
以守护进程方式启动rsync服务: 
rsync --daemon     #-----daemon表示以守护进程的方式启动rsync服务 
拓展:rsync的进程参数选项: 
--daemon   #-----daemon表示以守护进程的方式启动rsync服务 
--addrss   #-----绑定指定ip地址提供服务。 
--config=FILE  #---更改配置文件路径,而不是默认的/etc/rsyncd.conf 
--prot=PORT    #---更改其它端口号提供服务,而不是默认的873端口。 
提示:以上几个选项为了解内容,生产场景使用的不多。 
 
操作过程 
#rsync --daemon 
lsof -i  tcp:873 
 
rsync客户端排错思路 
1、查看客户端rsync配置的密码文件是否600的权限,密码文件格式是否正确,注意:仅需要有密码,并且和服务端的密码一致。 
2、用telnet连接rsync服务器ip地址873端口,查看服务是否启动(可测试服务端防火墙是否阻挡)。telnet 192.168.1.1 873 
3、客户端执行命令时 rsync -avzP rsync_backup@192.168.1.1::lianglab/test /test// --password-file=/etc/rsync.password 
此命令细节:尤其192.168.1.1::lianglab/test/处的双冒号及随其后的lianglab为模块名称。 
 
数据镜像备份工具 rsync 
随着linux系统的快速发展和普及,linux服务器,其稳定、高效的特性得到很多用户的肯定。 
实现数据的本地和异地备份、以保证数据的安全。 
 
rsync简介、传统的数据备份方式有cp命令和wget命令 
cp命令是源文件和目标文件都在本地。 
该命令仅实现对文件的一种完整复制,如果要复制的数据量巨大,那么备份的时间就会变得很长, 
wget命令通过网络进行备份,它不支持增量备份,每次都需要将所有的数据重新在网络上传输一遍, 
而不考虑哪些文件是更新过来,因此该命令的效率比较点。 
我们今天就介绍一个款实用的工具rsync, 
借助于这个工具能轻松实现数据的本地镜像和远程备份。 
 
 
什么是rsync 
rsync是linux 系统下的文件同步和数据传输工具,它采用rsync算数。使一个客户机和远程文件服务器 
之间的文件同步,通过rsync可以将同一个服务器的数据从一个分区备份到另一个分区,也可以将本地系统的数据 
通知网络传输方式备份到任何一个远程主机上;rsync可以在中断之后恢复传输;rsync只传输源文件和目标 
文件之间不一致的部分;rsync可以执行完整备份或增量备份。 
 
rsync的功能特性 
rsync即remote sync,从软件名称上就可以看出它所实现的功能,rsync有如下特性: 
·可以镜像保存整个目录树和文件系统。 
·可以增量同步数据,文件传输效率高,因而同步时间很短。 
·可以保持原有文件的权限、时间等属性。 
·加密传输数据,保证了数据的安全性。 
·可以使用rcp、ssh等方式来传输文件,当然也可以直接通过socket连接传输文件。 
支持匿名传输。 
 
-v 告诉rsync详细说明正在发生什么 
-a 告诉rsync从源目录 复制所有文件和目录 
-z 告诉rsync压缩数据以使网络传输更快(在进入线缆前我们的数据将被加密和压缩) 
-e ssh 告诉rsync使用我们的SSH shell来执行网络传输,你可以通过设置RSYNC_RSH shell环境变量来避免每次输入rsync命令时都需要加上这个参数,参考rsync的man手册获得详细信息。 
--delete 告诉rsync删除备用服务器上文件,如果它们在主服务器已经不存在的话(这个选项不会移除任何主或源数据)。 
/www/ 这是SSH客户端上源目录,它后面带有斜线,如果你想要rsync复制整个目录以及它下面的内容,这个斜线就是必需的 
 
10.1.1.2:/www 这是目标ip地址和目标目录 
 
利用rsync搭建数据镜像备份系统 
rsync有4种应用模式,第一种是shell应用模式,也叫本地模式, 
第二种是远程shell模式,它是利用ssh执行底层连接和加密传输; 
第三种是查询模式,与ls命令实现的功能类似。 
第四种是服务器模式,平时所说的搭建rsync服务器就是指这种模式。 
 
rsync 借助ssh通道技术案例 
#rsync -avzP /etc/hosts -e "ssh -p30000" lianglab@192.168.1.110:/tmp/ 
意思:把本地/etc/hosts文件推送到远端ip为192.168.110tmp目录下,SSH端口号为30000 
#rsync -avzP -e "ssh -p30000" lianglab@192.168.1.110:/tmp/hosts . 
意思:从远端的ip把这个文件拉到本地来。 
 
 
我们解释一下拉取案例的语法: 
 rsync -avzP -e "ssh -p 22" lianglab@192.168.1.110:/opt /tmp 
 说明: 
 1、-avz相当于-vzrtopgD1,表示同步时文件和目录属性不变。 
 2、-P显示同步的过程,可以用--progress替换。 
 3、-e "ssh -p 22" 表示通过ssh的通道传输数据,-p 22可省略。 
 4、lianglab@192.168.1.110:/opt 远程的主机系统用户,地址,路径 
 5、/tmp本地的路径。 
 实例:通过root用户从192。168.1.110的opt目录(包含目录本身)把数据拉到本地的/tmp目录。 
  
 推送案例: 
 raync -vzrtopP -e "ssh -p 22" /etc lianglab@192.168.1.110:/tmp 
 实例:通过root用户把本地的/tmp目录(不包括目录本身)推送到192.168.1.100的/opt目录。 
 #rsync -vzrtopP -e 'ssh -p 22' /tmp root@192.168.1.100:/opt 
 #和拉取的例子几乎一样,只是把源和目的调换一下即可。 
 password:输入连接主机密码即可。 
  
 特别说明: 
 1上文的数据同步都是通过加密传输,因为通过了ssh通道进行传输, 
 2、在传输前需要进行连接用户(一般为系统用户)密码验证,需要手工输入密码,这里我们借助前面章节的ssh 
 key 密钥免登陆验证的方式来实现,无交互验证数据传输。 
 3、rsync软件必须安装在本地及远程所有机器上。 
  
 借助ssh key密钥实现数据免登陆验证加密传输 
说明,如果事先设置了ssh key密钥免登陆验证,即可以用rsync 通过ssh方式免登陆验证同步传输数据, 
这是生产场景常用的方法之一。 
配置ssh key密钥实现数据免登陆验证。 
 
使用ssh通道批量传输数据脚本 
vi lianglab.sh 
#!/bin/sh 
./etc/init.d/functions 
if [$# -ne 1];then 
echo "Usage:$0 argv" 
exit 
fi 
for ip in 17 18 
do 
#scp -P30000 $1 lianglab@192.168.1.$ip:~ >&/dev/null&&\ 
#ssh -p30000 -t lianglab@192.168.1.$ip sudo rsync ~/$1 /etc >&/dev/null 
rsync -avzP $1 -e "ssh -p 30000" lianglab@192.168.1.$ip:~ >&/dev/null 
ssh -p30000 -t lianglab@192.168.1.$ip sudo rsync ~/$1 /etc >&/dev/null 
if [ $? -eq 0 ];then 
action "liang $1 successful." /bin/true 
else 
action "liang $1 failure." /bin/false 
fi 
done 
 
问题错误一:no route to host问题 
对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。 
解决方法:关闭防火墙,或者把防火墙的tcp udp 的873端口打开,允许rsync通过,他们可以使用telnet IP 873检查。 
 
实战练习: 
某公司有一台web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做 
一个周期性定时备份。要求如下: 
每天晚上00点整在web服务器A上打包备份网站程序目录并通过rsync命令推送到服务器B上备份保留(备份思路可以是先在本地按日期 
打包,然后在推到备份服务器上) 
具体操作如下: 
1、web服务器A和备份服务器B的备份目录必须都为/backup 
2、web服务器站点目录假定为(/var/www/html
 
定时备份脚本 
cd /var/www &&\ 
tar zcf /backup/192.168.1.110/html_$(date +%F).tar.gz./html &&\ 
cd /backup/ &&\ 
rsync -az . rsync_backup@192.168.1.100::backup --password-file=/etc/rsync.password >&/dev/null 
find /backup --type f -name "*.gz" -mtime +7|xargs rm -f 
 
[root @director rsync-3.0.4]# tar zxvf rsync-3.0.4.tar.gz 
 
 
[root @director rsync-3.0.4]# cd rsync-3.0.4 
 
[root @director rsync-3.0.4]# ./configure 
 
config.status: creating popt/dummy 
config.status: creating shconfig 
config.status: creating config.h 
 
    rsync 3.0.4 configuration successful 
 
[root @director rsync-3.0.4]# 
 
[root @director rsync-3.0.4]# make 
 
[root @director rsync-3.0.4]# make install 
 
1、本地shell模式 
本地shell主要用于复制制定目录到另一个目录,例如: 
 
[root @director src]# rsync -av rsync-3.0.4 /tmp 
------------省略-------------- 
rsync-3.0.4/zlib/zlib.h 
rsync-3.0.4/zlib/zutil.c 
rsync-3.0.4/zlib/zutil.h 
rsync-3.0.4/zlib/zutil.o 
 
sent 5472930 bytes  received 5190 bytes  10956240.00 bytes/sec 
 
[root @director src]# rsync -av rsync-3.0.4/ /tmp 
 
sent 5472780 bytes  received 5189 bytes  10955938.00 bytes/sec 
total size is 5454825  speedup is 1.00 
[root @director src]# 
 
rsync -av rsync-3.0.4 /tmp和rsync -av rsync-3.0.4/ /tmp 两个命令是有点差距的。 
明显差距就是源参数末尾的斜杠,如果源参数的末尾没有斜杠,就将指定的源目录复制到制定的目录; 
如果源参数末尾有斜杠,就会复制制定源目录中的内容到目录中。 
 
命令中:“-a” 即为“--archive”(归档模式),表示以递归方式传输文件,并保持所有文件属性; 
        “-v”即为“--verbose” 表示输出详细模式信息。  
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论