"Fossies" - the Fresh Open Source Software Archive 
Member "fsbackup-1.2pl2/scripts/pgsql_backup.sh" (29 Jun 2004, 6005 Bytes) of package /linux/privat/old/fsbackup-1.2pl2.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Bash source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
1 #!/bin/sh
2 # Script for backup SQL tables from PostreSQL
3 # Скрипт для бэкапа данных хранимых в PostgreSQL
4 #
5 # http://www.opennet.ru/dev/fsbackup/
6 # Copyright (c) 2001 by Maxim Chirkov. <mc@tyumen.ru>
7 #
8 # For restore data type:
9 # Восстановление производится с помощью команды: psql -d template1 -f backupfile
10 #
11
12 #-------------------
13 # Name of backup, single word.
14 # Имя бэкапа.
15 #-------------------
16
17 backup_name="test_host"
18
19 #-------------------
20 # Backup method:
21 # full - backup full DB's structure and data.
22 # db - backup full DB's structure and data only for 'backup_db_list' databases.
23 # notdb- backup full DB's structure and data for all DB's, except
24 # data of 'backup_db_list' databases.
25 #
26 # Метод бэкапа:
27 # full - полный бэкап всех баз (рекомендуется),
28 # аналог запуска pg_dumpall или mysqldump --all-databases --all
29 #
30 # db - бэкап только указанных в backup_db_list баз данных, записи по
31 # реконструкции баз и таблиц записываются для всех баз на SQL сервере.
32 # notdb - бэкап всех баз, кроме указанных в backup_db_list, записи по
33 # реконструкции баз и таблиц записываются для всех баз на SQL сервере.
34 # Возможно исключение из бэкапа выборочных таблиц, тогда формат
35 # списка исключаемых таблиц задается в виде:
36 # "trash_db1 trash_db2:table1 trash_db2:table2"
37 # - производим бэкап всех баз, коме базы trash_db1 и таблиц table1 и
38 # table2 базы trash_db2.
39 #
40 #
41 #-------------------
42
43 backup_method="notdb"
44
45 #-------------------
46 # List of databases (delimited by spaces)
47 # Список включаемых или исключаемых из бэкапа баз, через пробел.
48 # Таблицы указываются в виде: имя_базы:имя_таблицы
49 #-------------------
50
51 backup_db_list="aspseek trash:cache_table1 trash:cache_table2 mnogosearch"
52
53
54 #-------------------
55 # Auth information for MySQL.
56 # Имя пользователя и пароль для соединения с Mysql, для PostgreSQL скрипт
57 # должен запускаться из-под пользователя с правами полного доступа к базам PostgreSQL.
58 #-------------------
59
60 backup_mysqluser=""
61 backup_mysqlpassword=""
62
63
64 #-------------------
65 # Directory to store SQL backup. You must have enought free disk space to store
66 # all data from you SQL server.
67 # Директория куда будет помещен бэкап данных с SQL сервера.
68 # Внимание !!! Должно быть достаточно свободного места для бэкапа всех
69 # выбранных БД.
70 #-------------------
71
72 backup_path="/usr/local/fsbackup/sys_backup"
73
74
75 #-------------------
76 # Full path of postgresql programs.
77 # Путь к программам postgresql
78 #-------------------
79
80 backup_progdump_path="/usr/local/pgsql/bin"
81
82 #-------------------
83 # Extra flags for pg_dump program.
84 # -D - Dump data as INSERT commands with explicit column names
85 # Дополнительные параметры для pg_dump
86 # -D - формировать бэкап данных в виде INSERT комманд, с указанием названий
87 # столбцов. Если скорость восстановления из бэкапа и размер бэкапа
88 # более важны, и совместимостью с другими СУБД можно пренебречь,
89 # используйте: extra_pg_dump_flag=""
90 #-------------------
91
92 extra_pg_dump_flag="-D"
93
94 ############################################################################
95
96 if [ -n "$backup_progdump_path" ]; then
97 backup_progdump_path="$backup_progdump_path/"
98 fi
99
100 #-------------------------------------------------------------------------
101 # Полный бэкап для Postgresql
102 if [ "_$backup_method" = "_full" ]; then
103 echo "Creating full backup of all PostgreSQL databases."
104 # ${backup_progdump_path}pg_dumpall -s > $backup_path/$backup_name-struct-pgsql
105 ${backup_progdump_path}pg_dumpall $extra_pg_dump_flag|gzip > $backup_path/$backup_name-pgsql.gz
106 exit
107
108 fi
109
110 #-------------------------------------------------------------------------
111 # Бэкап указанных баз для Postgresql
112 if [ "_$backup_method" = "_db" ]; then
113 echo "Creating full backup of $backup_db_list PostgreSQL databases."
114 # ${backup_progdump_path}pg_dumpall -s > $backup_path/$backup_name-struct-pgsql
115 cat /dev/null > $backup_path/$backup_name-pgsql
116
117 for cur_db in $backup_db_list; do
118 echo "Dumping $cur_db..."
119 cur_db=`echo "$cur_db" | awk -F':' '{if (\$2 != ""){print "-t", \$2, \$1}else{print \$1}}'`
120 ${backup_progdump_path}pg_dump $extra_pg_dump_flag $cur_db >> $backup_path/$backup_name-pgsql
121 done
122 gzip -f $backup_path/$backup_name-pgsql
123
124 exit
125
126 fi
127
128 #-------------------------------------------------------------------------
129 # Бэкап всех баз кроме указанных для Postgresql
130 if [ "_$backup_method" = "_notdb" ]; then
131 echo "Creating full backup of all PostgreSQL databases except databases $backup_db_list."
132 # ${backup_progdump_path}pg_dumpall -s > $backup_path/$backup_name-struct-pgsql
133 cat /dev/null > $backup_path/$backup_name-pgsql
134
135 for cur_db in `${backup_progdump_path}psql -A -q -t -c "select datname from pg_database" template1 | grep -v '^template[01]$' `; do
136
137 grep_flag=`echo " $backup_db_list"| grep " $cur_db:"`
138 if [ -n "$grep_flag" ]; then
139 # Исключение таблиц для данной базы
140 for cur_db_table in `${backup_progdump_path}psql -A -q -t -c "select tablename from pg_tables WHERE tablename NOT LIKE 'pg\_%' AND tablename NOT LIKE 'sql\_%';" $cur_db`; do
141
142 flag=1
143 for cur_ignore in $backup_db_list; do
144 if [ "_$cur_ignore" = "_$cur_db:$cur_db_table" ]; then
145 flag=0
146 fi
147 done
148
149 if [ $flag -gt 0 ]; then
150 echo "Dumping $cur_db:$cur_db_table..."
151 ${backup_progdump_path}pg_dump $extra_pg_dump_flag -t $cur_db_table $cur_db >> $backup_path/$backup_name-pgsql
152 else
153 echo "Skiping $cur_db:$cur_db_table..."
154 fi
155 done
156 else
157 # Исключение базы
158 flag=1
159 for cur_ignore in $backup_db_list; do
160 if [ "_$cur_ignore" = "_$cur_db" ]; then
161 flag=0
162 fi
163 done
164
165 if [ $flag -gt 0 ]; then
166 echo "Dumping $cur_db..."
167 ${backup_progdump_path}pg_dump $extra_pg_dump_flag $cur_db >> $backup_path/$backup_name-pgsql
168 else
169 echo "Skiping $cur_db..."
170 fi
171 fi
172 done
173 gzip -f $backup_path/$backup_name-pgsql
174 exit
175 fi
176
177 echo "Configuration error. Not valid parameters in backup_method or backup_sqltype."
178
179