백업 스크립트 디버깅 도움말

백업 스크립트 디버깅 도움말

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

관련 정보