rsync安装和使用

admin 发布于:2014-2-7 11:03 分类:Linux  有 1696 人浏览,获得评论 0 条 标签: rsync 

实验环境
ip: 192.168.1.100 (rsync服务端)
ip: 192.168.1.110 (rsync客户端)


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

 

二、rysnc的主页地址为:http://rsync.samba.org/

 

三、rysnc安装

软件包安装
# sudo apt-get  install  rsync  注:在debian、ubuntu 等在线安装方法;
# yum install rsync    注:Fedora、Redhat 等在线安装方法;
# rpm -ivh rsync       注:Fedora、Redhat 等rpm包安装方法;


源码包安装
#tar zxvf rsync.tar.gz
#cd rsync
#./configure --prefix=/usr/local/rsync
#make
#make install

 

四、rsync配置(服务器IP:192.168.1.100)(主要有以下三个配置文件)
rsyncd.conf(主配置文件)
rsyncd.secrets(密码文件)
rsyncd.motd(rysnc服务器信息)

 

4.1 配置/etc/rsyncd.conf(需要手动生成)
rsyncd.conf的参数写在上边就是全局参数和写在模块里的就是模块参数
#vi /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 = yes               // 只读
list = no                     //不允许列文件
auth users = backup_username     //认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
secrets file = /etc/rsync.pw           //密码和用户名对比表,密码文件自己生成
hosts allow = 192.168.1.1,192.168.1.100 //允许主机
hosts deny = 0.0.0.0/0                  //禁止主机
#transfer logging = yes


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

 

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

 

五、Rsync 的启动

5.1 守护进程方式
#/usr/local/rsync/bin/rsync --daemon  --config=/etc/rsyncd.conf

5.2 xinetd方式

修改services加入如下内容,修改的目的是让系统知道873端口对应的服务名为rsync。如没有的话就自行加入。
# nano -w /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 client要连接時, xinetd会把它转介給 rsyncd(port 873)。然后service xinetd restart, 使上述设定生效.

#service xinetd restart

5.3 开机启动
#vi /etc/rc.local
#/usr/local/rsync/bin/rsync --daemon  --config=/etc/rsyncd.conf


或者

#chkconfig rsync on

 

六、验证、结束进程、防火墙设置
#ps -aux |grep rsync
 root       59120  0.0  0.2  1460   972  ??  Ss    5:20PM   0:00.00  /usr/local/rsync/bin/rsync –daemon

#netstat -an |grep 873
tcp4       0      0  *.873                  *.*                    LISTEN

#kill -9 pid的值   或者  #kill -15 进程名


#iptables -A INPUT -p tcp -s ! 192.168.1.110 --dport 873 -j DROP  或者  可以先service iptables stop 将防火墙关掉(测试环境下)

 

七、客户端测试(ip:192.168.1.110)(需要安装rsync客户端)
#vi /etc/rsync.client.pw
backup_password

#rsync -avz --exclude ".svn"  --password-file=/etc/rsync.client.pw  backup_username@192.168.1.100::backup /var/www/backup   (远程文件备份到本地)


参数说明
-v, --verbose  详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, --links 保留软链结
-L, --copy-links 想对待常规文件一样处理软链结
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
--safe-links 忽略指向SRC路径目录树以外的链结
-H, --hard-links 保留硬链结     -p, --perms 保持文件权限
-o, --owner 保持文件属主信息     -g, --group 保持文件属组信息
-D, --devices 保持设备文件信息    -t, --times 保持文件时间信息
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, --dry-run现实哪些文件将被传输
-W, --whole-file 拷贝文件,不进行增量检测
-x, --one-file-system 不要跨越文件系统边界
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
--delete 删除那些DST中SRC没有的文件
--delete-excluded 同样删除接收端那些被该选项指定排除的文件
--delete-after 传输结束以后再删除
--ignore-errors 及时出现IO错误也进行删除
--max-delete=NUM 最多删除NUM个文件
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
--force 强制删除目录,即使不为空
--numeric-ids 不将数字的用户和组ID匹配为用户名和组名
--timeout=TIME IP超时时间,单位为秒
-I, --ignore-times 不跳过那些有同样的时间和长度的文件
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
-T --temp-dir=DIR 在DIR中创建临时文件
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
-P 等同于 --partial
--progress 显示备份过程
-z, --compress 对备份的文件在传输时进行压缩处理
--exclude=PATTERN 指定排除不需要传输的文件模式
--include=PATTERN 指定不排除而需要传输的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version 打印版本信息
--address 绑定到特定的地址
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
--port=PORT 指定其他的rsync服务端口
--blocking-io 对远程shell使用阻塞IO
-stats 给出某些文件的传输状态
--progress 在传输时现实传输过程
--log-format=formAT 指定日志文件格式
--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes per second      -h, --help 显示帮助信息

 

 

 

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]
对应于以上六种命令格式, rsync 有六种不同的工作模式:
1) 拷贝本地文件。当 SRC 和 DES 路径信息都不包含有单个冒号 ":" 分隔符时就启动这种工作模式。
2) 使用一个远程 shell 程序 ( 如 rsh 、 ssh) 来实现将本地机器的内容拷贝到远程机器。当 DST 路径地址包含单个冒号 ":" 分隔符时启动该模式。
3) 使用一个远程 shell 程序 ( 如 rsh 、 ssh) 来实现将远程机器的内容拷贝到本地机器。当 SRC 地址路径包含单个冒号 ":" 分隔符时启动该模式。
4) 从远程 rsync 服务器中拷贝文件到本地机。当 SRC 路径信息包含 "::" 分隔符时启动该模式。
5) 从本地机器拷贝文件到远程 rsync 服务器中。当 DST 路径信息包含 "::" 分隔符时启动该模式。
6) 列远程机的文件列表。这类似于 rsync 传输,不过只要在命令中省略掉本地机信息即可。