Bash Backupscript

ClocxHD

Lt. Junior Grade
Registriert
Aug. 2014
Beiträge
376
Hallo,

ich habe mir ein Backup-Script (Bash) erstellt, das meine Datenbanken sichern, und diese auf einen FTP-Server hochladen soll.
Das Script funktioniert soweit, aber er findet die ZIP-Datei zum hochladen nicht.

Ausgabe beim ausführen des Scripts:
Code:
Dumping database: afterlogic
Dumping database: brainstorming
Dumping database: cdndata
Dumping database: eshop
Dumping database: fthielenNEU
Dumping database: mysql
Dumping database: owncloud
Dumping database: prestashop
Dumping database: rainloop
Dumping database: tssub
  adding: root/dbs/20160123.afterlogic.sql.gz (stored 0%)
  adding: root/dbs/20160123.brainstorming.sql.gz (stored 0%)
  adding: root/dbs/20160123.cdndata.sql.gz (stored 0%)
  adding: root/dbs/20160123.eshop.sql.gz (stored 0%)
  adding: root/dbs/20160123.fthielenNEU.sql.gz (stored 0%)
  adding: root/dbs/20160123.mysql.sql.gz (deflated 0%)
  adding: root/dbs/20160123.owncloud.sql.gz (stored 0%)
  adding: root/dbs/20160123.prestashop.sql.gz (deflated 2%)
  adding: root/dbs/20160123.rainloop.sql.gz (stored 0%)
  adding: root/dbs/20160123.tssub.sql.gz (stored 0%)
/root/dbs: Datei oder Verzeichnis nicht gefunden
local: Server-20160123.zip: Datei oder Verzeichnis nicht gefunden
[root@heliodev ~]# ls /root/dbs/
Server-20160123.zip
[root@heliodev ~]#

Aber wie das anschließende ls zeigt, sind sowohl Ordner, als auch Datei vorhanden.

Das Script:
Code:
DBUSER="benutzer"
DBPASSWORD="passwort"
OUTPUT="/root/dbs"
NAME="Server"

#FTP
FTPHOST="host"
FTPUSER="benutzer"
FTPPASSWD="passwort"
#FILE="$OUTPUT/$NAME-`date +%Y%m%d`.zip"
#FILE="/root/dbs/Server-20160123.zip"
FILE="$NAME-`date +%Y%m%d`.zip"
 
rm "$OUTPUT/*gz" > /dev/null 2>&1
 
databases=`mysql --user=$DBUSER --password=$DBPASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`

if [ ! -d "$OUTPUT" ]; then
	echo ""
	echo "Erstelle Verzeichnis $OUTPUT"
	echo ""
	mkdir -p $OUTPUT;
fi;
 
for db in $databases; do
    if [[ "$db" != "information_schema" ]] && [[ "$db" != _* ]] && [[ "$db" != "performance_schema" ]] ; then
        echo "Dumping database: $db"
        mysqldump --force --opt --user=$USER --password=$DBPASSWORD --databases $db > $OUTPUT/`date +%Y%m%d`.$db.sql
        gzip $OUTPUT/`date +%Y%m%d`.$db.sql
    fi
done
zip -r $OUTPUT/$NAME-`date +%Y%m%d`.zip $OUTPUT/*.gz
rm -rf $OUTPUT/*.gz

ftp -n $FTPHOST <<END_SCRIPT
quote USER $FTPUSER
quote PASS $FTPPASSWD
cd $OUTPUT
put $FILE
quit
END_SCRIPT
exit 0

Woran liegt das?

LG,
ClocxHD
 
Zeile 38 wechselt nicht lokal sondern auf dem Server das Verzeichnis.
Sollte wohl "lcd $OUTPUT" sein?
 
Danke, jetzt geht es.
Kann ich auch irgendwie spezifizieren, in welchen Ordner das hochgeladen werden soll?
Ich habe schon versucht, im Script mit
Code:
cd backups/$NAME
In das entsprechende Verzeichnis zu wechseln, jedoch wird dann keine Datei hochgeladen.
 
Ich habe in Scripts immer ncftpput genutzt. Ist jetzt allerdings schon fast 10 Jahre her. Vielleicht gibt es mittlerweile ein besseres Tool.
 
Kannst du nicht einfach

Code:
put $FILE /home/pfad/zum/ziel/$FILE

machen?
 
Zurück
Oben