source backup in python

在Linux下运行的源码备份的Python程序:

  1. #!/usr/bin/python
  2. # Filename : srcbackup.py
  3. # 2008-10-08 13:40 by daineng@taobao
  4. import os
  5. import sys
  6. import time
  7. BACK_FENDS = ['.py''.cpp''.c']
  8. BACK_FBGNS = ['makefile']
  9. EXCLUDE_DENDS = ['data']
  10. ################################################################################
  11. # Arguments
  12. if len(sys.argv) < 2 :
  13.     print >> sys.stderr, 'Usage: %s <backup_dir> [prefix]' % sys.argv[0]
  14.     sys.exit(1)
  15. prefix = ''
  16. if len(sys.argv) > 2 :
  17.     prefix = sys.argv[2]
  18. if prefix : prefix += '.'
  19. back_dir = sys.argv[1]
  20. if not os.path.isdir(back_dir) :
  21.     print >> sys.stderr, 'Error: [%s] is not a directory!' % back_dir
  22.     sys.exit(1)
  23. ################################################################################
  24. # Functions
  25. def check_fback(e) :
  26.     e = e.lower()
  27.     for s in BACK_FENDS :
  28.         if e.endswith(s) :
  29.             return True
  30.     for s in BACK_FBGNS :
  31.         if e.startswith(s) :
  32.             return True
  33.     return False
  34. def check_dback(e) :
  35.     e = e.lower()
  36.     for s in EXCLUDE_DENDS :
  37.         if e.endswith(s) :
  38.             return False
  39.     return True
  40. def wfunc(arg, dirname, fnames) :
  41.     #print >> sys.stderr, 'ENTER [%s]' % dirname
  42.     removes = []
  43.     for e in fnames :
  44.         if check_fback(e) :
  45.             path = os.path.join(dirname, e)
  46.             #print >> sys.stderr, 'Backup [%s]' % path
  47.             arg.append(path)
  48.         if not check_dback(e) :
  49.             removes.append(e)
  50.     for e in removes :
  51.         fnames.remove(e)
  52. ################################################################################
  53. # Backup
  54. backs = []
  55. os.path.walk(back_dir, wfunc, backs)
  56. if back_dir.endswith(os.sep) : back_dir = back_dir[:-len(os.sep)]
  57. backs.insert(0, 'tar czvf %s%s.%s.tgz' % (prefix, back_dir, time.strftime('%y%m%d.%H%M%S')))
  58. os.system(' '.join(backs))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值