Создание резервной копии с использованием скрипта — различия между версиями
Строка 45: | Строка 45: | ||
7. При выполнении скрипта будет сохраняться резервная копия схемы данных в указанный каталог | 7. При выполнении скрипта будет сохраняться резервная копия схемы данных в указанный каталог | ||
− | Если возникает ошибка: | + | [[Если возникает ошибка:]] |
/bin/sh^M: bad interpreter: No such file or directory | /bin/sh^M: bad interpreter: No such file or directory | ||
/bin/sh^M: плохой интерпретатор: Нет такого файла или каталога | /bin/sh^M: плохой интерпретатор: Нет такого файла или каталога | ||
Строка 54: | Строка 54: | ||
cat name_old.sh | tr -d '\r' > name_new.sh | 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 |
Версия 17:23, 27 ноября 2017
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