"Fossies" - the Fresh Open Source Software Archive 
Member "fsbackup-1.2pl2/scripts/sqlite_backup.sh" (14 Jan 2005, 5825 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 SQLite
3 # Скрипт для бэкапа данных хранимых в SQLite
4 #
5 # http://www.opennet.ru/dev/fsbackup/
6 # Copyright (c) 2001-2004 by Maxim Chirkov. <mc@tyumen.ru>
7 #
8 # For restore data type:
9 # Восстановление производится с помощью команды:
10 # cat <backupfile> |sqlite <path_to_db_file>
11 #
12
13 #-------------------
14 # Name of backup, single word.
15 # Имя бэкапа.
16 #-------------------
17
18 backup_name="test_host"
19
20 #-------------------
21 # Backup method:
22 # full - backup full DB's structure and data.
23 # db - backup full DB's structure and data only for 'backup_db_list' databases.
24 # notdb- backup full DB's structure and data for all DB's, except
25 # data of 'backup_db_list' databases.
26 #
27 # Метод бэкапа:
28 # full - полный бэкап всех баз (рекомендуется),
29 # аналог запуска pg_dumpall или mysqldump --all-databases --all
30 #
31 # db - бэкап только указанных в backup_db_list баз данных, записи по
32 # реконструкции баз и таблиц записываются для всех баз на SQL сервере.
33 # notdb - бэкап всех баз, кроме указанных в backup_db_list, записи по
34 # реконструкции баз и таблиц записываются для всех баз на SQL сервере.
35 # Возможно исключение из бэкапа выборочных таблиц, тогда формат
36 # списка исключаемых таблиц задается в виде:
37 # "trash_db1 trash_db2:table1 trash_db2:table2"
38 # - производим бэкап всех баз, коме базы trash_db1 и таблиц table1 и
39 # table2 базы trash_db2.
40 #
41 #
42 #-------------------
43
44 backup_method="notdb"
45
46 #-------------------
47 # List of databases (full path delimited by spaces)
48 # Список включаемых или исключаемых из бэкапа баз (полный путь к базе), через пробел.
49 # Таблицы указываются в в переменной backup_tables_list в виде: имя_базы:имя_таблицы
50 # Внимание, при выборе метода "db" требует полное перечисление всех
51 # помещаемых в бэкап баз и таблиц в переменную backup_tables_list
52 #-------------------
53
54 backup_db_list="/home/test/test /home/web/work_db /home/rt/rt3"
55 backup_tables_list="test rt3:Links"
56
57 #-------------------
58 # Directory to store SQL backup. You must have enought free disk space to store
59 # all data from you SQL server.
60 # Директория куда будет помещен бэкап данных с SQL сервера.
61 # Внимание !!! Должно быть достаточно свободного места для бэкапа всех
62 # выбранных БД.
63 #-------------------
64
65 backup_path="/usr/local/fsbackup/sys_backup"
66
67 #-------------------
68 # Full path of sqlite program.
69 # Путь к программе sqlite
70 #-------------------
71
72 backup_progdump_path="/usr/local/bin"
73
74 ############################################################################
75
76 if [ -n "$backup_progdump_path" ]; then
77 backup_progdump_path="$backup_progdump_path/"
78 fi
79
80 #-------------------------------------------------------------------------
81 # Полный бэкап для SQLite
82
83 if [ "_$backup_method" = "_full" ]; then
84 echo "Creating full backup of all SQLite databases."
85 for cur_db in $backup_db_list; do
86 cur_db_name=`basename $cur_db`
87 if [ -f "$cur_db" ]; then
88 ${backup_progdump_path}sqlite $cur_db .dump |gzip > $backup_path/$backup_name-$cur_db_name-sqlite.gz
89 else
90 echo "DB $cur_db not found"
91 fi
92 done
93 exit
94
95 fi
96
97 #-------------------------------------------------------------------------
98 # Бэкап указанных баз для SQLite
99 if [ "_$backup_method" = "_db" ]; then
100 echo "Creating full backup of $backup_tables_list SQLite databases."
101
102 for cur_db in $backup_db_list; do
103 cur_db_name=`basename $cur_db`
104 if [ -f "$cur_db" ]; then
105 echo "Proccessing $cur_db"
106 flag=0
107 for cur_acl in $backup_tables_list; do
108 if [ "_$cur_acl" = "_$cur_db_name" ]; then
109 flag=1
110 fi
111 done
112
113 if [ $flag -eq 1 ]; then
114 echo "Dumping $cur_db_name"
115 ${backup_progdump_path}sqlite $cur_db .dump |gzip > $backup_path/$backup_name-$cur_db_name-sqlite.gz
116 else
117 rm -f $backup_path/$backup_name-$cur_db_name-sqlite
118 for cur_db_table in `${backup_progdump_path}sqlite $cur_db .tables`; do
119 for cur_acl in $backup_tables_list; do
120 if [ "_$cur_acl" = "_$cur_db_name:$cur_db_table" ]; then
121 echo " Dumping $cur_db_name:$cur_db_table"
122 ${backup_progdump_path}sqlite $cur_db ".dump $cur_db_table" >> $backup_path/$backup_name-$cur_db_name-sqlite
123 fi
124 done
125 done
126 if [ -f "$backup_path/$backup_name-$cur_db_name-sqlite" ]; then
127 gzip -f $backup_path/$backup_name-$cur_db_name-sqlite
128 fi
129 fi
130 else
131 echo "DB $cur_db not found"
132 fi
133 done
134 exit
135
136 fi
137
138
139 #-------------------------------------------------------------------------
140 # Бэкап всех баз кроме указанных для Postgresql
141 if [ "_$backup_method" = "_notdb" ]; then
142 echo "Creating full backup of all SQLite databases except databases $backup_tables_list."
143
144 for cur_db in $backup_db_list; do
145 cur_db_name=`basename $cur_db`
146 if [ -f "$cur_db" ]; then
147 echo "Proccessing $cur_db"
148 flag=0
149 for cur_acl in $backup_tables_list; do
150 if [ "_$cur_acl" = "_$cur_db_name" ]; then
151 flag=1
152 fi
153 done
154
155 if [ $flag -eq 1 ]; then
156 echo "Skiping $cur_db_name"
157 else
158 rm -f $backup_path/$backup_name-$cur_db_name-sqlite
159 for cur_db_table in `${backup_progdump_path}sqlite $cur_db .tables`; do
160 flag=0
161 for cur_acl in $backup_tables_list; do
162 if [ "_$cur_acl" = "_$cur_db_name:$cur_db_table" ]; then
163 echo " Skiping $cur_db_name:$cur_db_table"
164 flag=1
165 fi
166 done
167
168 if [ $flag -eq 0 ]; then
169 ${backup_progdump_path}sqlite $cur_db ".dump $cur_db_table" >> $backup_path/$backup_name-$cur_db_name-sqlite
170 fi
171 done
172
173 if [ -f "$backup_path/$backup_name-$cur_db_name-sqlite" ]; then
174 gzip -f $backup_path/$backup_name-$cur_db_name-sqlite
175 fi
176 fi
177 else
178 echo "DB $cur_db not found"
179 fi
180 done
181 exit
182
183 fi
184
185 echo "Configuration error. Not valid parameters in backup_method or backup_sqltype."
186
187