簡體   English   中英

有關用於備份的BASH腳本的建議

[英]Suggestion about a BASH script for backups

我有一台安裝了plesk的服務器(centOS),我需要每天計划一些備份。 Plesk僅允許一個計划的備份,因此我創建了此解決方案:

  1. 每晚在文件夾內創建備份
  2. 啟動一個腳本,該腳本將從文件夾中的txt文件的標題讀取日期(每天晚上通過cronTAB啟動)
  3. 將備份文件移動到正確的目錄中(根據日期名稱)
  4. 在txt標題中更改日期名稱

這是我的腳本(目前尚未測試):

BACKUPNAME="backupname"
cd /backup/daily
find . -type f | while IFS= read filename; do
  case "${filename,,*}" in 
    mon.txt) mv $BACKUPNAME ../mon
    mv mon.txt tue.txt;;
    tue.txt) mv $BACKUPNAME ../tue
    mv tue.txt wed.txt;;
    wed.txt) mv $BACKUPNAME ../wed
    mv wed.txt thu.txt;;
    thu.txt) mv $BACKUPNAME ../thu
    mv thu.txt fri.txt;;
    fri.txt) mv $BACKUPNAME ../fri
    mv fri.txt sat.txt;;
    sat.txt) mv $BACKUPNAME ../sat
    mv sat.txt sun.txt;;
    sun.txt) mv $BACKUPNAME ../sun
    mv sun.txt mon.txt;;
    * : ;; #nothing
  esac
done

您認為這是一個好的/穩定的解決方案嗎?

謝謝!

我不知道“僅一次計划的備份”是什么意思,您能解釋一下嗎?

另一方面,為什么不進行rsync並在需要時刪除最舊的rsync ...這就是我的方法:

#!/bin/bash
date=`/bin/date "+%Y-%m-%dT%H_%M_%S"`
HOME=/root

/bin/echo -e "\n\n# Backup from $date\n" >> /var/log/backup.log

/usr/bin/rsync -axzP \
  --delete \
  --delete-excluded \
  --exclude-from=$HOME/.rsync/exclude \
  --link-dest=/COREBACKUP/CurrentBackup \
  / /COREBACKUP/Backups/incomplete_back-$date >> /var/log/backup.log 2>&1 \
&& mv /COREBACKUP/Backups/incomplete_back-$date /COREBACKUP/Backups/back-$date \
&& rm -f /COREBACKUP/CurrentBackup \
&& ln -s /COREBACKUP/Backups/back-$date /COREBACKUP/CurrentBackup \
&& echo `/bin/date "+%Y-%m-%d - %H:%M:%S"` > /var/log/lastbackup.log 2>&1

每天都通過cron調用此腳本,並且對$ /進行完整備份,不包括$ HOME / .rsync / exclude中列出的所有內容。

備份存儲在/ COREBACKUP / Backups / back- $ date中,最新的備份存儲在/ COREBACKUP / CurrentBackup中。

它可以正常工作,盡管它可以被編寫為更加用戶友好;-)

根據日期輪換備份目的地是合理的,但是問題中顯示的名稱生成方法取決於每天運行一次的系統。 如果系統關閉了一天,或者腳本一天運行了兩次,則您的mon.txttue.txt ,...序列將不同步。 不要使用文件名和笨拙的case語句來獲取目標目錄的名稱,而應使用如下代碼:

day=$(date +%a)
mv $BACKUPNAME ../${day,,}

如果備份文件屬於不同的一天,而不是電流,使用date格式如下面,分別設置一個day至昨天的名稱,或在一天的名稱時,文件的最后修改。

day=$(date +%a --date=yesterday)
day=$(date +%a -r $BACKUPNAME)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM