(windows)python脚本:自动备份并压缩文件,同时删除过期文件

时间:2022-11-30 07:57:38

(本文由Tengda huang 发表于 http://blog.csdn.net/cogent2001 ,该文章所提到的程序为原创,使用者可以任意引用,修改该程序。转载请注明出处,谢谢!) 

       近来忙东忙西,有些重复性的事务就懒得做,比如文件备份。不过不做也不行。这两天闲下来,现学现用python写了这个文件自动备份的脚本。

        有以下2个亮点:

1.可以放在计划任务中定期执行,所需备份的内容由dsvr1list.txt文件提供,备份文件自动备份到按当前日期生成的目录中。

2.程序刚开始就执行清除1个月以前的所有备份目录,这个功能对于只有特定大小的备份设备及其有用,从此文件备份完全不用人工干涉。

      代码很简单,该注释的我都注释了。需要注意的是,我安装的的是python 2.5.1,是否对其他版本的python兼容有待考查;压缩格式我选用7-zip,其中7z.exe是它的命令行程序,该软件为开源软件,并且压缩比应该算是同类软件中最高的。(经过我的测试,备份文件服务器上2.4G左右的东西,压缩后只剩不到900M)如果第一次安装python环境和7-zip软件,请为它们设置path变量,因为我的脚本里面假定它们可以在任何目录下执行。

(windows)python脚本:自动备份并压缩文件,同时删除过期文件# !/usr/bin/python
(windows)python脚本:自动备份并压缩文件,同时删除过期文件#
 Filename: bDatasvr1.py
(windows)python脚本:自动备份并压缩文件,同时删除过期文件#
 This program is for files backup only
(windows)python脚本:自动备份并压缩文件,同时删除过期文件#
 It also needs 7-zip as the compress tool.
(windows)python脚本:自动备份并压缩文件,同时删除过期文件#
 Tengda huang, Dec 17th, 2007
(windows)python脚本:自动备份并压缩文件,同时删除过期文件#
 ver 1.0
(windows)python脚本:自动备份并压缩文件,同时删除过期文件

(windows)python脚本:自动备份并压缩文件,同时删除过期文件
import  os
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
import  time
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
import  distutils.dir_util
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
import  datetime
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
#  connecting to the remote computer
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
link_command  =  r " net use k://10.10.10.1/mysvr1 mypassword /user:backupUser "
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
print   ' Connecting to remote computer '
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
if  os.system(link_command)  ==  0:
(windows)python脚本:自动备份并压缩文件,同时删除过期文件    
print   ' Successful connecting to drive k ! '
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
else :
(windows)python脚本:自动备份并压缩文件,同时删除过期文件    
print   ' Drive k already linked or link failed! '  
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
#  delete old directories and files if the dir name created by time is older than 30 days
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
for  root, dirs, files  in  os.walk( ' k: ' ):
(windows)python脚本:自动备份并压缩文件,同时删除过期文件    
for  name  in  dirs:
(windows)python脚本:自动备份并压缩文件,同时删除过期文件        (y1, m1, d1) 
=  (int(x)  for  x  in  name.split( ' - ' ))
(windows)python脚本:自动备份并压缩文件,同时删除过期文件        date1 
=  datetime.date(y1, m1, d1)
(windows)python脚本:自动备份并压缩文件,同时删除过期文件        datenow 
=  time.strftime( ' %Y%m%d ' )
(windows)python脚本:自动备份并压缩文件,同时删除过期文件        y2 
=  int(datenow[: 4 ])
(windows)python脚本:自动备份并压缩文件,同时删除过期文件        m2 
=  int(datenow[ 4 : 6 ])
(windows)python脚本:自动备份并压缩文件,同时删除过期文件        d2 
=  int(datenow[ 6 :])
(windows)python脚本:自动备份并压缩文件,同时删除过期文件        date2 
=  datetime.date(y2, m2, d2)
(windows)python脚本:自动备份并压缩文件,同时删除过期文件        
if  (date2  -  date1).days  >   30 :
(windows)python脚本:自动备份并压缩文件,同时删除过期文件            
print   ' Expired dir! Deleting directory...  ' , name
(windows)python脚本:自动备份并压缩文件,同时删除过期文件            distutils.dir_util.remove_tree(os.path.join(
" k: " ,name))
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
print   ' Old directory deleting done! '
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
print   ' Starting to create backup files! '
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
#  1. The files and directories to be backed up are specified in the list.
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
source  =  r ' @dsvr1list.txt '
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
#  2. The backup must be stored in a main directory, 
(windows)python脚本:自动备份并压缩文件,同时删除过期文件#
    that is  //10.10.10.1mysvr1
(windows)python脚本:自动备份并压缩文件,同时删除过期文件#
    which mapped as drive k:
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
target_dir  =   ' k: '   
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
#  3. The files are compressed and backed up into a 7-zip file type.
(windows)python脚本:自动备份并压缩文件,同时删除过期文件#
    The subdirectories are named by the current day time.
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
today  =  target_dir  +  time.strftime( ' %Y-%m-%d ' )
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
#  The current time is the name of the zip archive
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
now  =  time.strftime( ' %H%M%S ' )
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
#  Create the subdirectory if it isn't already there
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
if   not  os.path.exists(today):
(windows)python脚本:自动备份并压缩文件,同时删除过期文件    os.mkdir(today) 
#  make directory
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
     print   ' Successfully created directory ' , today
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
#  The name of the zip file
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
target  =  today  +  os.sep  +   ' share '   +  now  +   ' .7z '
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
#  5. Use the 7z command to compress and put the files in a 7z archive
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
zip_command  =   " 7z a -t7z %s %s "   %  (target, source)
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
#  Runing the backup
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
if  os.system(zip_command)  ==  0:
(windows)python脚本:自动备份并压缩文件,同时删除过期文件    
print   ' Successful backup to ' , target
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
else :
(windows)python脚本:自动备份并压缩文件,同时删除过期文件    
print   ' Backup FAILED '  
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
#  Disconnect from the remote computer 
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
unlink_command  =  r " net use k: /delete "
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
if  os.system(unlink_command)  ==  0:
(windows)python脚本:自动备份并压缩文件,同时删除过期文件    
print   ' Successfully detach from drive k!  '
(windows)python脚本:自动备份并压缩文件,同时删除过期文件    
print   ' All job done! '
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
else :
(windows)python脚本:自动备份并压缩文件,同时删除过期文件    
print   ' Backup FAILED '  
(windows)python脚本:自动备份并压缩文件,同时删除过期文件
(windows)python脚本:自动备份并压缩文件,同时删除过期文件