日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Linux下自動刪除過期備份和自動異地備份的腳本_linux shell

作者:youngq ? 更新時間: 2022-11-04 編程語言

每天自動刪除過期備份

首先編寫一個簡單的Shell腳本DeleteExpireBackup.sh

#!/bin/bash

# 修改需要刪除的路徑
location="/database/backup/"

# 刪除最后修改時間為30天以前的備份文件夾
find $location -mtime +30 -type d | xargs rm -rf {} 
  • -mtime:文件內容最后一次修改的時間,+30 代表大于30天的。其他參數可選:
  • 訪問時間戳(atime):最后一次讀取文件的時間。
  • 更改時間戳 (ctime):上次更改文件元數據的時間,例如其所有權、位置、文件類型和權限設置。
  • -type代表文件類型,f代表文件,d代表目錄,l代表軟鏈接文件

腳本編寫并保存后會發現無法執行,因為需要設置文件權限,切換到腳本保存的當前目錄,執行下面的命令:

chmod a+x DeleteExpireBackup.sh

腳本準備完畢,然后就是設置自動執行時間

我這里偷懶了,直接用的寶塔設置的,其實本質是一樣的,都是用的crontab定時執行,不懂的同學自行google。

寶塔設置如下:

設置完成后,點擊添加任務,自動刪除備份就完成了。

有時候執行腳本會出現以下錯誤:
/bin/bash^M: 壞的解釋器: 文本文件忙

出現這個錯誤,多半是Windows下編寫的腳本,編寫完畢后傳到服務器上執行。

因為Windows系統下換行符為\r\n,linux下換行符為\n,因此在windows下編寫的文件會比linux下多一個回車符號\r。去掉多余的\r 回車符即可。

操作辦法:可以用sed命令進行全局替換 sed 's/\r//' -i 腳本名稱.sh

每天定時異地備份

其余操作和定時刪除大同小異,所以這里我只展示腳本內容:

#!/usr/bin/expect -f
# 獲取當前日期 例如:20220101
set date [ clock format [ clock seconds ] -format "%Y%m%d" ] 
# 傳輸用戶名
set username 用戶名
# 密碼
set password 密碼
#  expect默認timeout為30S  超過30s未傳輸完會停止,設置為 -1 則不限制超時時間
set timeout -1

#                  壓縮  端口  遞歸 需要傳輸的本地絕對路徑              用戶名     目標IP       目標服務器路徑
 spawn  /usr/bin/scp -C -P 22 -r /database/backup/$date/ $username@192.168.2.2:/database/backup/

expect  {
"*yes/no" {send "yes\r";exp_continue}
"*password:" {send "$password\r"}
}

expect eof

腳本是使用 scp 從一個Linux傳送至另一臺Linux服務器來完成異地備份的。

原文鏈接:https://www.cnblogs.com/young-q/p/16673474.html

欄目分類
最近更新