Prezentuje wam skrypt wykonujący automatyczne kopie zapasowe waszych wszystkich baz danych do konkretnego katalogu. Bazy danych pakują się do pliku .gz w katalogu o odpowiedniej nazwie, domyślnie nazwa katalogu = data
#! /bin/bash TIMESTAMP=$(date +"%F") BACKUP_DIR="/home/sqlbackup/$TIMESTAMP" MYSQL_USER="xroot" MYSQL=/usr/bin/mysql MYSQL_PASSWORD="password" MYSQLDUMP=/usr/bin/mysqldump mkdir -p "$BACKUP_DIR" databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"` for db in $databases; do $MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$db.gz" done
- TIMESTAMP=$(date +”%F”) – zmienna w której określamy nazwę katalogu, jak pisałem wyżej tutaj jest to data, wynikiem jest np: 2015-02-02
- BACKUP_DIR=”/home/sqlbackup/$TIMESTAMP” – katalog w którym będą się te kopie gromadzić
- MYSQL_USER=”xroot” – nazwa głównego usera i administratora bazy MYSQL
- MYSQL=/usr/bin/mysql – ścieżka do binarki MYSQL, pozostaw bez zmian jak instalowałeś/aś apt-em
- MYSQL_PASSWORD=”password” – hasło do konta administratora bazy
- MYSQLDUMP=/usr/bin/mysqldump – ścieżka do binarki programu MYSQLDUMP, można zostawić domyślne
Po zapisaniu skryptu do pliku dodajemy go tylko do harmonogramu (CRONA), u mnie wykonuje się raz na dobę o 22:
22 0 * * * sh /scripts/bakup.sh > /dev/null 2>&1