Создание резервной копии с использованием скрипта — различия между версиями
Строка 6: | Строка 6: | ||
1.3 Поместим текст | 1.3 Поместим текст | ||
#!/bin/bash | #!/bin/bash | ||
− | |||
PGUSER=postgres | PGUSER=postgres | ||
PGPASS=postgres | PGPASS=postgres | ||
− | |||
KEEP=14 | KEEP=14 | ||
− | |||
DIR=/etc/backup | DIR=/etc/backup | ||
PGPASSWORD=$PGPASS | PGPASSWORD=$PGPASS | ||
export PGPASSWORD | export PGPASSWORD | ||
NOW=$(date +"%Y-%m-%d") | NOW=$(date +"%Y-%m-%d") | ||
− | PGBASES=" | + | PGBASES="jupiter" |
− | |||
do | do | ||
− | BACKUPS=`find $DIR -name "$ | + | BACKUPS=`find $DIR -name "$PGBASES.*.gz" | wc -l | sed 's/\ //g'` |
while [ $BACKUPS -ge $KEEP ] | while [ $BACKUPS -ge $KEEP ] | ||
do | do | ||
− | ls -tr1 $DIR/$ | + | ls -tr1 $DIR/$PGBASES.*.gz | head -n 1 | xargs rm -f |
BACKUPS=`expr $BACKUPS - 1` | BACKUPS=`expr $BACKUPS - 1` | ||
done | done | ||
− | FILE=$DIR/$ | + | FILE=$DIR/$PGBASES.$NOW-$(date +"%T").sql.gz |
− | pg_dump -U $PGUSER $ | + | pg_dump -U $PGUSER $PGBASES | gzip -c > $FILE |
done | done | ||
PGPASSWORD= | PGPASSWORD= | ||
export PGPASSWORD | export PGPASSWORD | ||
exit 0 | exit 0 | ||
+ | |||
+ | <code>PGUSER=postgres</code> - Имя пользователя<br> | ||
+ | <code>PGPASS=postgres</code> - Пароль для доступа к базе данных<br> | ||
+ | <code>KEEP=14</code> - количество бэкапов, которое требуется сохранять<br> | ||
+ | <code>DIR=/etc/backup</code> - Каталог, куда сохранять бэкапы<br> | ||
+ | <code>NOW=$(date +"%Y-%m-%d")</code> - Формат записи даты и времени бэкапа<br> | ||
+ | <code>PGBASES="jupiter"</code> - Имя базы данных<br> | ||
+ | <code>BACKUPS=`find $DIR -name "$PGBASES.*.gz" | wc -l | sed 's/\ //g'`</code> - Выходной файл с названием базы данных<br> | ||
+ | <code>FILE=$DIR/$PGBASES.$NOW-$(date +"%T").sql.gz</code><br> | ||
+ | <code>pg_dump -U $PGUSER $PGBASES | gzip -c > $FILE</code> - Сжимаем базу данных | ||
+ | |||
1.4 Сохраним его<br> | 1.4 Сохраним его<br> | ||
1.5 Дадим права на выполнение | 1.5 Дадим права на выполнение |
Версия 11:02, 15 июня 2017
1. Создайте скрипт
1.1 Создадим файл скрипта
touch /etc/pgsql-backup
1.2 Откроем файл для редактирования
vi /etc/pgsql-backup
1.3 Поместим текст
#!/bin/bash PGUSER=postgres PGPASS=postgres KEEP=14 DIR=/etc/backup PGPASSWORD=$PGPASS export PGPASSWORD NOW=$(date +"%Y-%m-%d") PGBASES="jupiter" do BACKUPS=`find $DIR -name "$PGBASES.*.gz" | wc -l | sed 's/\ //g'` while [ $BACKUPS -ge $KEEP ] do ls -tr1 $DIR/$PGBASES.*.gz | head -n 1 | xargs rm -f BACKUPS=`expr $BACKUPS - 1` done FILE=$DIR/$PGBASES.$NOW-$(date +"%T").sql.gz pg_dump -U $PGUSER $PGBASES | gzip -c > $FILE done PGPASSWORD= export PGPASSWORD exit 0
PGUSER=postgres
- Имя пользователя
PGPASS=postgres
- Пароль для доступа к базе данных
KEEP=14
- количество бэкапов, которое требуется сохранять
DIR=/etc/backup
- Каталог, куда сохранять бэкапы
NOW=$(date +"%Y-%m-%d")
- Формат записи даты и времени бэкапа
PGBASES="jupiter"
- Имя базы данных
BACKUPS=`find $DIR -name "$PGBASES.*.gz" | wc -l | sed 's/\ //g'`
- Выходной файл с названием базы данных
FILE=$DIR/$PGBASES.$NOW-$(date +"%T").sql.gz
pg_dump -U $PGUSER $PGBASES | gzip -c > $FILE
- Сжимаем базу данных
1.4 Сохраним его
1.5 Дадим права на выполнение
chmod +x /etc/pgsql-backup
1.6 Создадим каталог, куда будет делаться backup
mkdir /etc/backup
1.7 При выполнении скрипта будет сохраняться резервная копия схемы данных в указанный каталог