Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 使用日期變數自動命名備份檔案,實現每週輪替備份策略

編輯:Linux 教學

前言

近期有 Linux 系統管理員諮詢:公司部署 Oracle 10G 資料庫,使用 Data Pump 匯出備份檔案,需每日複製至指定目錄,並希望檔名包含星期數字(如 1backup.dmp 代表週一),以實現一週輪替覆蓋,避免硬碟空間無限增長。

雖然 Oracle 內建備份策略已足夠完善,但若確有此需求,仍可透過 Shell 變數達成。本文詳細說明實作方法與常見陷阱。

一、檔案建立時間 vs. 系統時間:關鍵抉擇

使用時間變數命名時,必須釐清「檔案建立時間」與「複製操作時間」的差異。假設備份檔於週一產生,週二才複製,檔名應以週一(建立時間)為準,因為這才真實反映資料庫備份時間點。

二、核心指令與參數解析

複製並重新命名的基本指令:

cp mydb.log "$(date +%w)"mydb.log

此指令將 mydb.log 複製至當前目錄,並在檔名前加上星期數字(0-6,0 代表週日)。

關鍵細節:

  • 引用系統時間還是檔案時間? $(date +%w) 取得的是「執行指令當下的系統時間」,非檔案建立時間。若需以檔案建立時間命名,需改用 stat 或 find 取得檔案時間屬性。
  • 雙引號不可省略:變數替換必須用雙引號包裹,否則會發生語法錯誤。建議在腳本部署前先以 bash -n 或實測驗證。
  • %(w) vs %w:在 cp 指令中兩者效果相同,但 echo $(date +%w) 等通用語法要求加上 + 號。為提高腳本可移植性,建議統一使用 $(date +%w) 格式。

三、善用 echo 測試變數輸出

不確定變數格式時,可先用 echo 驗證:

echo $(date +%w)

此指令會輸出當前星期數字。注意:

  • 變數前須加 $ 符號,否則系統視為字面字串。
  • 格式字串中必須包含 + 號,否則會報錯「無效參數」。

echo 指令測試輸出示例

掌握 echo 驗證技巧,可避免在正式備份腳本中出現語法錯誤,確保自動化流程穩定執行。

Copyright © Windows教程網 All Rights Reserved