Page 1 of 1

Backupscript + FTP + alte Dateien löschen

Posted: 2007-02-02 23:45
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

Re: Backupscript + FTP + alte Dateien löschen

Posted: 2007-02-03 00:47
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ß

Re: Backupscript + FTP + alte Dateien löschen

Posted: 2007-02-03 21:26
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.