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 http://rsync.samba.org/ftp/rsync/rsync-3.1.0.tar.gz
#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.conf pid file = /var/run/rsyncd.pid //rsyncd进程的pid文件存放路径 port = 873 //rsync端口 address = 172.16.0.1 //server ip uid = root gid = root //默认uid和gid是nobody use chroot = yes //使用chroot功能 read only = yes //只读模式 hosts allow = 172.16.0.10 //指定单个ip访问也可以使用单个网段 hosts deny = * //拒绝除了172.16.0.10外其他ip max 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/rsync service 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 [email protected]::
#rsync --list-only [email protected]::backup
同步客户端数据
#rsync -avzP [email protected]::backup /usr/local/test
password: //这里输入root密码,该密码是rsyncd.secrets提供,admin123
//该命令是用root用户登录到服务器上,把backup数据同步到本地当前目录/usr/local/test上,如果客户端上没有test目录时候,系统自动创建,当有test目录,需要注意该test权限
#rsync -avzP --delete [email protected]::backup /usr/local/test
//该命令表示客户端数据要与服务器端完全一致,如果/usr/local/test目录中有服务器上不存在文件,则删除,需要注意!
#rsync -avzP --delete --password-file=rsyncd.secrets [email protected]::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 [email protected]::backup /usr/local/test #每隔30分钟同步备份一次 #service crond restart
自己可以手动操作,如有出错,请指明thx