Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Ubuntu-Forum & Kubuntu-Forum | www.Ubuntu-Forum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

  • »duffy6« ist der Autor dieses Themas

Beiträge: 15

Registrierungsdatum: 25.02.2007

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

1

30.10.2009, 23:02

MYSQL Backup auf USB Stick an Fritzbox (mount)

Hallo zusammen,

ich möchte einen Dump meiner MySQL Datenbank machen und die auf dem USB STick meiner Fritzbox sichern.

Wie würdet ihr denn vorgehen?
1) Direktes Backup auf das gemountete Fritzbox CIFS Laufwerk
2) Backup lokal und dann verschieben auf Fritzbox CIFS Freigabe

Beiträge: 6 680

Registrierungsdatum: 04.06.2005

Derivat: Kein Ubuntu-Derivat

Version: gar kein Ubuntu

Architektur: 64-Bit PC

Desktop: anderer Desktop

Andere Betriebssysteme: Arch Linux

  • Nachricht senden

2

31.10.2009, 10:50

Hallo,

wie machst du denn den Dump?

Im übrigen immer erst Lokal bevor man was woanders hin schiebt.

m.f.g.
Carl-Heinz
###--- Gott sei Dank, ich bin weg vom Fenster ---###


Hilfen:
- Mir eine Nachricht senden - - Meine Homepage - - Linux-Beginnerforum -

  • »duffy6« ist der Autor dieses Themas

Beiträge: 15

Registrierungsdatum: 25.02.2007

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

3

31.10.2009, 12:46

Meinen Dump erstelle ich mit einem Skript-Aufruf:

Quellcode

1
backup_skript.sh --mysql-password PASSW --mysql-login root /ZIEL/backup.sql


Das hier ist das Skript backup_skript.sh:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/bin/bash

VERSION=0.1.1
MYSQL=mysql 
MYSQLDUMP=mysqldump               	

usage()
{
cat << EOF

USAGE: $0 [OPTIONS] [PATH|FILENAME]
   This script creates backup of zarafa database with mysqldump and compress the
   output file. By default it'll create a backup file in current working path
   with default filename. The default filename contains timestamp like
   zarafa-mysql-backup_YYYY-MM-DD_hhmm.gz if you just enter path, then the path
   will be used with default filename

OPTIONS:
	--mysql-password PASSWORD
		Password for zarafa database in MySQL (not recommended as
		parameter because it'll echoed in commandline & stored in
		bash-history)
	--mysql-login USERNAME
		Username for zarafa database in MySQL
	--max-allowed-packet MAX_ALLOWED_PACKET
		Max allowed Packet in MySQL (e.g. 25M)
	-h, --help
		Show this help text
	-V, --version
		Display version information
EOF
}

# get comandline parameters
while [[ $1 == -* ]]; do
	case "$1" in
		-h|--help)
			usage
			exit 0
			;;
		--mysql-host*)
			if (($# > 1));then
				MYSQLHOST=$2; shift;
			else
				echo "$1 requires an argument"
				exit 1
			fi
			shift;;
		-l|--mysql-login)
			if (($# > 1));then
				MYSQLUSER=$2; shift;
			else
				echo "$1 requires an argument"
				exit 1
			fi
			shift;;
		--max-allowed-packet)
			if (($# > 1));then
				MAX_ALLOWED_PACKET=$2; shift;
			else
				echo "$1 requires an argument"
				exit 1
			fi
			shift;;
		-p|--mysql-password)
			if (($# > 1));then
				MYSQLPWD=$2; shift;
			else
				echo "$1 requires an argument"
				exit 1
			fi
			shift;;
		-V|--version)
			echo $0 Version $VERSION
			exit 0
			;;
		-*)
			echo "Invalid option: $1" >&2
			usage
			exit 1
			;;
		--) shift; break;;
	esac
done

# path & filename
if [ -z $1 ];
then
	BACKUPFILE=./zarafa-mysql-backup_`date +%Y-%m-%d_%H%M`.gz
else
	if [[ -d $1 || $1 = */ ]];
	then
		BACKUPFILE=$1/zarafa-mysql-backup_`date +%Y-%m-%d_%H%M`.gz
	else
		BACKUPFILE=$1
	fi
fi

# mysql parameters
MYSQLHOST=${MYSQLHOST:-localhost}
if [ -z $MYSQLUSER ];
then
	read -p "Please enter username for MySQL (zarafa DB): " MYSQLUSER
	if [ -z $MYSQLUSER ];
	then
		echo "Error: No username entered!"
		exit 1
	fi
fi

if [ -z $MYSQLPWD ];
then
	stty -echo
	read -p "Please enter password for MySQL (zarafa DB): " MYSQLPWD
	echo
	stty echo
fi

# CREATE MYSQL BACKUP
COMMAND="$MYSQLDUMP -u$MYSQLUSER -p$MYSQLPWD -h$MYSQLHOST"
if [ "$MAX_ALLOWED_PACKET" ];
then
	COMMAND="$COMMAND --max_allowed_packet=$MAX_ALLOWED_PACKET"
fi
COMMAND="$COMMAND --single-transaction --skip-opt --quick zarafa"
echo Please wait, it may take some minutes. It depends on size of zarafa database.
$COMMAND | /bin/gzip > $BACKUPFILE;



Wie könnte denn ein Skript aussehen, das zweistufig aussieht und erst den Dump erstellt und dann (mittels FTP oder temporärem Mount) die erstellte Datei verschiebt?

Sorry, bin eben ein Newbie und nicht so fit mit Skripten...

Gruß,
duffy6

eni

User

Beiträge: 465

Registrierungsdatum: 25.01.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

Andere Betriebssysteme: Linux from Scratch (2.6.29.6) mit Gnome, Debian Lenny

  • Nachricht senden

4

31.10.2009, 13:27

Zitat

Wie könnte denn ein Skript aussehen, das zweistufig aussieht und erst den Dump erstellt und dann (mittels FTP oder temporärem Mount) die erstellte Datei verschiebt?


falls die 'fritzbox' ssh unterstützt:

Zitat

#!/bin/bash
backup_skript.sh --mysql-password PASSW --mysql-login root /tmp/mysql_bak.sql
scp /tmp/mysql_bak.sql deinuser@deinserver:/verzeichnis/zu/backup/auf/server/bak.sql

dann must du nur noch ssh so einrichten, das es mit public-key's funktioniert und gut ist.

ich kenne halt die 'fritzbox' ncht, und bräuchte mehr infos was die so kann.

  • »duffy6« ist der Autor dieses Themas

Beiträge: 15

Registrierungsdatum: 25.02.2007

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

5

31.10.2009, 13:30

Das werd ich gleich mal probieren.

Zur Info: Die Fritzbox stellt INTERN einen FTP Server (Port 21) zur Verfügung. Allerdings muss ich ein Passwort angeben. Wie krieg ich das denn noch ins Skript rein?

Danke und Gruß
duffy6

eni

User

Beiträge: 465

Registrierungsdatum: 25.01.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

Andere Betriebssysteme: Linux from Scratch (2.6.29.6) mit Gnome, Debian Lenny

  • Nachricht senden

6

31.10.2009, 14:00

mmm wenn der kein ssh kann wird es schwieriger:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash

REMOTE_DIR="/pfad/von/stick/auf/server"
HOST='example.com'
USER='user_null'
PASSWD='1234'

#backup erstellen
backup_skript.sh --mysql-password PASSW --mysql-login root /tmp/mysql_bak.sql

#hochladen per ftp
ftp -n -v $HOST << EOT
ascii
user $USER $PASSWD
prompt
put /tmp/mysql_bak.sql $REMOTE_DIR/mysql_bak.sql
bye
EOT

#lokales backup löschen
rm /tmp/mysql_bak.sql


das sollte dann klappen. du musst natürlich die login-daten und der pfad oben ändern.

  • »duffy6« ist der Autor dieses Themas

Beiträge: 15

Registrierungsdatum: 25.02.2007

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

7

31.10.2009, 14:44

Hey super, das klappt!

Wie könnte ich denn das Skript noch erweitern, dass ich immer 3 Backups habe und nicht immer das backup überschrieben wird?

eni

User

Beiträge: 465

Registrierungsdatum: 25.01.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

Andere Betriebssysteme: Linux from Scratch (2.6.29.6) mit Gnome, Debian Lenny

  • Nachricht senden

8

31.10.2009, 15:36

Wie könnte ich denn das Skript noch erweitern, dass ich immer 3 Backups habe und nicht immer das backup überschrieben wird?


dann musst du den teil:

Quellcode

1
put /tmp/mysql_bak.sql $REMOTE_DIR/mysql_bak.sql


durch das hier ersetzen:

Quellcode

1
2
3
4
delete $REMOTE_DIR/mysql_bak.sql.2
rename $REMOTE_DIR/mysql_bak.sql.1 $REMOTE_DIR/mysql_bak.sql.2
rename $REMOTE_DIR/mysql_bak.sql $REMOTE_DIR/mysql_bak.sql.1
put /tmp/mysql_bak.sql $REMOTE_DIR/mysql_bak.sql


wenn alles klappt, dann setze den thread bitte auf gelöst

  • »duffy6« ist der Autor dieses Themas

Beiträge: 15

Registrierungsdatum: 25.02.2007

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

9

01.11.2009, 21:01

Hey super: das klappt!!!! Danke! :thumbsup:

Gäbe es eine Möglichkeit das ganze so zu erweitern (mit Schliefe o.ä.), dass ich immer X alte Versionen habe und nicht "nur" 3?

Werde dann den Thread auf gelöst setzen.

eni

User

Beiträge: 465

Registrierungsdatum: 25.01.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

Andere Betriebssysteme: Linux from Scratch (2.6.29.6) mit Gnome, Debian Lenny

  • Nachricht senden

10

01.11.2009, 22:15

Zitat

Gäbe es eine Möglichkeit das ganze so zu erweitern (mit Schliefe o.ä.), dass ich immer X alte Versionen habe und nicht "nur" 3?
nein mit dieser methode wird das schwierig. kannst es ja erweitern, damit es mehr als nur 3 macht.
aber wenn du solche extras willst solltest du dich schon ein wenig einlesen, das ist dann doch fast zu bequem für dich..

11

01.11.2009, 23:12

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/bash
REMOTE_DIR="/html"
HOST='host'
USER='ftp_user'
PASSWD='passwd'
MAX_FILES=1
time=`date +%s`
typeset -i line=0

ftp -n $HOST > /tmp/txt.ftp << EOT
user ${USER} ${PASSWD}
cd ${REMOTE_DIR}
ls *.sql
bye
EOT

cat /tmp/txt.ftp | tr -s " " | cut -f9 -d " " > /tmp/ls.ftp
sort -r /tmp/ls.ftp > /tmp/all.ftp

while read file
do
	if [ $line -ge $MAX_FILES ]
		then
			echo ${file} >> /tmp/rm_files.ftp
	fi
	line=${line}+1
done < /tmp/all.ftp


echo "open $HOST
user $USER $PASSWD
binary
cd $REMOTE_DIR" > /tmp/ftp.$$

while read file 
do
	echo "delete $file" >> /tmp/ftp.$$
done < /tmp/rm_files.ftp 

echo "quit" >> /tmp/ftp.$$
ftp -ivn < /tmp/ftp.$$
rm /tmp/ftp.$$ /tmp/all.ftp /tmp/rm_files.ftp /tmp/txt.ftp

#backup erstellen
backup_skript.sh --mysql-password PASSW --mysql-login root /tmp/mysql_bak.sql

#hochladen per ftp
ftp -n -v $HOST << EOT
ascii
user $USER $PASSWD
prompt
put /tmp/mysql_bak_${time}.sql $REMOTE_DIR/mysql_bak.sql
bye
EOT

#lokales backup löschen
rm /tmp/mysql_bak.sql


Keine Garantie, dass es funktioniert.

Ciao frosti

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »Frosti« (01.11.2009, 23:12)