Создание резервной копии с использованием скрипта

Материал из ЭЛЕСТА
Перейти к: навигация, поиск

1. Создадим файл скрипта

touch /etc/pgsql-backup.sh

2. Откроем файл для редактирования

vi /etc/pgsql-backup.sh

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").backup.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").backup.gz
pg_dump -U $PGUSER $PGBASES | gzip -c > $FILE - Выходной файл с сжатием

4. Сохраним его
5. Дадим права на выполнение

chmod +x /etc/pgsql-backup.sh

6. Создадим каталог, куда будет делаться backup

 mkdir /etc/backup

7. При выполнении скрипта будет сохраняться резервная копия схемы данных в указанный каталог

Если возникает ошибка:

/bin/sh^M: bad interpreter: No such file or directory
/bin/sh^M: плохой интерпретатор: Нет такого файла или каталога

Суть проблемы в том, что под на платформе Windows редакторы добавляют символ «возврата каретки» CR/LF. Не все редакторы под Linux виндовый перенос строки умеют отображать, но он там есть, о чем свидетельствует сообщение об ошибке.

Удаляем возврат каретки с использованием tr:

cat name_old.sh | tr -d '\r' > name_new.sh

Добавление прав доступа в папку backup для пользователя postgres

Для изменения прав доступа к файлу используется команда chmod. Ее можно использовать в двух вариантах. В первом варианте вы должны явно указать, кому какое право даете или кого этого права лишаете:

[user]$ chmod wXp имя-файла где вместо символа w подставляется

либо символ u (т. е. пользователь, который является владельцем);

либо g (группа);

либо o (все пользователи, не входящие в группу, которой принадлежит данный файл);

либо a (все пользователи системы, т. е. и владелец, и группа, и все остальные).

Вместо X ставится:

либо + (предоставляем право);

либо – (лишаем соответствующего права);

либо = (установить указанные права вместо имеющихся),

Вместо p — символ, обозначающий соответствующее право:

r (чтение);

w (запись);

x (выполнение).

Вот несколько примеров использования команды chmod:

[user]$ chmod a+x file_name предоставляет всем пользователям системы право на выполнение данного файла.

[user]$ chmod go-rw file_name