来源:自学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