1、rsync特性
1)可以镜像保存整个目录树和文件系统
2)可以很容易做到保持原来文件的权限、时间、软硬链接等等
3)无须特殊权限即可安装
4)快速:第一次同步时rsync会复制全部内容,但在下一次只传输修改过的文
件。rsync在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用
更少的带宽
5)安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的
socket连接
6)支持匿名传输,以方便进行网站镜像
2、rsync安装
1.源码安装
2.yum安装
yum install rsync -y #客户端与服务端确保都要安装rsync服务
3、rsync认证
基于ssh认证 也就是说只需数据同步的双方都安装rsync服务即可,且不必启动。
-a 归档模式, 表示以递归方式传输文件,并保持所有属性,它等同于-r、-l、-p、-t、-g、-o、-D 选项。
-r 表示以递归模式处理子目录,它主要是针对目录来说的
-n 参数模拟命令执行的结果,并不真的执行命令
-v 表示打印一些信息,比如文件列表、文件数量等
-p 表示保持文件权限。
-o 表示保持文件属主信息。
-g 表示保持文件属组信息。
-z 加上该选项,将会在传输过程中压缩。
--delete 表示删除 目标目录中源目录中没有的文件。
--exclude 表示指定排除不需要传输的文件,等号后面跟文件名,可以是通配符模式(如 *.txt)
--include 参数用来指定必须同步的文件模式,往往与 --exclude 结合使用。
1)rsync==cp
rsync -a 源目录 目标目录
2)rsync==scp
rsync -a 源文件/目录 user@主机号:/path/to/dir
3)rsync==rm
mkdir empty #首先创建一个空目录
rsync -a --delete empty/ rsync/ #将"rsync"目录与空目录进行同步,即可清空"rsync"目录
4)rsync==ll
rsync /path/to/dir
5)--exclude 反向排除某些文件或目录,这时可以用 --exclude 参数指定排除模式。
rsync -a --exclude={需要除过的文件目录} /path/to/dir /path/to
6)--include 正向同步某些文件或目录,往往与 --exclude 结合使用。
rsync -a --include={需要的文件目录} --exclude=* /path/to/dir /path/to
rsync-deamon认证 需要远程主机开启 rsyncd 服务,本地 rsyncd 服务可不必开启。另外,rsync 协议认证不是直接使用远程主机的真实系统账号,而是虚拟账号和虚拟密码,且可实现无需手动输入密码,同时 rsync 协议认证需要配置模块对远程同步的目录进行限制。对比 ssh 认证,rsync 协议认证安全性更高。
1)服务端的配置
vim /etc/rsyncd.conf
uid = rsync
gid = rsync
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.pid
exclude = lost+found/
transfer logging = yes
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
ignore errors
read only = false
list = false
hosts allow = 192.168.136.0/24 #允许客户端访问服务端的主机号
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
dont compress = *.gz *.tgz *.zip *.z *.rpm *.bz2
[backup]
comment = "backup dir by nebula"
path = /backup
useradd -s /sbin/nologin -M rsync #创建非登录用户且没有家目录的用户rsync
mkdir /backup #创建备份的目录
chown -R rsync:rsync /backup #修改目录的属主和属组
vim /etc/rsync.password #创建认证用户密码文件:"rsync_backup:123"
chmod 600 /etc/rsync.password #修改用户密码文件属性
注: 在启动rsync服务之前一定要关闭selinux和iptables
rsync --daemon
2)客户端的配置
vim /etc/rsync.password #创建认证用户密码文件:"123"
chmod 600 /etc/rsync.password #修改用户密码文件属性
交互式:
非交互式:
3、rsync+inotify 实现实时监听事件,客户端需要安装inotify工具和依赖,而服务端不需要安装inotify工具。
inotifywait命令使用参数:
-m, --monitor:inotifywait的默认动作是在监控至指定文件的特定事件发生一次后就退出了,而使用此选项则可实现持续性 的监控;
-r, --recursive:递归监控指定目录下的所有文件,包括新建的文件或子目录;如果要监控的目录中文件数量巨大,则通常需要 修改/proc/sys/fs/inotify/max_users_watchs内核参数,因为其默认值为8192。
-e , --event :指定要监控的特定事件,默认是监控所有的事件;此处包括access, modify, attrib, close, open, move,create, delete, 等;
--timefmt :当在--format选项中使用%T时,--timefrt选项则可以用来指定自定义的符合strftime规范的时间格式,此时间格式可用的格式符可以通过strftime的手册页获取;--timefrt后常用的参数是'%d/%m/%y %H:%M';
--format :自定义inotifywait的输出格式,如--format '%T %w %f';常用的格式符如下:
%w:显示被监控文件的文件名;
%f:如果发生某事件的对象是目录,则显示被监控目录的名字;默认显示为空串;
%T:使用--timefmt选项中自定义的时间格式;
1)安装inotify工具和依赖
yum install epel-release -y
yum install inotify-tools -y
2)配置服务端与客户端的rsync配置文件(由于上面已经配置过了,这里就不在演示)。文章来源:https://www.toymoban.com/news/detail-624772.html
3)创建实时同步监听脚本文章来源地址https://www.toymoban.com/news/detail-624772.html
vim /root/inotify.sh
#!/bin/bash
host=192.168.136.129 #服务端主机号
src=/root/inotify-test #客户端源目录
dest=backup #服务端模块
password=/etc/rsync.password
user=rsync_backup
inotifywait=/usr/bin/inotifywait #命令的绝对路径
$inotifywait -mrq --timefmt '%Y%m%d %H:%M' --format '%T %w%f%e' -e modify,create,delete,attrib $src | while read files;do rsync -avzP --delete --timeout=100 --password-file=/etc/rsync.password $src $user@$host::$dest;echo "${files} was rsynced" >> /tmp/rsync.log 2>&1;done
到了这里,关于Linux 常用工具服务-Rsync的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!