網(wǎng)站首頁 編程語言 正文
一.背景
1.總會出出現(xiàn)環(huán)境上的數(shù)據(jù)丟失,在沒有備份的情況下會非常的被動,不管是由于病毒還是人為的原因造成的程序、數(shù)據(jù)被刪除,有時候后悔已經(jīng)來不及,不如提前做到數(shù)據(jù)的備份,而異地備份也更加的保險一點。
2.數(shù)據(jù)備份的意義就在于,當受到網(wǎng)絡攻擊、入侵、電源故障或者操作失誤等事故的發(fā)生后,可以完整、快速、簡捷、可靠地恢復原有系統(tǒng),在一定的范圍內保障系統(tǒng)的正常運行。
二.依賴功能介紹
1.expect
作用:expect工具是一個根據(jù)腳本與其他交互式程序進行交互
安裝語句:yum install expect
參考文檔:Linux之expect操作詳解
2.cron
作用:可以根據(jù)配置文件約定的時間來執(zhí)行特定的任務
參考文檔:
Linux Crontab 定時任務
cron表達式
3.liunx的三個時間atime,mtime,ctime
作用:定期刪除備份時一般備份文件的mtime來進行刪除
參考文檔:詳解Linux中atime,mtime,ctime的使用場景
三.本地備份腳本
1.本地備份命令測試
mkdir -p /root/backup/`date "+%Y-%m-%d"`
tar -zcvPf /root/backup/`date "+%Y-%m-%d"`/test20221009.tar.gz /root/test20221009
2.封裝shell腳本:compress_backup.sh
#!/bin/bash
source_folder=/root/test20221009
backup_folder=/root/backup/`date "+%Y-%m-%d"`
source_folder_name=`echo $source_folder |awk -F "/" '{print $3}'`.tar.gz
echo "source_folder:$source_folder"
echo "backup_folder: $backup_folder"
echo "source_folder_name: $source_folder_name"
#新建立文件夾
mkdir -p /root/backup/`date "+%Y-%m-%d"`
#壓縮命令
tar -zcvPf $backup_folder/$source_folder_name $source_folder
echo "$source_folder_name文件備份成功"
3.加入crond定時任務并將輸出與錯誤重定向至文件
編輯添加crond定時任務列表
crontab -e
設置每天00:00執(zhí)行一次備份任務,并將標準輸出與標準錯誤重定向至日志文件
0 0 * * * sh /root/backup/compress_backup.sh 2>&1 > /root/backup/log_$(date +\%Y-\%m-\%d)
測試查看任務執(zhí)行情況:
tail -5 /var/log/cron
查看備份文件與本地日志正確生成
四.異地備份腳本
1.異地備份命令測試:
scp -C -r /root/backup/2022-10-10/ mrswhite@192.168.37.9:/root/back_up_offsite
提示輸入密碼后進行備份
查看對端文件備份成功
2.封裝expect腳本offsite_backup.expect,當提示輸入密碼時可自動對應輸入密碼
#!/usr/bin/expect -f
# 獲取當前日期 例如:2022-10-12
set date [ clock format [ clock seconds ] -format "%Y-%m-%d" ]
# 傳輸用戶名
set username mrswhite
# 對端hostIP地址
set host 192.168.37.9
# 密碼
set password test20221012
#設置本地傳輸路徑-前綴
set source_folder /root/backup
#設置兌換傳輸路徑
set backup_folder /root/back_up_offsite
# expect默認timeout為30S 超過30s未傳輸完會停止,設置為 -1 則不限制超時時間
set timeout -1
# 壓縮 遞歸 本地絕對路徑 用戶名 目標IP 目標路徑
spawn /usr/bin/scp -C -r $source_folder/$date/ $username@$host:$backup_folder
expect {
"*yes/no" {send "yes\r";exp_continue}
"*password:" {send "$password\r"}
}
expect eof
運行后查詢結果,已實現(xiàn)了無人值守備份的功能
查看異地文件已生成:
3.加入crond定時任務并將輸出與錯誤重定向至文件
crontab -e
設置每天02:00執(zhí)行一次異地備份任務,(給本地備份充足的時間預留)并將標準輸出與標準錯誤重定向至日志文件
0 1 * * * expect /root/backup/offsite_backup.expect 2>&1 > /root/backup/offsite_log_$(date +\%Y-\%m-\%d)
修改系統(tǒng)時間,重啟crond服務等待定時任務的執(zhí)行,并查詢日志:
date -s "2022-10-10 00:59:50"
service crond restart
tail -5 /var/log/cron
檢查異地文件備份成功:
五.定期刪除備份
1.定期刪除命令測試:
find /root/backup/ -mtime +180 | xargs rm -rf {} #刪除180天前的文件與文件夾的信息
2.封裝shell腳本delete_expire_backupfile.sh,清理的目錄與過期時間可配置
#!/bin/bash
#待清除目錄
dir=/root/backup/
#文件的過期周期
day_expireDay=10
#刪除最終為day_expireDay前的備份文件與文件夾信息
find $dir -mtime +$day_expireDay | xargs rm -rf {}
echo "$dir下的$day_expireDay天前的文件清理成功"
查看文件清理效果如下:
3.加入crond定時任務并將輸出與錯誤重定向至文件
crontab -e
設置每天00:00執(zhí)行一次異地備份任務,并將標準輸出與標準錯誤重定向至日志文件
0 0 * * * sh /root/backup/delete_expire_backupfile.sh 2>&1 > /root/backup/delete_log__$(date +\%Y-\%m-\%d)
修改系統(tǒng)時間,重啟crond服務等待定時任務的執(zhí)行,并查詢日志,文件已清理成功
date -s "2022-10-12 23:59:50"
service crond restart
tail -5 /var/log/cron
六.github腳本地址
github地址
原文鏈接:https://www.cnblogs.com/mrwhite2020/p/16769781.html
相關推薦
- 2022-04-24 C++vector的用法你都知道嘛_C 語言
- 2023-10-16 el-popover在原生table中,彈出多個以及內部取消按鈕無效問題
- 2022-08-15 centos7 進行Python3.9 Django3項目遷移啟動asgi
- 2021-12-19 詳細易懂注解,二維數(shù)組楊輝三角的實現(xiàn),算法入門
- 2023-01-11 C++入門教程之引用與指針_C 語言
- 2022-06-24 Android實現(xiàn)按鈕點擊事件的三種方法總結_Android
- 2022-08-22 Python連接數(shù)據(jù)庫使用matplotlib畫柱形圖_python
- 2022-05-02 一起來學習C++中類的this指針以使用_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支