商城购物网站开发背景,免费建立网站哪个好,海南人才在线官网,网页制作门户网站案例目录
rsync
rsync概述
rsync优缺点
rsync参数
rsync命令
rsync同步源
linux 安装rsync
安装rsync服务端
安装rsync客户端
windows 安装rsync
rsync实践
inotify-tools
inotify-tools概述 innotify-tools 命令、参数、事件 rsync客户端安装inotify-tools innotif…目录
rsync
rsync概述
rsync优缺点
rsync参数
rsync命令
rsync同步源
linux 安装rsync
安装rsync服务端
安装rsync客户端
windows 安装rsync
rsync实践
inotify-tools
inotify-tools概述 innotify-tools 命令、参数、事件 rsync客户端安装inotify-tools innotify-tools实践
rsyncinotify-tools实践
加入开机自动执行 数据均由rsync客户端推向服务端进行传输
rsync传输命令最好手敲 否则可能会出现模块用户密码无法识别的情况
官网rsync Linux版下载rsync download Windows版下载cwRsync - Rsync for Windows | itefix.net
rsync
rsync概述 rsyncremote sync远程同步rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步支持本地复制或者与其他SSH、rsync主机同步。已支持跨平台可以在Windows与Linux间进行数据同步。 rsync监听端口873rsync运行模式C/S。 官网https://rsync.samba.org/ 官方文档https://www.samba.org/ftp/rsync/rsync.html GitHub地址https://github.com/WayneD/rsync rsync优缺点 一、优点 可以镜像保存整个目录树和文件系统 可以做到保持原来文件的权限、时间、软硬链接等等 无须特殊权限即可安装 可以有排除指定文件或目录同步的功能相当于打包命令tar的排除功能 可以使用rcp、ssh等方式来传输文件rsync本身不对数据加密 支持匿名传输可以实现方便安全的进行数据备份和镜像 可以实现增量同步既只同步发生变化的数据因此数据传输效率很高 可以通过socket进程方式传输文件和数据。 2缺点 同步数据需要扫描所有文件进行对比才进行差量传输。如果文件数量达到百万甚至千万级扫描文件对比文件将非常耗时降低了rsync效率 rsync不能实时地区监测、同步数据。虽然可以通过守护进程方式触发同步但两次动作间有时间差导致数据不一致无法应对出现故障时完全恢复数据。 缺点可以通过和inotify-tools配合解决 rsync参数
rsyncd.conf 参数参数说明uidrootrsync 使用的用户。gidrootrsync 使用的用户组用户所在的组use chrootno 如果为 truedaemon 会在客户端传输文件前“chroot to the path”。这是一种安 全配置因为我们大多数都在内网所以不配也没关系 max connections200设置最大连接数默认 0意思无限制负值为关闭这个模块timeout400默认为 0表示 no timeout建议 300-6005-10 分钟pid file rsync daemon 启动后将其进程 pid 写入此文件。如果这个文件存在rsync 不会 覆盖该文件而是会终止 lock file指定 lock 文件用来支持“max connections”参数使得总连接数不会超过限制log file不设或者设置错误rsync 会使用 rsyslog 输出相关日志信息ignore errors忽略 I/O 错误read onlyfalse指定客户端是否可以上传文件默认对所有模块为 truelistfalse是否允许客户端可以查看可用模块列表默认为可以hosts allow 指定可以联系的客户端主机名或和 ip 地址或地址段默认情况没有此参数即都 可以连接 hosts deny 指定不可以联系的客户端主机名或 ip 地址或地址段默认情况没有此参数即都 可以连接 auth users 指定以空格或逗号分隔的用户可以使用哪些模块用户不需要在本地系统中存在。 默认为所有用户无密码访问 secrets file指定用户名和密码存放的文件格式用户名密码密码不超过 8 位[backup] 这里就是模块名称需用中括号扩起来起名称没有特殊要求但最好是有意义的 名称便于以后维护 path 这个模块中daemon 使用的文件系统或目录目录的权限要注意和配置文件中的 权限一致否则会遇到读写的问题 配置/etc/rsyncd_users.db跟auth users对应
rsync命令
rsync --help
rsync [选项] 原始位置 目标位置
常用选项说明-r递归模式包含目录及子目录中的所有文件-l对于符号链接文件仍然复制为符号链接文件-v显示同步过程的详细信息-z在传输文件时进行压缩goD-p保留文件的权限标记-a归档模式递归并保留对象属性等同于-rlpt-t保留文件的时间标记-g保留文件的属组标记仅超级用户使用-o保留文件的属主标记仅超级用户使用-H保留硬链接文件-A保留ACL属性信息-D保留设备文件及其他特殊文件--delete删除目标位置有而原始位置没有的文件--checksum根据对象的校验和来决定是否跳过文件
rsync同步源 在远程同步任务中负责发起rsync司步操作的客户机称为发起端而负责响应来自客户机的rsync同步操作的服务器称为同步源(备份源)。在同步过程中同步源负责提供文件的原始位置发起端应对该位置具有读取权限。 例: rsync服务端同步别人下行同步将别人的信息下载到本地 别人同步rsync服务端上行同步将信息上传至rsync服务器。 同步方式 全量备份 原有的数据全部传送把原来的文件和新的文件一起统一传送全量复制效率低 增量备份 在传输数据之前通过一些算法通过你有的数据和我有的数据进行对比把不一样的数据通过网络传输增量复制效率高 配置源的两种表示方法 格式一 用户名主机地址::共享模块名 rsync -avz backuper192.168.10.10::wwwroot /root 格式二 rsync://用户名主机地址/共享模块名 rsync -avz rsync://backuper192.168.10.10/wwwroot /root linux 安装rsync
安装rsync服务端
#安装rsync和xinetd超级守护进程
yum install -y xinetd rsync
#配置rsync配置文件
vim /etc/rsyncd.conf
##########linux rsyncd.conf 配置文件参数后面不能有备注否则可能有问题##############
#Global Settings 全局配置
uid nobody #运行rsync的用户
gid nobody #运行rsync的用户组
use chroot no #是否让进程离开工作目录
max connections 5 #最大并发连接数0为不限制
timeout 600 #超时时间
pid file /var/run/rsyncd.pid #指定rsync的pid存放路径
lockfile /var/run/rsyncd.lock #指定rsync的锁文件存放路径
log file /var/log/rsyncd.log #指定rsync的日志存放路径
#模块配置
[web1]
path /var/www #认证的模块名,在client端需要指定 服务端存放客户端文件的目录 windows客户端存放d盘下backup_d文件夹下path /cygdrive/d/backup_d
ignore errors yes #忽略一些无关的I/O错误
read only no #客户端是否能拉PULL
write only no #客户端是否能推PUSH
hosts allow 172.16.150.150 #白名单可以访问此模块的主机
hosts deny * #黑名单*表示任何主机
list yes #客户端请求是否可以列出模块列表
uid root #以root的身份去获取文件
gid root
auth users web #认证此模块的用户名
secrets file /etc/web.passwd #指定存放“用户名密码”格式的文件
max connections 200 # 最大连接数
timeout 600 # 设置超时时间
###############################################################
##########windows rsyncd.conf 配置文件参数后面不能有备注否则可能有问题##############
uid root
gid 0
use chroot no
strict modes no
max connections 5
timeout 600
pid file rsyncd.pid
lockfile rsyncd.lock
log file rsyncd.log
prot 873[test]path /cygdrive/d/backup_dignore errors yesread only nohosts deny *hosts allow 192.168.90.243list yesmax connections 200timeout 600auth users asdsecrets file etc/rsyncd.secrets
############################################################################创建同步目录
mkdir -p /var/www/
#配置rsync认证文件/etc/web.passwd
echo web:web /etc/web.passwd
#修改/etc/web.passwd的权限为600
chmod 600 /etc/web.passwd
#配置服务能够启动
chkconfig rsync on
systemctl start xinetd start
#检查873端口是否监听成功
ss -antl | grep 873
#检查rsync的运行状态
chkconfig --list
systemctl status rsync
安装rsync客户端
#安装
yum install -y xinetd rsync
#设置rsync客户端的密码文件客户端只需要设置rsync同步的密码即可不用设置用户名(默认已经安装了rsync
echo web /etc/web.passwd
#修改/etc/rsyncd.passwd的权限为600
chmod 600 /etc/web.passwdwindows 安装rsync
正常执行rsync安装包下一步下一步下一步即可服务端需要设置一个账号和密码客户端则不用配置信息和linux一样
window实践 创建bat脚本 执行脚本进行传输数据 echo off cmd /k cd /d E:\cwRsync\binrsync.exe -vzrtopg --progress --delete xz服务端ip::www /cygdrive/E/databackup/www --port端口号 --password-file/cygdrive/E/cwRsync/passwd pause rsync实践
# 在192.168.0.99节点上测试手动同步
# 从远端【拉取】数据
rsync -avz root192.168.0.99:/opt/nfsdata/* /opt/nfsdata/
#从服务端拉取数据
rsync -avz --progress --delete root192.168.90.13::web /shell# 在192.168.0.99节点上测试手动同步
# 从【推送】数据
rsync -avz /opt/nfsdata/* root192.168.0.99:/opt/nfsdata/### 在192.168.0.99节点上测试手动同步通过【拉取】数据配置文件配置的模块这里走的是rsync协议上面走的是ssh协议只要做了免密就直接推送或拉取数据了。这里就会用到配置文件里配置的users用户了也是secrets file文件里配置的其中一个用户。
#【方式一】
rsync -avz backuper192.168.0.99::nfsdata /opt/nfsdata/
# 【方式二】
rsync -avz rsync://backuper192.168.0.99/nfsdata /opt/nfsdata/# 在192.168.0.99节点上执行
###【推送】
#【方式一】非交互式/opt/backuper.pass文件是backuper用户的密码且文件权限600
rsync -avz --password-file/opt/backuper.pass /opt/nfsdata/* backuper192.168.0.99::nfsdata
# 【方式二】
rsync -avz /opt/nfsdata/* rsync://backuper192.168.0.99/nfsdata #有密码形式推送数据到服务端
rsync -avz --progress --delete /shell 用户IP地址::模块 --password-file 客户端存放密码文件
rsync -avz --progress --delete /shell 192.168.90.13::test --password-file /etc/web.passwd#无密码形式推送数据到服务端
rsync -avz --progress --delete /shell uid服务IPD地址::模块
rsync -avz --progress --delete /shell root192.168.90.13::web
inotify-tools
inotify-tools概述 Inotify是一种强大的、细粒度的、异步的文件系统事件监控机制linux内核从2.6.13起加入了Inotify支持通过Inotify可以监控文件系统中添加、删除修改、移动等各种细微事件利用这个内核接口第三方软件就可以监控文件系统下文件的各种变化情况而inotify-tools就是这样的一个第三方软件。 Inotify 监控文件系统操作比如读取、写入和创建基于事件驱动可以做到对事件的实时响应高效而且没有轮询造成的系统资源消耗。 在前面有讲到rsync可以实现触发式的文件同步但是通过crontab守护进程方式进行触发同步的数据和实际数据会有差异而inotify可以监控文件系统的各种变化当文件有任何变动时就触发rsync同步这样刚好解决了同步数据的实时性问题。 inotify能监控非常多的文件系统事件通过监控这些事件来监控文件是否发生变更然后通过rsync来更新发生变更的文件 innotify-tools 命令、参数、事件 命令 inotify-tools 包含了两个命令inotifywait 与 inotifywatch。 inotifywait在被监控的文件或目录上等待特定文件系统事件发生执行后处于阻塞状态适合在shell脚本中使用。 阻塞状态 (Blocked):阻塞状态是线程因为某种原因放弃CPU的使用权暂时停止运行。 inotifywatch用于收集文件系统的统计数据例如发生了多少次 inotify 事件某文件被访问了多少次等等。 内核参数 /proc/sys/fs/inotify/ 目录下包含三个文件分别设置 inotify 相关的三个内核参数。 max_queued_eventsinotify 事件队列可容纳的事件数量超出的事件被丢弃但会触发队列溢出Q_OVERFLOW事件。/proc/sys/fs/inotify/max_queued_events默认值16384 max_user_instances每个用户可运行的 inotifywait 或 inotifywatch 命令的进程数。/proc/sys/fs/inotify/mak_user_instances默认值128 max_user_watches每个 inotifywait 或 inotifywatch 命令可以监控的文件数量。如果监控的文件数目巨大需要根据情况适当增加此值。/proc/sys/fs/inotify/max_user_watches默认值8192 事件 inotify 监控的文件系统事件 access文件被访问。 modify文件被修改。 attrib文件元数据被修改。 open文件被打开。 move 移动 create在被监控的目录中创建了文件或目录。 delete删除了被监控目录中的某个文件或目录。 -m 持续进行监控 -r 递归监控所有子对象 -q 简化输出信息 -e 指定要监控哪些事件类型 inotifywait用于持续监控实时输出结果 可监控modify修改、create创建、move移动、delete删除、attrib属性更改等各种事件一有变动立即输出结果。 inotifywatch用于短期监控任务完成后再输出结果 可用来收集文件系统变动情况并在运行结束后输出汇总的变化情况。 例 inotifywait -mrq -e modify,create,attrib,move,delete 文件或目录 注意对文件的某个操作往往会触发多个事件用户应用程序需要自己防止做出重复响应。 rsync客户端安装inotify-tools
#检查当前系统内核是否支持inotify 内核版本大于2.6.13则支持
uname -r
#安装 在一块不知道为什么 inotify-tools 没有安装上 所以分开进行了安装
yum install -y epel-release
yum install -y inotify-tools
#配置内核参数
#inotify 事件队列可容纳的事件数量超出的事件被丢弃但会触发队列溢出Q_OVERFLOW事件。
#/etc/sysctl.conf(内核参数配置文件)需要配置下面配置
vim /etc/sysctl.conf
###################sysctl.conf######################### 默认值16384max_queued_events16384
#每个用户可运行的 inotifywait 或 inotifywatch 命令的进程数。默认值128mak_user_instances128
#每个 inotifywait 或 inotifywatch 命令可以监控的文件数量。
#如果监控的文件数目巨大需要根据情况适当增加此值。配置的监控数量应该大于监控目标的总文件数默认值8192max_user_watches8192
######################################################## innotify-tools实践
不指定监控事件分别打开两个 shell 窗口使用 inotifywait 和 inotifywatch 监控某个目录
#创建目录
mkdir /var/inotify-test
#监控这个文件有没有发生变化
inotifywait -m /var/inotify-test#显示目录的详细信息
inotifywatch -v /var/inotify-test在目录下面创建两个文件
touch /var/inotify-test/file1
touch /var/inotify-test/file2其中 inotifywait 的信息是在进程运行过程中输出的而 inotifywatch 的信息是在进程结束时输出的。
以上测试没有指定监听事件所以监听的是所有的事件可以通过 -e 选项来指定监听事件如
inotifywait -m -e create,modify,delete /var/inotify-test rsyncinotify-tools实践
vim /opt/inotify_rsynx.sh
#!/bin/bash
#定义两个变量监控文件执行备份
INOTIFY_CMDinotifywait -mrq -e modify,create,attrib,move,delete 需要监控的目录或文件
RSYNC_CMDrsync -azH --delete --password-file/etc/密码文件 刚才监控的目录或文件 用户名主机地址::共享模块名
#
#rsync -az --delete /home/backup/project/bak_project rsync_backup172.16.0.92::backup_e /dev/null#while read获取监控结果
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
#当读取目录事件文件
do #如果rsync没有运行执行rsync进行备份操作if [ $(pgrep rsync | wc -l) -eq 0 ] ; then$RSYNC_CMDfi
done
加入开机自动执行
chmod x /etc/rc.d/rc.local
echo /opt/inotify_rsync.sh /etc/rc.d/rc.local