1 什么是rsync;
rsync 包括如下的一些特性:
* can update whole directory trees and filesystems
能更新整个目录 和树和文件系统;
* optionally preserves symbolic links, hard links, file ownership, permissions, devices and times
有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
* requires no special privileges to install
对于安装来说,无任何特殊权限要求;
* internal pipelining reduces latency for multiple files
对于多个文件来说,内部流水线减少文件等待的延时;
* can use rsh, ssh or direct sockets as the transport
能用rsh、ssh 或直接端口做为传输入端口;
* supports anonymous rsync which is ideal for mirroring
支持匿名rsync 同步文件,是理想的镜像工具;
2 rsync 服务器的理由;
另外对于大量文件从一台服务器上迁移到另一台服务器上,rsync的确是一个不可不用传输工具。公司有一台文件服务器,配置是CPU Intel Celeon 333Mhz,内存128M,硬盘IDE80Gx3=240G,里面仅是第一个硬盘的12G的分区安装系统,用了256M做为交换分区,其它的空间我都用 来存数据,通过LVM卷来管理磁盘空间,我分了一个180G的空间给数据存放,当时数据存储容量已经达到了160多G。当时的情况是服务器空间有限,没做 本地备份。更不可能新增硬盘上去,因为这台机器没做RAID,硬盘坏掉一个,数据会全毁掉,安全性没有一点保障。在这种情况下,为了保证数据的安全性,我 被迫做了一台带有Raid5支持的文件服务器。在选择如何把数据文件完整的传输到新服务器上,我想到了很多的工具,最后想到了rsync 。我花了十分钟架设并调试了rsync,然后就开工文件传输,因为文件服务器上的文件太多,老的文件服务器配置又低,大约花了两三天吧才得以把所有文件传 输完毕.
>>>>>>>>>>>[以上参考linux sir ]
Rsync 是一种特殊的功能强大的文件传输工具。它可以通过网络对文件执行特殊的上传和下载 (同步),并只传输被改变的数据。
例如:如果您有一个50M的本地文件副本并且有一个更新版本的文件在远程系统。如果这两个文件之间只有1M的差别,那么只有这1M的改变会在2个系统中传输。
由于只传输很少的数据,rsync非常适合在拨号网络或带宽很小的网络中使用。但是,如果是在两个系统中拷贝一个新文件,它相对于其他的文件传输协议(FTP或SCP)来说没有任何优势。
rsync命令 会把远程的发生改变的数据拷贝到本地。 rsync命令运行 时会使用大量的CPU时间。当您使用rsync的时候,请确认您的系统不会受增加的负载 的影响。
>>>>>>>>>>[这里是rh 介绍]
安装设置 install config
1. yum install rsync下载
2.架设rsync服务器 (rsync的prot是873,或者你可以用ssh配合)
vi /etc/rsync.conf (全局)
pid file = /var/run/rsyncd.pid 注:告诉进程写到 /var/run/rsyncd.pid 文件中;
port = 873 注:指定运行端口,默认是873,您可以自己指定;
address = 192.168.1.171 注:指定服务器IP地址;
uid = nobody 指定执行的身份
gid = nobdoy
use chroot = yes 用chroot,在传输文件之前,服务器守护程序在将chroot 到文件系统中的目录中,这样做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超级用户 权限。另外对符号链接文件,将会排除在外。
read only = yes
#limit access to private LANs
hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0 指定IP或网段
max connections = 5 最大连线的数量
motd file = /etc/rsyncd/rsyncd.motd 当用户登录服务器时候出现的信息,可自行编写
局部模块
[abcd]
path = /abcd 注:指定文件目录所在位置,这是必须指定的;
auth users = abcd 注:认证用户是abcd ,是必须在 服务器上存在的用户;
list=yes 注:list 意思是把rsync 服务器上提供同步数据的目录在服务器上模块是否显示列出来。默认是yes 。如果你不想列出来,就no ;如果是no是比较安全的,至少别人不知道你的服务器上提供了哪些目录。你自己知道就行了;
ignore errors 注:忽略IO错误,详细的请查文档 ;
secrets file = /etc/rsyncd/rsyncd.secrets 注:密码存在哪个文件;
comment = abcd data 注:注释可以自己定义,写什么都行,写点相关的内容就行;
exclude = beinan/ samba/ exclude 是排除的意思
3.编写rsyncd.secrets
vi /etc/rsyncd.secrets
adcd:passwd
4.chown abcd.abcd rsyncd.secrets 这里根据你的用户设置
chmod 600 rsyncd.secrets 保持权限的严格
>>>>>>>>>
启动rsync
首先注意的是rsync的端口是873
可以用system-config-securitylevel 开启图形化iptables 来开启这个端口
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
iptables -L 查看一下防火墙是不是打开了 873端口;
1.vi /etc/xintd.d/rsync
disable =no
2./etc/init.d/rsyncd start
>>>>>>>>>
使用
由于之前已经设定了rsyncd.secrets的账号密码了,
所以可以
rsync -av user@hostname(或ip);; /dir/path /local/path ****这里记得是2个;
用rsync是2个;
a表示all ,但有时候会出错,所以有需要时还要增加一些参数
v代表显示的信息
——–
一般推荐用ssh来传输,简单而且还可以加密
如果使用的是ssh来进行登陆验证传输
rsync -av -e ssh user@hostname或ip ; /etc /tmp
前提是ssh已经设置好利用公钥私钥配对登陆,即是不需要密码的登录
——–
rsync --list-only user@hostname或ip ;; 列出清单 这里也有2个;
rsync –list-only user@hostname或ip;;/dir/path 指定列出,当list 属性设置为no的时候就需要这样了
——–
rsync的参数(常用)
-a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,
如果我们用普通用户用rsync 进行与服务器同步数据时,同步下来的数据,可能属主会改变。为了保持文件的属主和用户组与服务器端完全一致,用root来运行rsync 就可以了
———–
rsync -avlR –delete -e ssh root@192.168.0.1 :/var/lib/mysql /backup/
–delete
是指如果Server端刪除了一文件,那客戶端也相應把這一文件刪除,保持真正的一致
rsync -avlR -e ssh root@192.168.0.1 ;/var/a.txt /etc /b.txt /back
将文件a和文件b同步到 /back
更多的用法只能man ,rsync 都蛮多用法的