"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