python程序:备份MS SQL数据库到压缩文件
2012-01-16 15:29
393 查看
参考了备份文件的python脚本。
os.system()执行命令的时候,如果这个命令本身带有空格,这个system()不能正常执行,所以改用subprocess.call()替换os.system()。
os.system()执行命令的时候,如果这个命令本身带有空格,这个system()不能正常执行,所以改用subprocess.call()替换os.system()。
# -*- coding: cp936 -*- # Filename: backup_ver1.3.py '''备份MS SQL 2005里的库 在Windows系统下调用sqlcmd命令把MS SQL里的库备份到文件, 再用tarfile模块打包压缩这些文件。 备份文件的文件名里包含当天的日期。 1.0 ''' import subprocess import os import time import sys import tarfile # 因为压缩目标可能是多个目录,所以先用tar打包,再调用gz/bzip2对tar包做压缩 def backup(target_dir, target_file, source, compression): '''执行备份操作 ''' # 连结备份文件的目录名和文件名 # 以下两个语句的效果相同 #dist_tar_full_path_filename = '%s%s.tar' % (target_dir, target_file) dist_tar_full_path_filename = target_dir + target_file + ".tar" sql_cmd = 'D:\\Program Files\\Microsoft SQL Server\\90\\Tools\\Binn\\sqlcmd.exe' # 如果目录不存在就建立 if not os.path.exists(target_dir): os.mkdir(target_dir) # 打开tar文件,用于追加数据库的备份文件 out = tarfile.TarFile.open(dist_tar_full_path_filename, 'a') for sourcedb in source: sql_bak_file = "%s%s_%s.bak" % (target_dir, sourcedb, time.strftime('%Y%m%d')) backup_db_cmd = "%s -S 192.168.10.2 -U sa -P abcdefg -d master -Q \"BACKUP DATABASE %s TO DISK = \'%s\'\"" % (sql_cmd, sourcedb, sql_bak_file) print backup_db_cmd # 调用sqlcmd命令备份数据库 # os.system()不能正常执行backup_db_cmd命令,因为它没有正常处理sql_cmd里的空格。 subprocess.call(backup_db_cmd) # 把数据库的备份文件追加到tar包里 if os.path.exists(sql_bak_file): out.add(sql_bak_file) print sql_bak_file, "备份成功" # 删除数据库的备份文件 os.remove(sql_bak_file) else: print sql_bak_file, "不存在" # tar打包过程结束 out.close( ) # 判断是否对tar包进行压缩 # print "compression = ", compression if compression: # 压缩后的文件名 dist_compress_file = dist_tar_full_path_filename + "." + compression # 对tar包进行压缩 out = tarfile.TarFile.open(dist_compress_file, 'w:'+compression) out.add(dist_tar_full_path_filename) out.close() # 判断压缩后的文件是否存在 if os.path.getsize(dist_compress_file) == 0: print('备份失败') else: print('备份成功') # 删除tar包 os.remove(dist_tar_full_path_filename) else: # 判断tar包是否存在 if os.path.getsize(dist_tar_full_path_filename) == 0: print('备份失败') else: print('备份成功') if __name__ == "__main__": # 获取程序参数 if len(sys.argv) < 2: print '没有指定参数' sys.exit() if sys.argv[1].startswith('--'): #抓取第1个参数--后面的字符串 option = sys.argv[1][2:] if option == 'version': print 'Version 1.0' sys.exit() elif option == 'help': print '''\ 在Windows系统下把MS SQL的库备份到文件,参数指定需要备份的库名。 备份文件的文件名里包含当天的日期。 备份到D:\backup\目录下。 --version : 输出版本号 --help : 输出帮助信息''' sys.exit() else: print '未知参数' sys.exit() # 定义备份文件存放目录和文件名 bak_dir = 'D:\\backup\\' bak_file = 'db_backup_' + time.strftime('%Y%m%d') backup(bak_dir, bak_file, sys.argv[1:], "gz")
相关文章推荐
- Python 提取文件,备份,压缩,并上传到远程FTP后,清空指定时间范围外的文件
- 在程序中压缩sql server2000的数据库备份文件的代码
- 在程序中压缩sql server2000的数据库备份文件的代码
- 第一个python程序:备份文件
- python入门-简单的文件备份程序
- python备份、删除过期压缩文件
- 一段备份文件的python程序(2)
- python小程序:备份文件
- (windows)python脚本:自动备份并压缩文件,同时删除过期文件
- python_实例: 文件备份程序
- 一段备份文件的python程序(1)
- python <2> 压缩备份文件
- 在windows环境下用python编写备份文件小程序
- 使用Python编写的文件备份程序
- 一段备份文件的python程序(3)
- (windows)python脚本:自动备份并压缩文件,同时删除过期文件
- 文件备份-Python3对文件夹下所有文件进行压缩处理
- python在windows中备份文件并压缩的解决办法
- 学python(10)-- 一个简易压缩文件小程序
- Python:统计特定文件夹中,特定文件代码行数的小程序