Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步_rsync官网(2)

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

# useradd -s /sbin/nologin -M rsync
# id rsync
uid=500(rsync) gid=500(rsync) 组=500(rsync)

创建rsync推送需要的目录

# mkdir /backup
# chown -R rsync.rsync /backup/

3、使用 Rsync 备份工具

rsync 命令的基本用法

大多数的备份程序要求指定原始位置、目标位置,rsync 命令其实跟 cp 命令相似。

比如:将文件/etc/fstab、目录/boot/grub同步备份到/opt目录下。

-r:选项表示递归整个目录、-l:选项表示备份链接文件。

# rsync /etc/fstab /opt
# rsync -rl /etc/fstab /boot/grub /opt

rsync 命令格式

  • 基本格式:rsync [选项] 原始位置 目标位置

rsync 命令常用备份选项

-r:递归模式,包含目录及子目录中的所有文件。
-l:对于符号链接文件仍复制为符号链接文件。
-v:显示同步过程的详细信息。
-a:归档模式,保留文件的权限、属性等信息,组合选项等于-rlptgoD。
-z:在传输文件时进行压缩。
-p:保留文件的权限标记。
-t:保留文件的时间标记。
-g:保留文件的属组标记。(仅超级用户使用)
-o:保留文件的属主标记。(仅超级用户使用)
-H:保留硬连接文件。
-A:保留 ACL 属性信息。
-D:保留设备文件及其他特殊文件。
-- delete:删除目标位置有而原始位置没有的文件。
--checksum:根据校验和(而不是文件大小、修改时间)来决定是否跳过文件。

配置源的表示方法

执行远程同步任务时,rsync 命令需指定同步源服务器中的资源位置。

两种表示方法

用户名@主机地址::共享模块名(两个冒号分隔形式)
rsync://用户名@主机地址/共享模块名(URL 地址形式)

使用真实用户测试rsync服务

如果ssh端口修改了,需加上端口。

命令格式:rsync -参数 文件 -e ‘ssh -p 端口号’ 用户名@ip:目录路径

# rsync -avz abc '-e ssh -p 22' root@linuxserver.com:/tmp     // 实操命令格式
root@linuxserver.com's password:                              //输入 linuxserver 设备的 root 密码
sending incremental file list
abc

sent 64 bytes  received 31 bytes  27.14 bytes/sec
total size is 0  speedup is 0.00
# ll /tmp // 查看同步结果
总用量 52
-rw-r--r--. 1 root root    0 12月 30 07:25 abc

在实际生产环境中的备份工作,通常都是重复性的,那么我们可以设置个定时任务来完成备份操作。比如:每天凌晨04:00对服务器的tmp共享模块同步,并下载到本地/mnt/jacktian目录下,通过crond服务来完成。

这种同步过程中,我们不想输入密码,那么需创建一个密码文件,保存rsync_backup用户的密码。

# cat /etc/rsync.password 
rsync_backup:123.com
# chmod 600 /etc/rsync.password 
# ll /etc/rsync.password 
-rw-------. 1 root root 21 12月 30 08:04 /etc/rsync.password
在执行 rsync 同步时使用选项--password-file=/etc/rsync.password指定。

# crontab -e
00 04 \* \* \* /usr/bin/rsync -az --delete --password-file=/etc/rsync.password@rsync_backup@192.168.31.108::tmp /mnt/jacktian
# service crond restart
# chkconfig crond on

4、配置 rsync+inotify 实时同步

在这里插入图片描述
Linux 从 2.6.13 版内核开始提供了 inotify 通知接口,用来监控文件系统的各种变化情况,如文件的存取,删除,移动,修改等。利用这个机制,可实现文件异动警告,增量备份,针对目录或文件的变化及时做出响应。

rsync+inotify 可以实现触发式备份,只要原始位置的文档发生变化,则立即启动增量备份,否则处于静默等待状态,避免了按固定周期备份时存在的延迟性,周期过密等问题。

inotify 主要做本机监控,在触发式备份应用中更适合上行同步。

inotify 机制提供了三个调控参数

  • max_queued_events:表示监控事件队列
  • max_user_instances:最多监控实例数
  • max_user_watches:每个实例最多监控文件数
# cat /proc/sys/fs/inotify/max\_queued\_events
16384
# cat /proc/sys/fs/inotify/max\_user\_instances 
128
# cat /proc/sys/fs/inotify/max\_user\_watches 
8192

调整 inotify 内核参数

当要监控的目录,文件数量较多或者变化频繁时,建议加大这三个参数的值。

# vi /etc/sysctl.conf 
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024              
fs.inotify.max_user_watches = 1048576
# sysctl -p

安装 inotify-tools

安装 inotify-tools 主要提供inotifywait,inotifywatch 等工具,用来监控,汇总改动情况。

# tar zxf inotify-tools-3.14.tar.gz 
# cd inotify-tools-3.14
# ./configure && make && make install

以监控网站目录/var/www/html为例,执行inotifywait命令后,在另外一个终端中改动/var/www/html目录下的内容。

-e:指定要监控的事件
-m:表示持续监控
-r:表示递归整个目录
-q:简化输出信息

# mkdir /var/www/html -p
# inotifywait -mrq -e modify,create,move,delete /var/www/html/

另一个终端:在/var/www/html/目录下添加文件、移动文件、跟踪屏幕输出结果。

# mkdir /var/www/html/a
# mkdir /var/www/html/b
# mv /var/www/html/b /var/www/html/bb
# rm -rf /var/www/html/a

inotifywait 可监控 modify(修改),create(创建),move(移动),delete(删除),attrib(属性更改)等各种事件,一有变动立即输出结果。可用于收集系统变动情况,并在运行结束后输出汇总的变化情况。

# inotifywait -mrq -e modify,create,move,delete /var/www/html/
fy,create,move,delete /var/www/html/
/var/www/html/ CREATE,ISDIR a
/var/www/html/ CREATE,ISDIR b
/var/www/html/ MOVED_FROM,ISDIR b
/var/www/html/ MOVED_TO,ISDIR bb
/var/www/html/ DELETE,ISDIR a

编写触发式同步脚本

inotifywait输出的监控结果中,每行记录中包括目录,事件,文件,可识别变动情况,只要检测到有变动时执行rsync上行同步操作。

注意:当更新频繁时,避免并发执行rsync备份,若rsync进程已经存在,则忽略本次同步,或者根据rsync进程数量来决定是否同步
脚本用来测试本机/var/www/html目录的变动,一旦有更新,将触发rsync同步操作,并上传至服务器192.168.31.108的/var/www/html目录下。

触发式上行同步验证过程

1、使用rsync工具执行一次上行同步;
2、在本机运行bak_transfer.sh脚本;
3、在本机的/var/www/html目录下,执行创建,删除,修改等操作;
4、查看服务器中的/var/www/html目录中的变化;

# vi bak\_transfer.sh 
# This is bak\_transfer.sh
# 微信公众号:杰哥的IT之旅(ID:Jake\_Internet)
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,attrib,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete /var/www/html/ rsync\_backup@192.168.31.108:/var/www/html"


**先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里**

**深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/316041d30cf6f2e67c52172cb908a68c.png)
![img](https://img-blog.csdnimg.cn/img_convert/4bd41b89a4e21db9e24b1a4495b286ec.png)
![img](https://img-blog.csdnimg.cn/img_convert/9f35e0f6d89f0ac950f7a560db26766a.png)
![img](https://img-blog.csdnimg.cn/img_convert/fa9e64e0dd29a703baace527c72e1637.png)
![img](https://img-blog.csdnimg.cn/img_convert/87fbaf828b09895b62659257e6a9826e.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**

OY-1714885658212)]
[外链图片转存中...(img-oG1lws6p-1714885658213)]
[外链图片转存中...(img-B9iga0Wy-1714885658213)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值