Накатал вот такой скрипт, но мне не нравится как я распарсил вывод 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]
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 заменить на "до конца вывода"? Писатель из меня кривой. Скрипт написан на коленке.