nano /opt/bakup.sh #!/bin/sh BAK_DIR="/home/disk1/sql_bases/s1c" DATE=`date +%d.%m.%Y-%H%M` ssh root@bs "mkdir $BAK_DIR/$DATE" for base in ` su -l postgres -c "psql -U postgres -Aqt -c 'select datname from pg_database;'"` do su -l postgres -c "pg_dump $base" | ssh root@bs "gzip > $BAK_DIR/$DATE/$base.sql.gz" done ssh root@bs "/home/disk1/sql_bases/clean.sh $BAK_DIR" nano /etc/cron.d/backup-postgresql # backup postgres 0 1 * * * root /opt/bakup.sh на бекап сервере cat clean.sh #!/bin/bash if [ $# -lt 1 ] then echo Something wrong with parameters exit fi x=1 # Счетчик файлов path=$1 #"/home/disk1/sql_bases/s1c-nd" # Путь к удаляемым файлам for i in `ls -t $path` do if [ $x -le 14 ] then ((x++)) continue fi rm -rf $path/$i done * восстановление cat /opt/restore.sh #!/bin/sh BAK_DIR="/home/s1c-tt" DATE="15.01.2018-0100" su -l postgres -c "dropdb $1" su -l postgres -c "createdb $1" ssh root@bs "gunzip < $BAK_DIR/$DATE/$1.sql.gz" | su -l postgres -c "psql $1"