if [ ! -d "$DIR/$YESTERDAY" ]; then
Este não consegue executar. Você está testando se não há um diretório.
Deve ser
if [ -d "$DIR/$YESTERDAY" ]; then
A cada 3 horas o script será executado e fará o backup de uma pasta "SOURCE" e será salvo junto com os outros backups do dia atual na pasta "mês-dia-ano", por exemplo, "03-24-13". Quando chega um novo dia, ele cria uma nova pasta com a nova data e exclui todos, exceto o último backup da pasta do dia anterior. Aqui é onde está o problema, não irá apagar as pastas antigas do dia anterior. Alguma idéia 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 }')
NEEDED=$(du -s $SOURCE | awk '{print }')
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
if [ ! -d "$DIR/$YESTERDAY" ]; then
Este não consegue executar. Você está testando se não há um diretório.
Deve ser
if [ -d "$DIR/$YESTERDAY" ]; then
Tags command-line bash scripts