#!/bin/bash
# user & password
USER=root
PASS=pass
# number of backups to be saved
KEEP=14
# dir to backup
DIR=/ var /backups/mysql
NOW=$(date + "%Y-%m-%d" )
DBS= "$(mysql -u $USER -p$PASS -Bse 'show databases')"
for db in $DBS
do
BACKUPS=`find $DIR -name "$db.*.gz" | wc -l | sed 's/\ //g' `
while [ $BACKUPS -ge $KEEP ]
do
ls -tr1 $DIR/$db.*.gz | head -n 1 | xargs rm -f
BACKUPS=`expr $BACKUPS - 1`
done
FILE=$DIR/$db.$NOW-$(date + "%T" ).sql.gz
mysqldump -u $USER -p$PASS $db | gzip -9 > $FILE
done
exit 0
* This source code was highlighted with Source Code Highlighter .
#!/bin/bash
# user & password
USER=postgres
PASS=pass
# number of backups to be saved
KEEP=14
# dir to backup
DIR=/ var /backups/pgsql
PGPASSWORD=$PASS
export PGPASSWORD
NOW=$(date + "%Y-%m-%d" )
DBS= "$(psql -U $USER -lt |awk '{ print $1}' |grep -vE '^-|^List|^Name|template[0|1]')"
for db in $DBS
do
BACKUPS=`find $DIR -name "$db.*.gz" | wc -l | sed 's/\ //g' `
while [ $BACKUPS -ge $KEEP ]
do
ls -tr1 $DIR/$db.*.gz | head -n 1 | xargs rm -f
BACKUPS=`expr $BACKUPS - 1`
done
FILE=$DIR/$db.$NOW-$(date + "%T" ).sql.gz
pg_dump -U $USER $db | gzip -c > $FILE
done
PGPASSWORD=
export PGPASSWORD
exit 0
* This source code was highlighted with Source Code Highlighter .
Source: https://habr.com/ru/post/82278/
All Articles