Backupscript + FTP + alte Dateien löschen

Backup, Restore und Transfer von Daten
datafreak
Posts: 24
Joined: 2005-11-21 19:43
 

Backupscript + FTP + alte Dateien löschen

Post by datafreak »

Hi Leutz

ich bin recht unerfahren mit Scripte schreiben, aber ich möchte mich halt weiterbilden.
Daher hab ich mir jetzt ein Backupscript gebastelt und wollte fragen ob man dies ggf. etwas besser gestallten kann.

Funktionieren tut dieses Script, aber es gibt bestimmt auch eine elegantere Lösung.

Danke schon mal im vorraus.
Datafreak

Code: Select all

#!/bin/bash

host="HOST"
user="USER"
pass="PASS"
ftpdir="autobackup"
dirlist="list.txt"
delday="5"
datum=$(date +%G%m%d)

mkdir /tmp/backup-${datum}/

tar cfvz /tmp/backup-${datum}/home-${datum}.tar.gz /home
tar cfvz /tmp/backup-${datum}/vhosts-${datum}.tar.gz /srv/www/vhosts
tar cfvz /tmp/backup-${datum}/mysql_dir-${datum}.tar.gz /var/lib/mysql

ncftpput -u $user -p $pass $host /$ftpdir /tmp/backup-${datum}/*

rm -R /tmp/backup-${datum}/

ncftpls -u $user -p $pass ftp://$host/$ftpdir/ >> $dirlist

while read test; do

case $test in
    .)
    ;;

    ..)
    ;;

    *)
    zeile=$(echo $test | awk -v FS="." '{print $1}')
    tagx=$(echo $zeile | awk -v FS="-" '{print $2}')
    heute=$(date +%Y%m%d)
    tage=$((($(date +%s --date $heute)-$(date +%s --date $tagx))/86400))

        if (($tage>=$delday)); then
            loeschen="$loeschen $test"
        else
            echo "$test uebersprungen"
        fi
    ;;

esac

done<$dirlist

rm $dirlist

ftp -in <<EOF
open $host 
user $user $pass
bin
hash
cd $ftpdir
mdelete $loeschen
quit
EOF
der kleine tux
Posts: 97
Joined: 2005-10-29 04:12
Location: Planet Erde
 

Re: Backupscript + FTP + alte Dateien löschen

Post by der kleine tux »

Hallo, Datafreak

hab dein script nur quer gelesen ...
ich würde nicht /tmp nehmen sondern /backup
ein backup würde ich auch noch local halten 1 backup haben gut 2 besser

Code: Select all

chmod 400 $BACKDIR/backup_$DATUM.tar.gz
chown $USER:$GROUP $BACKDIR/backup_$DATUM.tar.gz
eventuell noch gpg verschlüsseln bevor du es auf den ftp schiebst

Code: Select all

dpkg --get-selections > /$BACKDIR/dpkg.list
^sollte nicht fehlen ;)^

und bevor du /var/lib/mysql
sicherst solltest du die Datenbank besser runterfahren
und mir würde einige daten fehlen zb /etc/ /var/log/
man kann auch mit -T /wo/auch/immer/backupliste.txt arbeiten
da schreibt man dann die verzeichnisse rein die gesichert werden sollen
/home/
/var/www/
usw

Gruß
User avatar
daemotron
Administrator
Administrator
Posts: 2641
Joined: 2004-01-21 17:44
 

Re: Backupscript + FTP + alte Dateien löschen

Post by daemotron »

Du kannst es Dir auch sparen, die Archive erst auf Platte zwischenzuspeichern, wenn Du sie per Pipe gleich an ncftp weiterreichst:

Code: Select all

tar cvzf - /home | ncftpput -c -u $user -p $pass $host /${ftpdir}/home-${datum}.tar.gz
Die Angabe von - anstelle eines Dateinamens veranlasst tar, als Ausgabemedium stdout zu verwenden. ncftpput widerum lässt sich mit der Option -c davon überzeugen, von stdin zu lesen.