Ayuda para depurar el script de copia de seguridad

Ayuda para depurar el script de copia de seguridad

Cada 3 horas, el script se ejecutará y realizará una copia de seguridad de una carpeta "FUENTE" y la guardará junto con las otras copias de seguridad del día actual en la carpeta "mes-día-año", por ejemplo, "24-03-13". Cuando llega un nuevo día, crea una nueva carpeta con la nueva fecha y elimina todas las copias de seguridad excepto la última de la carpeta del día anterior. Aquí es donde está el problema, no se eliminan las carpetas antiguas del día anterior. ¿Alguna idea de por qué?

#!/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

Respuesta1

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

Éste no se ejecuta. Estás probando si NO hay un directorio.

Debería ser

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

información relacionada