Last active
March 28, 2018 08:07
-
-
Save chatlamin/aaba6f6444c4bda52bd4f546e289b741 to your computer and use it in GitHub Desktop.
new backup postgresql
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #устанавливаем необходимое для работы скрипта | |
| sudo apt install postgresql-client | |
| sudo apt install curlftpfs | |
| sudo apt install sendemail | |
| #проверить откравку почты, если есть ошибка | |
| #ERROR => No TLS support! SendEmail can't load required libraries. (try installing Net::SSLeay and IO::Socket::SSL) | |
| #устанавливаем sudo apt-get install libio-socket-ssl-perl libnet-ssleay-perl |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| DB_USERNAME=login | |
| DB_NAME=mydb | |
| DB_PASSWORD=password | |
| DB_HOST=192.168.0.1 | |
| TIMESTAMP="date +%d-%m-%Y_%H-%M" | |
| BACKUP_DIR='/home/admin/pg_backup' | |
| FILENAME=$DB_NAME-`$TIMESTAMP`.sql.gz | |
| FTP='ftp://192.168.0.2/backup/' | |
| FTP_MOUNT='192.168.0.2/backup/' | |
| FTP_USERNAME=login | |
| FTP_PASSWORD=password | |
| MOUNT_DIR='/home/admin/pg_backupftp/' | |
| LOG_FILE='/home/admin/logger/log1.log' | |
| MAIL_FROM='myemail@gmail.com' | |
| MAIL_TO='myemail2@gmail.com' | |
| MAIL_NAME='my backup' | |
| MAIL_BODY="backup '$DB_NAME' ERROR" | |
| MAIL_SMTP='smtp.gmail.com:587' | |
| MAIL_LOGIN='myemail@gmail.com' | |
| MAIL_PASS='password' | |
| readonly SCRIPT_NAME=$(basename $0) | |
| log() { | |
| echo "$@" >> $LOG_FILE | |
| logger -p user.notice -t $SCRIPT_NAME "$@" | |
| } | |
| err() { | |
| echo "$@" >> $LOG_FILE | |
| logger -p user.error -t $SCRIPT_NAME "$@" | |
| } | |
| # $1 - название задачи | |
| # $2 - задача | |
| run_task() { | |
| log `$TIMESTAMP` start $1 | |
| eval $2 | |
| RET_CODE=$? | |
| if [ $RET_CODE -eq 0 ] ; then | |
| log `$TIMESTAMP` finish $1 | |
| else | |
| sendEmail -o tls=yes -f $MAIL_FROM -t $MAIL_TO -s $MAIL_SMTP -xu $MAIL_LOGIN -xp $MAIL_PASS -u "$MAIL_NAME" -m "$MAIL_BODY `$TIMESTAMP` " | |
| err `$TIMESTAMP` ERROR $1 | |
| exit $RET_CODE | |
| fi | |
| } | |
| run_task "local_backup" "pg_dump postgres://$DB_USERNAME:$DB_PASSWORD@$DB_HOST/$DB_NAME | gzip > $BACKUP_DIR/$FILENAME" | |
| run_task "rotate_backup" "find $BACKUP_DIR -name '*.gz' -mtime +2 -delete" | |
| run_task "remote_backup" "curl -u $FTP_USERNAME:$FTP_PASSWORD -T $BACKUP_DIR/$FILENAME $FTP" | |
| run_task "remote_initislize" "curlftpfs $FTP_USERNAME:$FTP_PASSWORD@$FTP_MOUNT $MOUNT_DIR" | |
| run_task "rotate_remote_backup" "find $MOUNT_DIR -name '*.gz' -mtime +7 -delete" | |
| run_task "finish" "umount $MOUNT_DIR" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Добавляем скрипт в cron: | |
| # sudo crontab -e | |
| # * * * * * /home/admin/pg_backup.sh > /dev/null 2>&1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment