Модификация скрипта для резервного копирования только 1 базы данных - PullRequest
0 голосов
/ 19 апреля 2019

, поэтому у меня есть эта проблема, с этим сценарием ниже он идет для каждой базы данных и создает резервную копию для этой базы данных.эта строка для i in $databases; do, но как я могу изменить этот скрипт, чтобы сделать резервную копию только для 1 базы данных с именем "test_database"?

#!/bin/bash
# Location of the backup logfile.
logfile="/home/erp/backups/logfile.log"
#erp user
user="antonp"
# Location to place backups.
backup_dir="/home/erp/backups"

if [ ! -d $backup_dir ]; then
  mkdir $backup_dir
  chown $user:$user $backup_dir
fi

touch $logfile
  timeslot=`date +%d%m%y%H%M%S`
  databases=`sudo su - postgres -c "psql template1 -c '\l'|tail -n+4|cut -d'|' -f 1|sed -e '/^ *$/d'|sed -e '$ d'"`
  for i in $databases; do
    if [ "$i" != "template0" ] && [ "$i" != "template1" ]; then
      timeinfo=`date '+%T %x'`
      echo "Backup and Vacuum started at $timeinfo for time slot $timeslot on database: $i " >> $logfile
      su - postgres -c "vacuumdb -z -U postgres $i >/dev/null 2>&1"
      su - postgres -c "pg_dump $i --exclude-table-data=sale_order -U postgres | gzip > \"/tmp/openerp-$i-$timeslot-database.gz\""
      cp /tmp/openerp-$i-$timeslot-database.gz $backup_dir/openerp-$i-$timeslot-database.gz
      chown $user:$user $backup_dir/openerp-$i-$timeslot-database.gz
      timeinfo=`date '+%T %x'`
      rm /tmp/openerp-$i-$timeslot-database.gz
      echo "Backup and Vacuum complete at $timeinfo for time slot $timeslot on database: $i " >> $logfile
    fi
done

1 Ответ

1 голос
/ 19 апреля 2019

Просто немного измените переменную базы данных:

touch $logfile
  timeslot=`date +%d%m%y%H%M%S`
  #databases=`sudo su - postgres -c "psql template1 -c '\l'|tail -n+4|cut -d'|' -f 1|sed -e '/^ *$/d'|sed -e '$ d'"`
  databases="test_database"
  for i in $databases; do
    if [ "$i" != "template0" ] && [ "$i" != "template1" ]; then
      timeinfo=`date '+%T %x'`
      echo "Backup and Vacuum started at $timeinfo for time slot $timeslot on database: $i " >> $logfile
      su - postgres -c "vacuumdb -z -U postgres $i >/dev/null 2>&1"
      su - postgres -c "pg_dump $i --exclude-table-data=sale_order -U postgres | gzip > \"/tmp/openerp-$i-$timeslot-database.gz\""
      cp /tmp/openerp-$i-$timeslot-database.gz $backup_dir/openerp-$i-$timeslot-database.gz
      chown $user:$user $backup_dir/openerp-$i-$timeslot-database.gz
      timeinfo=`date '+%T %x'`
      rm /tmp/openerp-$i-$timeslot-database.gz
      echo "Backup and Vacuum complete at $timeinfo for time slot $timeslot on database: $i " >> $logfile
    fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...