Portál AbcLinuxu, 3. listopadu 2025 23:05
#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.