rsync(remote sync)远程同步-------是类unix系统下的数据镜像备份工具
特性:可以镜像保存整个目录树和文件系统
有选择性的保持原来文件的权限,时间,软硬链接等。
无须特殊权限即可安装
快速:对于多个文件来说,内部流水线减少文件等待延时,传输过程中可以实行压缩以及解压缩,因此可以使用更少带宽
安全:可以使用scp、ssh等方式来传输文件,也可以通过直接的socket连接,支持匿名传输,理想的镜像工具
安装过程
可通过http://rsync.samba.org 下载rsync安装方法
在线安装、rpm安装方式
#yum install rsync //适用fedora或者centos (#apt-get install rsync 适用ubuntu、debian系统)#rpm -ivh rsync-**.rpm //该软件存放在镜像文件安装包下
源码安装安装前安装gcc等工具#yum install gcc gcc-c++ -y
下载rsync源码包#wget
#tar zxvf rsync-3.1.0.tar.gz
#cd rsync-3.1.0
#./configure --prefix=/usr/local/rsync && make && make install //安装存放路径/usr/local/rsync创建配置文件rsync三个配置文件(默认该三个配置文件不存在,需要手动创建) rsyncd.conf 主配置文件
rsyncd.secrets 密码文件
rsyncd.motd 服务器信息文件创建配置文件
#mkdir /usr/local/rsync/etc
#cd /usr/local/rsync/etc
#touch rsyncd.conf rsyncd.secrets rsyncd.motd
#chown root.root rsyncd.secrets
#chmod 600 rsyncd.secrets //rsyncd.secrets文件属性为root所有,且权限为600,否则无法备份
配置文件
#vi rsyncd.confpid file = /var/run/rsyncd.pid //rsyncd进程的pid文件存放路径port = 873 //rsync端口address = 172.16.0.1 //server ipuid = root gid = root //默认uid和gid是nobodyuse chroot = yes //使用chroot功能read only = yes //只读模式hosts allow = 172.16.0.10 //指定单个ip访问也可以使用单个网段hosts deny = * //拒绝除了172.16.0.10外其他ipmax connection = 5 //客户端最多连接数motd file = /usr/local/rsync/etc/rsyncd.motd //定义服务器信息log file = /var/log/rsync.log //定义rsync日志文件存放路径transfer loggin = yes //是否开启传输日志log format = %t %a %m %f %b //定义日志格式syslog facility = local3 //指定 rsync 发送日志消息给 syslog 时的消息级别。timeout = 500 //超时时间
示例1
备份服务器上的/usr/local/src目录下有test目录,备份时候把test目录排除
#more rsyncd.conf[backup] //提供链接名,自己定义path = /usr/local/src //指定文件目录所在位置,必须指定list = yes //把rsync服务器上提供同步数据的目录在服务器模块是否显示出来,默认是yes,如果不想显示出来则改成no,为了安全 ignore errors //忽略IO错误auth users = root //认证用户是root,是必须在服务器上存在的用户secrets file = /etc/rsyncd/rsyncd.secrets //指定密码文件存放位置comment = this is back server directory //连接时显示信息,自己定义exclude = test/ //排除文件,如果有多个目录,可以exclude xxx/ xxx/
设定rsyncd.secrets文件
格式为 user:password
如 root:admin123 (非系统用户,自己定义)
设定rsyncd.motd文件
定义rsync服务器的登录信息
#more rsyncd.motd
##welcome rsyncd services##
启动rsync服务器已经防火墙配置
启动rsync服务器的方法有两种
1、--daemon 参数方式,让rsync服务器模式运行
#rsync --daemon --config=/usr/local/rsync/etc/rsyncd.conf //--config是指定主配置文件,如果在/etc下则可以不加参数
2、xinetd 方式
#vi /etc/services
rsync 873/tcp #rsync
rsync 873/udp #rsync
#vi /etc/xinetd.d/rsyncservice rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
#打开rsync这个daemon,一旦有rsync客户端连接时,xinetd会把它转给rsyncd port873
重启rsync
#service xinetd restart
配置防火墙
#iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT //开放873端口
通过rsync客户端同步数据
rsync同步有六种工作模式
1、拷贝本地文件,当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种模式
2、使用一个远程shell程序来实现将本地机器的内容拷贝到远程服务器,当DST路径地址包含单个冒号":"分隔符时启动该模式
3、使用一个远程shell程序来实现将远程机器的内容拷贝到本地服务器,当SRC路径地址包含单个冒号":"分隔符时启动该模式
4、从远程rsync服务器中拷贝文件到本地上,当SRC路径信息包含"::"分隔符启动该模式
5、从本地拷贝文件到远程rsync服务器中,当DST路径信息包含"::"分隔符启动该模式
6、列出远程机文件列表,这类似于rsync传输,不过只要在命令中省略掉本地机信息即可
rsync参数
-r //递归
-l //链接文件,拷贝链接文件
-p //保持文件原有属性
-t //保持文件原有时间
-g //保持文件原有用户在
-o //保持文件原有属主
-D //块设备文件,拷贝块文件
-z //传输时压缩
-P //传输进度
-v //传输时的进度等信息,和-P有区别
-e //ssh的参数建立起加密连接
-u //进行更新,防止本地新文件被重写,注意两者机器时钟--progress //显示详细进度信息==-P--delete //如果服务器端删除一个文件,那么客户端也删除相应文件,保持一致
--password-file=/path/password //指定密码文件。可在脚本中使用而无需交互式输入验证密码,该文件只要属主可读才生效
示例2;
查看rsync服务器提供哪些可用数据源
#rsync --list-only root@192.168.0.1::
#rsync --list-only root@192.168.0.1::backup
同步客户端数据#rsync -avzP root@192.168.0.1::backup /usr/local/test
password: //这里输入root密码,该密码是rsyncd.secrets提供,admin123
//该命令是用root用户登录到服务器上,把backup数据同步到本地当前目录/usr/local/test上,如果客户端上没有test目录时候,系统自动创建,当有test目录,需要注意该test权限
#rsync -avzP --delete root@192.168.0.1::backup /usr/local/test
//该命令表示客户端数据要与服务器端完全一致,如果/usr/local/test目录中有服务器上不存在文件,则删除,需要注意!#rsync -avzP --delete --password-file=rsyncd.secrets root@192.168.0.1::backup /usr/local/test//--password-file=rsyncd.sectets ,这是我们以root用户登录rsync服务器同步数据时,读取rsyncd.secrets这个文件,这个文件内容是root用户的密码。需要如下操作
#touch rsyncd.secrets#echo "admin123" > rsync.secrets#chmod 600 rsyncd.secrets
需要注意该密码文件的权限只要属主刻度
如果需要加入crontab计划
#crontab -e*/30 * * * * /usr/local/rsync/bin/rsyncd -avz --delete --password-file=/usr/local/rsync/etc/rsyncd.secrets root@192.168.0.1::backup /usr/local/test #每隔30分钟同步备份一次#service crond restart
自己可以手动操作,如有出错,请指明thx