linux rsync安装使用

来源:互联网 发布:淘宝店铺搜索搜不出来 编辑:程序博客网 时间:2024/05/21 08:38

 Rsync简介
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:
可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
优化的流程,文件传输效率高。
可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
支持匿名传输,以方便进行网站镜象。

软件下载
rysnc的主页地址为:
http://rsync.samba.org/
目前最新版本为3.1.0pre1。可以选择从原始网站下载:
http://rsync.samba.org/ftp/rsync/

一、下载、安装rsync
#tar -zxvf rsync-3.1.0pre1.tar.gz
#cd rsync-3.1.0pre1
#./configure --prefix=/usr/local/rsync
#make 
#make install 

二、配置rsync server
1、配置/etc/rsyncd.conf(需要手动创建)
     rsyncd.conf的参数写在上边就是全局参数,写在模块里的就是模块参数
#vim /etc/rsyncd.conf
全局参数
uid = root                                  //运行RSYNC守护进程的用户
gid = root                                  //运行RSYNC守护进程的组
use chroot = no                      //不使用chroot
max connections = 4             // 最大连接数为4
strict modes =yes                  //是否检查口令文件的权限
port = 873                                //默认端口873
pid file = /var/run/rsyncd.pid      //pid文件的存放位置
lock file = /var/run/rsync.lock     //锁文件的存放位置
log file = /var/log/rsyncd.log      //日志记录文件的存放位置
          
模块参数
[backup]                                //这里是认证的模块名,在client端需要指定
path = /home/backup/        //需要做镜像的目录,不可缺少!
comment = This is a test       //这个模块的注释信息 
ignore errors                           //可以忽略一些无关的IO错误
read only = no                         // 是否只读
list = no                                    //不允许列文件
auth users = caiyou              //认证的用户名,如果没有这行则表明是匿名,此用户与系统用户无关
secrets file = /etc/rsync.secrets           //密码和用户名对比表,密码文件自己创建
hosts allow = 192.168.1.1,10.10.10.10      //允许主机
hosts deny = 0.0.0.0/0                                   //禁止主机
#transfer logging = yes

 2、配置rsync密码
 /etc/rsync.secrets(名字随便写,只要和上边配置文件里的一致即可),格式(一行一个用户)
格式      账号:密码
  #vi /etc/rsync.secrets
例子:
Hening:111111
权限:因为rsync.secrets存储了rsync服务的用户名和密码,所以非常重要。要将rsync.pas设置为root所有, 且权限为600。
#cd /etc
#chown root.root rsync.secrets 
#chmod 600 rsync.secrets

3.rsyncd.motd(配置欢迎信息,可有可无)
   # vi /etc/rsyncd.motd
   rsyncd.motd记录了rsync服务的欢迎信息,你可以在其中输入任何文本信息,如:
   Welcome to use the rsync services!

三、启动rsync server
 
    #/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
   
四、检查是否有873端口 
   [root@caiyou genghui]# netstat -anltp | grep rsync
    tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      15107/rsync         
    tcp        0      0 :::873                            :::*                             LISTEN      15107/rsync

五.配置rsync client 
1、设定密码
   #vi /etc/rsync.pas
   111111

   修改权限
   #cd /etc
   #chown root.root rsync.pas 
   #chmod 600 rsync.pas
2、client连接server
  从server端取文件
  rsync -vzrtopg --progress --delete hening@192.168.0.217::backup /home/backup --password-file=/etc/rsync.pas
  向server端上传文件
   rsync -vzrtopg --progress --password-file=/root/rsync.pas  /home/backup hening@192.168.0.217::backup
    这个命令将把本地机器/home/backup目录下的所有文件(含子目录)全部备份到rsync server的backup模块的设定的备份目录下。
    请注意如果路径结束后面带有"/",表示备份该目录下的内容,但不会创建该目录,如不带"/"则创建该目录。

    rsync用法:
        rsync [OPTION]… SRC DEST

  rsync [OPTION]… SRC [USER@]HOST:DEST

  rsync [OPTION]… [USER@]HOST:SRC DEST

  rsync [OPTION]… [USER@]HOST::SRC DEST

  rsync [OPTION]… SRC [USER@]HOST::DEST

  rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC[DEST]

     1)拷贝本地文件:当SRC和DEST路径信息都不包括单个冒好“:”分隔符时就启动这种工作模式,如:rsync-a /data /backup

      2)使用一个远程的shell程序(如rsh,ssh)来实现将本地机器的内容拷贝到远程机器。当DEST路径包括单个冒号“:”分隔符,就启动这种工作模式,如:rsync-avz *.c foo:src

      3)使用一个远程的shell程序(如rsh,ssh)来实现将远程机器的内容拷贝到本地机器。当SRC路径包含单个冒号“:”分隔符,就器送这种工作模式,如:rsync -avz foo:src/bar /backup

      4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含” ::”分隔符时启动该模式。如:rsync -av root@172.16.78.192::www /databack

      5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含” ::”分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www

      6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync-v rsync://172.16.78.192/www 


3、自动运行
1)vi /usr/local/rsync/time.sh     //制作脚本文件
把下边的内容复制进去
#!/bin/bash
/usr/bin/rsync -vzrtopg --progress --delete hening@192.168.0.217::backup /home/backup --password-file=/etc/rsync.pas
2) crontab -e
加入55 * * * * /usr/local/rsync/time.sh        //每55分运行一次time.sh脚本文件

六、 iptables
iptables -A INPUT -p tcp -s ! 11.22.33.44 --dport 873 -j DROP
如此, 只有 11.22.33.44 这个 client IP 能进入这台 rsync server.
命令介绍:-rvlHpogDtS
rsync命令参数
-v表示verbose详细显示
-z表示压缩
-r表示recursive递归
-t表示保持原文件创建时间
-o表示保持原文件属主
-p表示保持原文件的权限
-g表示保持原文件的所属组
-D --devices 保持设备文件信息
-a  归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-P表示代替-partial和-progress两者的选项功能
-e, –rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
--partial阻止rsync在传输中断时删除已拷贝的部分(如果在拷贝文件的过程中,传输被中断,rsync的默认操作是撤消前操作,即从目标机上
删除已拷贝的部分文件。)
--progress  是指显示出详细的进度情况
--delete       是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。
–delete-excluded   同样删除接收端那些被该选项指定排除的文件(即使这些文件也存在于发送方)
--exclude     不包含/ins目录
--size-only   这个参数用在两个文件夹中的差别仅是源文件夹中有一些新文件,不存在重名且被修改过的文件,因为这种文件有可能会因为内容被修改可大小一样,而被略过。这个参数可以大大地提高同步的效率,因为它不需要检查同名文件的内容是否相同。
--password-file来指定密码文件,内容包含server端指定认证用户的密码。
        这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。

hening@192.168.0.217::backup
hening是指server端指定认证的用户
192.168.0.217是指服务器端的ip
::backup 表示服务器端需要同步的模块名称;