背景
数据备份是每个系统管理员和数据管理者都需要考虑的一个问题,无论是为了防止数据丢失、恢复数据,还是为了数据同步。然而,每个备份方案都有其优缺点。常见的备份方法有增量备份、差异备份、完全备份等。本文将介绍一种基于rsync和inotify实时备份实现方案,该方案具有快速、高效、实时同步等优点。
rsync简介
rsync是一个远程备份工具,用于在本地和远程计算机之间同步和备份文件。它能够实现增量备份,节省了大量时间和带宽。rsync也支持加密传输和备份,这使得它非常适合用于远程备份,同时也可用于本地备份。
rsync的优点:
(1)、增量备份:仅备份发生了变化的文件,节省带宽和存储空间。
(2)、安全:支持加密传输和备份。
(3)、支持备份到远程服务器。
notify简介
inotify是一个Linux内核特性,用于监控文件系统中的事件。它能够监控文件或目录的创建、删除、修改、移动等事件,通过这些事件触发的钩子,实现实时监控和响应。
● inotify的优点:
(1)实时性:可以实时检测文件的变化,并且响应快速。
(2)精确性:能够准确的检测到文件的修改时间和内容。
(3)可靠性:能够检测到文件的修改,无论是人工修改还是软件修改。
rsync和inotify实时备份实现方案
1、安装rsync和inotify
yum -y install rsync inotify-tools2、编写inotify+rsync脚本,实时监控文件或目录的变化
#!/bin/bash
while true; do
sleep 2
echo "#####################################################" >> /var/log/infotify.log
#echo $(date '+%c') >> /var/log/infotify.log
inotifywait -r -e modify,create,delete,move /data/nfs-pods/ >> /var/log/infotify.log &
rsync -avz /data/nfs-pods/ root@ip:/data/nfs-pods/ >> /var/log/infotify.log &
echo " " >> /var/log/infotify.log
# 查看日志大小
dus=$(ls -lh /var/log/infotify.log |awk '{print $5}'|grep G|awk -F'M' '{print $1}')
b=2
# 判断日志如果大于2个G,那么就删除日志
dateus=$(awk -v num1=${dus} -v num2=${b} 'BEGIN{print(num1>num2)?"0":"1"}')
echo ${dateus}
if [ ${dateus} -eq 0 ];then
echo "" > /var/log/infotify.log
else
exit 0
fi
done > /dev/null 2>&1时间任务
- sleep 3 && /usr/local/bin/infotify
3、将执行脚本放到/usr/local/bin 下
mv /data/infotify /usr/local/bin/infotify
chmod +x /usr/local/bin/infotify4、测试执行脚本
infotify &
tail -f /var/log/infotify.log
#####################################################
2023-Jul-21 10:04:07
sending incremental file list
sent 289 bytes received 15 bytes 608.00 bytes/sec
total size is 0 speedup is 0.00
#####################################################
2023-Jul-21 10:04:18
sending incremental file list
sent 289 bytes received 15 bytes 608.00 bytes/sec
total size is 0 speedup is 0.00
#####################################################
2023-Jul-21 10:04:28
sending incremental file list
sent 289 bytes received 15 bytes 608.00 bytes/sec
total size is 0 speedup is 0.00
#####################################################
2023-Jul-21 10:04:38
sending incremental file list
sent 289 bytes received 15 bytes 608.00 bytes/sec
total size is 0 speedup is 0.00
#####################################################
2023-Jul-21 10:04:48
sending incremental file list
sent 289 bytes received 15 bytes 608.00 bytes/sec
total size is 0 speedup is 0.00完成测试,即可使用。耗cpu及内存不高很低的哦!
注意事项
● rsync需要设置为无密码登录,可以使用ssh密钥实现。具体来说,需要在本地计算机上生成ssh密钥,然后将公钥添加到远程服务器的authorized_keys文件中,这样就可以无密码登录远程服务器。
● inotify对监控的目录的子目录监控是有限制的,对于不在监控列表中的子目录,不会自动监控,需要手动添加监控。
● 需要避免同步过程中的文件锁定和冲突,可以使用rsync的一些参数进行控制,如–exclude、–exclude-from、–delete等。
评论 (0)