Portál AbcLinuxu, 14. května 2025 01:39
#promenne MYSQL=/usr/bin/mysql MYSQLDUMP=/usr/bin/mysqldump GREP=/bin/grep DST_DIR=/var/backups/mysql TMP_DIR=/tmp/sql mkdir -p /var/backups/mysql //adr. pro zalohu DB mkdir -p /tmp/sql/ //adr. pro docasne ulozeni DB # includovat soubor s vyjimkami, vynechat pozadovane databaze, v souboru lnbackup_databases jsou databaze ktere se NEMAJI zalohovat, jsou v promenne SKIP_MYSQL if [ -e /etc/default/lnbackup_databases ]; then . /etc/default/lnbackup_databases fi; #do promenne databases se ulozi databaze ktere jsou na serveru databases=`$MYSQL -B -e 'show databases;' | $GREP -v '^Database'` #PROBLEM for database in $databases;do # VNEJSI CYKLUS for skip_database in $SKIP_MYSQL;do # VNITNI CYKLUS if [ "$database" != "$skip_database" ]; then #pokracuj v programu a pak VYSKOC Z # VNITRNIHO CYKLU $MYSQLDUMP $database | grep -v 'Dump completed on ' | gzip --no-name > $TMP_DIR/$database.sql.gz #dump databaze #zjistit zda existuje vubec nejaka predchozi zaloha - v pripade ze ano tak porovnavat, v pripade ze ne tak to tam rovnou nahrnout if [ -f $DST_DIR/$database.sql.gz ]; then echo "/usr/bin/diff -q $TMP_DIR/$database.sql.gz $DST_DIR/$database.sql.gz > /dev/null" ls -l $TMP_DIR/$database.sql.gz $DST_DIR/$database.sql.gz if ! /usr/bin/diff -q $TMP_DIR/$database.sql.gz $DST_DIR/$database.sql.gz > /dev/null; then echo "prepisuji soubor $DST_DIR/$database.sql.gz novejsi verzi" /usr/bin/diff $TMP_DIR/$database.sql.gz $DST_DIR/$database.sql.gz cp $TMP_DIR/$database.sql.gz $DST_DIR/$database.sql.gz #prepis predchozi databazi else rm $TMP_DIR/$database.sql.gz echo "mazu $TMP_DIR/$database.sql.gz" fi else mv $TMP_DIR/$database.sql.gz $DST_DIR/$database.sql.gz echo "predchozi $DST_DIR/$database.sql.gz neexistovala, ukladam aktualni" fi else echo "preskakuji zalohovani databaze $database" # VYSKOC Z VNITRNIHO CYKLU fi done done
cat $databases | sort > TMP1 cat $SKIP_SQL | sort > TMP2 diff TMP1 TMP2 > BACKUP_SQL; rm TMP1 TMP2NN
#!/bin/sh # # GOOD: 1 BAD: 2 # 3 1 # 2 # 4 # cat good | sort > TMP1 cat bad | sort > TMP2 SQL=`comm -23 TMP1 TMP2` rm TMP1 TMP2 echo $SQL exit 0Tak a ted odzalohujes jen to co je potreba.. NN
cat $databases | sort > TMP1 cat $SKIP_SQL | sort > TMP2 diff TMP1 TMP2 > BACKUP_SQL; rm TMP1 TMP2
BACKUP_SQL=`comm -23 TMP1 TMP2`To 2 potlaci vystup rozdilu v druhem souboru a 3 shody.. NN
// kdyz jsem nepouzil sort tak byl vystup stejny echo $PROMENNA1 | sort > soubor.txt echo $PROMENNA2 | sort > soubor1.txt BACKUP_SQL=`comm -23 soubor.txt soubor1.txt`
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.