skript_dlja_rezervirovanija_bazy_dannyx_na_python
Скрипт для резервирования базы данных на Python
import subprocess from datetime import datetime # 2008-03-30 # A little script to backup firebird databases # Author: Alisson Sales # path to gbak (firebird backup utility) FB_GBAK = ‘gbak’ # parameters for gbak (list) FB_PARAMS = [FB_GBAK, ‘-t’, ‘-user’, ‘SYSDBA’, ‘-pas’, ‘masterkey’] # full path to database’s directory FB_DB_DIR = ‘/var/lib/firebird/2.0/data/’ # a tuple of databases to backup FB_DATABASES = ( ‘DATABASE1.GDB’, ‘DATABASE2.GDB’ ) # full path to backup directory FB_BACKUP_DIR = ‘/home/alisson/backup/firebird/’; # path to data compressor (bzip2, zip, rar, gzip) COMPRESSOR = ‘bzip2′ # just a shortcut timestamp = lambda: datetime.now().strftime(’%Y-%m-%d %H:%M:%S’) for db in FB_DATABASES: # sufix to backup filename sufix = ‘.’ + datetime.now().strftime(’%Y%m%d_%H%M%S’) + ‘.fbk’ print “[%s] Starting backup of file %s” % (timestamp(), db) backup = [] backup.extend(FB_PARAMS) backup.append(FB_DB_DIR + db) backup.append(FB_BACKUP_DIR + db + sufix) p = subprocess.Popen(backup, stderr=subprocess.PIPE) p.wait() error = p.communicate()[1] if not error: print “[%s] Backup is done.” % timestamp() else: print “[%s] Error:\n%s” % (timestamp(), error) print “[%s] Starting compression of backup file %s” % (timestamp(), db + sufix) compress = [] compress.append(COMPRESSOR) compress.append(FB_BACKUP_DIR + db + sufix) p = subprocess.Popen(compress, stderr=subprocess.PIPE) # preventing too much use of CPU, compressing 1 file per time p.wait() error = p.communicate()[1] if not error: print “[%s] Compression is done.\n” % timestamp() else: print “[%s] Error:\n%s” % (timestamp(), error)
Источник
skript_dlja_rezervirovanija_bazy_dannyx_na_python.txt · Последнее изменение: 2009/04/15 09:50 (внешнее изменение)
Обсуждение
Следует иметь в виду, что питоновский subprocess на дефолтных установках примерно в два раза тормозит локальный бекап и на порядок бекап с удаленной машины (http://www.sql.ru/forum/actualthread.aspx?tid=887990). Так что приведенный выше скрипт без доработок следует использовать только для резервирования небольших (условно - меньше пары гигабайт) локальных баз данных.
Следует иметь в виду, что питоновский subprocess на дефолтных установках примерно в два раза тормозит локальный бекап и на порядок бекап с удаленной машины (http://www.sql.ru/forum/actualthread.aspx?tid=887990). Так что приведенный выше скрипт без доработок следует использовать только для резервирования небольших (условно - меньше пары гигабайт) локальных баз данных.
1