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