Создание резервной копии с использованием скрипта — различия между версиями

Материал из ЭЛЕСТА
Перейти к: навигация, поиск
Строка 6: Строка 6:
 
1.3 Поместим текст
 
1.3 Поместим текст
 
  #!/bin/bash
 
  #!/bin/bash
# user & password
 
 
  PGUSER=postgres
 
  PGUSER=postgres
 
  PGPASS=postgres
 
  PGPASS=postgres
# number of backups to be saved
 
 
  KEEP=14
 
  KEEP=14
# dir to backup
 
 
  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="$(psql -U $PGUSER -lt |awk '{ print $1}' |grep -vE '^-|^List|^Name|template[0|1]')"
+
  PGBASES="jupiter"
for db in $PGBASES
 
 
  do
 
  do
   BACKUPS=`find $DIR -name "$db.*.gz" | wc -l | sed 's/\ //g'`
+
   BACKUPS=`find $DIR -name "$PGBASES.*.gz" | wc -l | sed 's/\ //g'`
 
   while [ $BACKUPS -ge $KEEP ]
 
   while [ $BACKUPS -ge $KEEP ]
 
   do
 
   do
     ls -tr1 $DIR/$db.*.gz | head -n 1 | xargs rm -f  
+
     ls -tr1 $DIR/$PGBASES.*.gz | head -n 1 | xargs rm -f  
 
     BACKUPS=`expr $BACKUPS - 1`  
 
     BACKUPS=`expr $BACKUPS - 1`  
 
   done
 
   done
   FILE=$DIR/$db.$NOW-$(date +"%T").sql.gz
+
   FILE=$DIR/$PGBASES.$NOW-$(date +"%T").sql.gz
   pg_dump -U $PGUSER $db | gzip -c > $FILE
+
   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 При выполнении скрипта будет сохраняться резервная копия схемы данных в указанный каталог