Linux 常用工具服务-Rsync

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认证

  1. 基于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
  1. 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配置文件(由于上面已经配置过了,这里就不在演示)。

3)创建实时同步监听脚本

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值