Archive

Archive for the ‘Lab’ Category

bash script за бекъп (backup) на база данни

В момента съм в процес на ъпгрейд на бекъп системата ми. Не се учудвайте ако видите нещо да е “не както трябва”, защото все пак цялата система е писана за лични нужди и скоро няма изгледи да бъде пусната за масово ползване.

За пореден път: авторите на блога не отговарят за щетите, които може да нанесете на системата си, използвайки и прилагайки статиите написани тук!

Ето го и скрипта 🙂

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
#!/bin/bash
 
DBUSER="root"
DBPASS="password_here"
DIR="/home/blagomir/test/"
DUMP="/usr/bin/mysqldump"
 
 
DATABASES=`mysql -u $DBUSER -p$DBPASS -e"show databases"`
for b in $DATABASES ;
	do
	TABLES=`mysql -u $DBUSER -p$DBPASS -e"show tables from $b"`
 
	echo "=============================================="
	echo "Backup database $b"
 
	for t in $TABLES ;
	do
 
		VARIABLE="Tables_in_$b"
		if [[ "$VARIABLE" != $t ]];
		then
			echo "Backup table $b.$t"
			$DUMP -u $DBUSER -p$DBPASS --database $b --table $t > $DIR$b.$t.sql
		fi
 
	done
 
	echo "Done backup $b"
	echo "=============================================="
 
done
Categories: bash, Lab Tags:

rsync – push или pull – Тестът!

След като написах предният пост, реших сам да направя теста споменат там.

/remote/path/
OS: Ubuntu 9.10
CPU: Intel 2.6 GHz
HDD: Hitachi 500 GB (7200 rpm)

/local/path/
OS: Ubuntu 9.10
CPU: Intel Core Duo x 1.86 GHz
HDD: 120 GB (5400 rpm)

Първи опит: rsync pull
Source: /remote/path/
Destination: /local/path/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
blagomir@dragonfly:/storage/test$ rsync --stats -a blagomir@192.168.1.2:/remote/path/ /local/path/
blagomir@192.168.1.2's password: 
 
Number of files: 26579
Number of files transferred: 23604
Total file size: 1211767628 bytes
Total transferred file size: 1211709797 bytes
Literal data: 1211709797 bytes
Matched data: 0 bytes
File list size: 583070
File list generation time: 0.091 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 460461
Total bytes received: 1213463704
 
sent 460461 bytes  received 1213463704 bytes  2425422.91 bytes/sec
total size is 1211767628  speedup is 1.00

До тук приключва и първата част от теста. Лошото е само, че не можах да разбера колко секунди отне въпросният трансфер…
Кратка калкулация 1211709797 / 2425422.91 = 499.587017177 сек.

Втори опит: rsync push
Source: /local/path/
Destination: /remote/path/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
blagomir@dragonfly:/storage/test$ rsync --stats -a /local/path/ blagomir@192.168.1.2:/remote/path/
blagomir@192.168.1.2's password: 
 
Number of files: 26574
Number of files transferred: 23604
Total file size: 1211709797 bytes
Total transferred file size: 1211709797 bytes
Literal data: 1211709797 bytes
Matched data: 0 bytes
File list size: 588640
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 1213459369
Total bytes received: 460367
 
sent 1213459369 bytes  received 460367 bytes  2469826.52 bytes/sec
total size is 1211709797  speedup is 1.00
blagomir@dragonfly:/storage/test$

При вторият вариант цифрите са следните:
1211709797 / 2469826.52 = 490.605225585 сек.

Заключение: при проведеният тест се установи, че rsync работи по-бързо при push отколкото при pull. Това се случи при мен с много на брой, но малки файлове.
Ако имате свободно време и желание можете да тествате и вие и да публикувате резултатите си тук.

Categories: Lab, Linux Tags: