幫助調試備份腳本

幫助調試備份腳本

每 3 小時,腳本將運行並備份一個資料夾“SOURCE”,並將其與當天的其他備份一起保存在資料夾“月-日-年”中,例如“03-24-13”。當新的一天到來時,它會建立一個包含新日期的新資料夾,並刪除前一天資料夾中除最新備份之外的所有內容。問題就在這裡,不會刪除前一天的舊資料夾。有什麼想法嗎?

#!/bin/sh

DIR=/media/HDD
SOURCE=/home/eric/Creative/
DATE=$(date +"%m-%d-%Y")
YESTERDAY=$(date -d '1 day ago' +"%m-%d-%Y")
TIME=$(date +"%T")
DESTINATION=$DIR/$DATE/$TIME
SPACE=$(df -P $DIR | tail -1 | awk '{print $4}')
NEEDED=$(du -s $SOURCE | awk '{print $1}')
FOLDERS=$(find $DIR/* -maxdepth 0 -type d | wc -l)

# If there is not enough space, delete the oldest folder
if [ $NEEDED -ge $SPACE ]; then
  ls -dt $DIR/* | tail -n +$FOLDERS | xargs rm -rf
fi

# If there is not a folder for today, create one
if [ ! -d "$DIR/$DATE" ]; then
  mkdir $DIR/$DATE

  # If there is a folder from yesterday, keep only one of its backups
  if [ ! -d "$DIR/$YESTERDAY" ]; then
    ls -dt $DIR/$YESTERDAY/* | tail -n +2 | xargs rm -rf
  fi

fi

# Create the new backup directory
if [ ! -d "$DESTINATION" ]; then
  mkdir $DESTINATION
fi

# Backup source to destination
rsync -a $SOURCE $DESTINATION

答案1

if [ ! -d "$DIR/$YESTERDAY" ]; then

這個執行失敗。您正在測試是否沒有目錄。

它應該是

if [ -d "$DIR/$YESTERDAY" ]; then

相關內容