一、rsync的简介
可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。
rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
支持匿名传输,以方便进行网站镜象。
二、rsync的工作模式及常用选项
1、rsync的工作模式
第一种模式:shell模式,也称作本地模式;
第二种模式:远程shell模式,可以利用ssh协议承载其远程传输过程;
第三种模式:列表模式,仅列出源中的内容,-nv
第四种模式:服务模式,此时rsync工作为守护进程,能接收客户端的数据同步请求;
2、常用选项
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-R, --relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,
将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-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方式进行数据同步
-h, --help 显示帮助信息
注意:rsync命令中,如果源路径是目录,且给复制路径时末尾有/,则会复制目录中的内容,而非目录本向;如果末尾没有/,则会同步目录本身及目录中的所有文件;目标路径末尾是否有/无关紧要;
例子:
三、rsync服务模式
1、rsync配置文件介绍:
全局配置段:对整个rsync服务器生效,如果共享配置段和全局配置段冲突,针对冲突共享配置段的共享配置段参数生效
共享配置段:定义需要通过rsync输出的目录定义的参数
全局配置段常用参数
port
#使用的端口号,默认为873
uid
#该选项指定当该模块传输文件时守护进程应该具有的uid,默认值是" nobody"
gid
#该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为" nobody"
max connections
#指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随
后再试。默认值是0,也就是没有限制
lock
file
#指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock
motd
file
#" motd file"参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客
户,默认是没有motd文件的
log
file
#" log file"指定rsync的日志文件,而不将日志发送给syslog
pid
file
#指定rsync的pid文件,通常指定为“/var/run/rsyncd.pid”,存放进程ID的文件位置
hosts allow
#单个IP地址或网络地址 //允许访问的客户机地址
use chroot #实验rsync时,是否开启chroot,为yes或no
共享配置段常用参数
path #共享的目录路径
ignore errors #传输过程中出现错误是不是忽略yes或no
read only #yes为只允许下载,no为可以下载和上传文件到服务器
write only #是否只写能不能看
hosts allow #允许主机可连,可以是单个IP或多个IP,逗号分隔,*表示允许所有
hosts deny #拒绝设置,和allowe配合使用
list #是否列出列表,允许看为ture,不允许看false
uid #设置以那个用户
gid #设置以那个组
2、配置服务
1、配置rsync服务器端(192.168.1.140),因为rsync本身不监听,要借助于超级守护进程
[root@90sec /]# yum -y install xinetd
[root@90sec /]# vim /etc/xinetd.d/rsync
[root@90sec /]# chkconfig rsync on
2、配置rsync服务参数
[root@90sec /]# mkdir /data
[root@90sec /]# vim /etc/rsyncd.conf
3、开启服务并查看
4、使用验证
基本格式
Pull(拉取): rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push(推送): rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
在服务端开启基于用户认证功能
1、修改配置文件
[root@90sec /]# vim /etc/rsyncd.conf
2、为用户设置密码文件,并赋权
[root@90sec /]# vim /etc/rsyncd.passwd
[root@90sec /]# chmod 600 /etc/rsyncd.passwd
[root@90sec /]# service xinetd restart
3、测试
先建立一个空目录
# mkdir aaa
# mkdir -p bbb/ccc
bbb/ aaa/
# touch bbb/ccc/1.txt
# touch bbb/ccc/2.txt
# ls aaa/
# rsync -a --delete-before -d aaa/ bbb/ccc/
# ls bbb/ccc/
# ls aaa/
# touch bbb/ccc/2.txt
# touch bbb/ccc/1.txt
# rsync --delete-before -d aaa/ bbb/ccc/
# ls bbb/ccc/
#