Page 1 of 1
Bash Script Cron vs Console
Posted: 2010-10-28 08:38
by ckaos
Hi
ich habe ein kleines Bashscript geschrieben welches ein mysqldump erstellt
und es danach ala log-dateien nummeriert ablegen soll. Per Console funktioniert es wie es soll als cron überschreibt er lediglich die Datei(sqlbackup.sql).
Code: Select all
mysqldump -uUSER -pPASS DB > /var/www/PFAD/sqldump.sql
if [ -f /var/www/PFAD/sqldump.sql ]
then
mv --backup=numbered /var/www/PFAD/sqldump.sql /var/www/PFAD/sqlbackup.sql
echo "ok"
else
echo "nich ok"
fi
if [ -f /var/www/PFAD/sqlbackup.sql.~7~ ]
then
rm /var/www/PFAD/sqlbackup.sql.~7~
fi
Ich dachte ich hätte ein Pfad/Umgebungsproblem mit mv aber dann würde
er sie ja nichtmal überschreiben oder?
Was übersehe ich hier ...
mfg
CKaos
Re: Bash Script Cron vs Console
Posted: 2010-10-28 18:52
by ckaos
Hi
In welchem Verzeichnis befindest Du dich in der Console?Hast Du schon mal einen chdir ins Zielverzeichnis versucht.Also innerhalb des Scriptes zur Laufzeit?
Ich habe es sowohl als auch probiert funktioniert.
Als welcher Benutzer läuft es sowohl im cron als auch manuell?
Manuell als root und dem user unter dem der Cron läuft.
Das mit den verschiedenen mv schliesse ich aus da der Cron ja die Datei mit
mv umbenennt. Desweiteren gibt ein find */mv nur bin/mv aus.
Ich bin schon etwas ratlos...
mfg
CKaos
Re: Bash Script Cron vs Console
Posted: 2010-10-29 08:05
by ckaos
Hi
unglaublich aber wahr
Code: Select all
/bin/mv --backup=numbered /var/www/PFAD/sqldump.sql /var/www/PFAD/sqlbackup.sql
ist die Lösung, danke @matzewe01
Fragt man sich nur warum das so is....
Sofern Du eine tägliche Sicherung damit erreichen wolltest, mit einer Vorhaltezeit von einer Woche:
Dann liese sich sicherlich auch der Wochentag verwenden und würde automatisch überschrieben.
Nun habe ich nur ein Codeschnipsel gezeigt, neben dem SQL werden noch andere
dinge gespeichert gepackt und dann wie du schon richtig erkannt hast 7 mal
archiviert >7 wird gelöscht.
Warum kein Datum?
Weil es ein anderes Script gibt welches bis zu 7 Schritten das zurücksetzen
erlaubt und der cron aber nicht täglich sondern alle 30min läuft.
mfg
CKaos
Re: Bash Script Cron vs Console
Posted: 2010-10-29 09:32
by ckaos
Hi
natürlich nicht -.- hab ich wohl was flasch verstanden ;)
Es sollte schon so sein das er das neueste in ~1~ und das älteste
in ~7~ welches er dann löscht. Hast du ne idee wie ich das ohne
mehrere Schleifen ala
Code: Select all
##archivfile erstellen
for i in 6 5 4 3 2 1; do
if [ -f /var/www/PFAD/archivfile.~$i~ ]
then
/bin/mv /var/www/PFAD/archivfile.~$i~ /var/www/PFAD/archivfile.~$[$i+1]~
fi
done
if [ -f /var/www/PFAD/archivfile ]
then
/bin/cp /var/www/PFAD/archivfile /var/www/PFAD/archivfile.~1~
fi
lösen kann?
mfg
CKaos
Re: Bash Script Cron vs Console
Posted: 2010-10-29 10:08
by Roger Wilco
Ich würde auch einen Timestamp als Namenserweiterung nutzen (`date +"%s"` oder `date +"%Y%m%d%H%M%S"`) und die alten Verzeichnisse mit mit `find -ctime $MAX_AGE -type d -delete` löschen.