前面介绍了一个简单的脚本,用python来给mysql数据库做数据备份,但是只是给数据库做了个简单的备份,我这里准备再给他加点简单的功能,给备份压缩下,代码稍微和之前有点不同,来看下,代码中间又详细的注释,很容易理解:

 

   1:  #-*- coding: utf-8 -*-
   2:  #!/usr/bin/env python
   3:   
   4:  import time
   5:  import os
   6:  password='root'
   7:  #name=time.strftime("%Y-%m-%d %H:%M:%S")
   8:  BackupFileName=time.strftime("%Y-%m-%d-%H:%M:%S") + '.sql'
   9:  #此处经过修改,原来的第一个版本是上面注释掉的一行代码,这样写是为了下面压缩的时候方便点
  10:  destDir='/home/mysqlbak/'
  11:  #cmd='mysqldump -uroot -p' + password + ' --all-databases > ' + destDir + name + '.sql'
  12:  cmd='mysqldump -uroot -p' + password + ' --all-databases > ' + destDir + BackupFileName
  13:  print cmd
  14:  #上面一行是调试做用,可以注释掉,不影响最终结果
  15:  os.system(cmd)
  16:  print ("backup Mysql Successs...")
  17:   
  18:  print ("Beginning to compress file...")
  19:  import tarfile
  20:  ToTarPath='cd ' + destDir
  21:  #备份文件的路径,一开始由于脚本和备份文件不是在一个目录下,
  22:  #建议脚本和备份文件放在一个目录下,这个都是可以自己修改的
  23:  #os.system(ToTarPath)
  24:  #tar=tarfile.open(BackupFileName + '.tar','w')
  25:  #上面是吧数据库备份压缩成一个tar文件,但是文件大小没有改变
  26:  tar=tarfile.open(BackupFileName + '.tar.bzip2','w|bz2')
  27:  #上面是吧文件压缩成tar.bzip2格式的文件,这个压缩比比较厉害
  28:  os.system(ToTarPath)
  29:  DestTarFile=destDir + BackupFileName
  30:  print DestTarFile
  31:  tar.add(DestTarFile)
  32:  print ("Compress Success...")
  33:  tar.close()

 

        我本来是吧数据库的备份文件简单的额压缩成一个tar文件,但是发现压缩之后的体积居然比没压缩之前还要大,所以选择了tar.bzip2的格式来压缩,这样的压缩比是很明显的,这样才有利于我们在网络中的传输啊,这次就讲解到这里,大家感兴趣的话可以吧代码拷贝下来试验下