Automatyczna Kopia Zapasowa

Witam

Używam takiego skryptu do tworzenia kopii

#!/bin/bash

TEAMSPEAK_PATH=’/var/www/’ #sciezka do katalogu z ts
BACKUP_PATH=’/home/kopie/’ #sciezka do katalogu w ktorym ma zapisywac kopie
DEL=“true” #Usuwac stare kopie sprzed 7dni?

DATE=date +%d-%m-%Y
L_DATE=date -d " -7 days" +%d-%m-%Y

cd $TEAMSPEAK_PATH
if [ -e html ]
then
cp -r html $BACKUP_PATH
else
exit 0
fi
cd $BACKUP_PATH
tar -cvf $DATE.tar html
rm -r html
if [ “$DEL” = “true” ]
then
if [ -e $L_DATE.tar ]
then
rm -r $L_DATE.tar
fi
fi

Kopie robi, aczkolwiek nie usuwa, po danej liczbie dni co jest do poprawki, bo bawię się ciągle, ale coś nie mogę tego naprawić.

Zależnie od dystrybucji może być taka kwestia, że jest ustawiony alias rm=“rm -i”. Sprawdzałeś?

Najpierw ustaw skrypt, żeby był “gadatliwy”, po shebang dodaj linię:

set -x

Następnie dodaj do rm opcję “verbose”, czyli:

rm -vr NAZWA

Żeby ominąć ewentualny alias możesz użyc ścieżki bezwględnej:

/bin/rm -vr NAZWA

Potem uruchom i sprawdź co go boli. Opcja -r (recursive) służy do usuwania katalogów, w przypadku pliku *.tar jest zbędna.

Jak sprawdzić alias - z konta roota - nie żadne suda i inne wynalazki:

alias

Jak jest skonfigurowane sudo to inna kwestia. Jaka dystrybucja jest na serwerze?

Jeśli masz czas - zastanów się jak można skrócić skrypt.

1 polubienie

marcin82 ma rację. Po piersze ja bym zrezygnował z tych 7 dni ba jak cos cie stanie i nie nagrasz przez 7 dni do ci sie skasuje wszystko.
Lepiej zrobić tak - mam np. 5 kopi i zawsze muszę mieć pięć. Jaj sie nowa nagrywa to ostatnia sie kasuje.
Za dużo masz tych warunków

Dzięki chłopaki już sobie to ogarnąłem

#!/bin/bash

#Zmienne

DATE=$(date +%F)
EXTENSION=tar.xz
SRC="/var/www/"
BKP_DIR="/home/kopie/"
BKP_FILE=$DATE-TS.$EXTENSION

# Funkcja wykonujaca kopie

backup() {
cd $BKP_DIR
tar -cJpPf $BKP_FILE $SRC
}

# Funkcja rotujaca kopie

rotate_bkp() {
BKP_NUM=4
BKP_NUM_CHECK=$(ls -A *tar.xz | wc -l)

# Warunek sprawdzajacy czy masz wiecej, niz 4 kopie. Jesli tak, usun najstarsza

if [ $BKP_NUM_CHECK -gt $BKP_NUM ]; then
find $BKP_DIR -type f -name "*.tar.xz" -mtime +7 -delete
fi
}

backup
rotate_bkp