LinuxForum.Fans
Тема

Нужен бекап всех баз postgres на сервере

Автор: XliN 3 сообщений 2269 просмотров
13.10.2014 12:13 · отредактировано #396222

Накатал вот такой скрипт, но мне не нравится как я распарсил вывод psql -U postgres -l

Показать
[console]#!/bin/bash

backup_dir="/mnt/misc/backup"
LOG_POSTGRES="base_all_postgres.txt"

DIR_POSTGRES="/mnt/misc/backup/postgres_dump"

##################################
PG_DUMP="/usr/bin/pg_dump"


#Переключатели
val_dir="0"
val_postgres="1"

cd $backup_dir

if [ $val_dir -eq 1 ]; then

# Бэкап всего что нужно
tar -cvvzf $backup_dir/backup-`date '+%m_%d_%Y'`.tar.bz2 \
/etc/ \
/var/opt/drwcs/ \
/var/www/ \
/var/log/ \
/opt/drwcs/ \
--exclude=$backup_dir > ./last.log
else
echo "Бекап каталогов пропущен"
fi

if [ $val_postgres -eq 1 ]; then
cd $DIR_POSTGRES
echo "DUMP Postgres base all"
psql -U postgres -l | awk '{ print $1 }' | grep -v "-" | grep -v "|" |sed '3,18!d' > $LOG_POSTGRES
cat $LOG_POSTGRES | while read line
do
echo -e "Типо делаем дамп базы $line"
$PG_DUMP -h localhost -U postgres -Fc -Z9 -c -f `date +"${line}.backups-%m-%d-%Y"` $line
done
else
echo "Postgres пропущен"
fi[/console]

а именно sed '3,18!d - вывожу с 3 строчки до 18. Как 18 заменить на "до конца вывода"? Писатель из меня кривой. Скрипт написан на коленке.

13.10.2014 17:59 · отредактировано #396351

Используй

text
tail -n +4

И два грепа можно объединить вот так:

text
grep -v -E "\-|\|"
14.10.2014 10:10 #396449

Vascom, спасибо =)

Войдите или зарегистрируйтесь, чтобы ответить.