LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: waiting4you

[技术问题]怎样用tar压缩home目录下所有以.开头的文件和路径?

[复制链接]
发表于 2009-12-30 19:19:22 | 显示全部楼层
备份配置,我的习惯是这样的
在 $HOME 建一个目录,然后把配置分类放在里面
然后把包这个目录
ls -lh  > link.txt   做一个脚本来还原它

备份 /etc 的就做成脚本,把要备份的文件cp 到指定目录下

以下是还原link的脚本
  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. import sys,os,string
  4. from stat import *
  5. #===============================================
  6. #####  ls -Al|grep MultiConfigDir|grep ^l > link_files.txt
  7. #===============================================
  8. def MainFunc(IsTest):
  9.     InputFile = "link_files.txt"
  10.     TxtFileHandle = open(InputFile, 'r')
  11.     print 'Start Read File...\n'
  12.     try:
  13. #--------------------------------------------------------               
  14.         while True:
  15.             ReadStr = TxtFileHandle.readline()
  16.             if not ReadStr:
  17.                 print '\nEnd File....\n'
  18.                 break
  19.             ListStr = ReadStr.split()
  20.             #print ListStr
  21.             if (len(ListStr) == 0):
  22.                 continue
  23.             print ListStr[0]
  24.             if ListStr[0].startswith('#'):
  25.                 #print "startswith('#')"
  26.                 continue
  27.             if ListStr[0].startswith("l"):
  28.                 if (len(ListStr) == 10):
  29.                     #print "7 = %s  9 = %s" % (ListStr[7], ListStr[9])
  30.                     RetVal = ProcOneLine(ListStr[9], ListStr[7], IsTest)
  31.                     if (RetVal == False):
  32.                         break
  33. #--------------------------------------------------------               
  34.     #except:
  35.     finally:
  36.         TxtFileHandle.close()
  37. #=-----------------------------------------------------------------
  38. def ChkAndMkDir(DirNameStr):
  39.     if (not os.path.exists(DirNameStr)):   
  40.         os.system("mkdir -pv %s" % DirNameStr)
  41. def ChkIsExists(FileStr):
  42.     if (os.path.exists(FileStr)):
  43.         return True
  44.     else:
  45.         return False
  46. def ChkIsDir(DirStr):
  47.     StatMode = os.stat(DirStr)[ST_MODE]
  48.     if (S_ISDIR(StatMode)):
  49.         return True
  50.     else:
  51.         return False
  52.     #if (os.path.isfile(DirStr)):
  53.     #    return False
  54.     #else:
  55.     #    return True
  56. def ChkIsLink(LinkStr):
  57.     #StatMode = os.stat(LinkStr)[ST_MODE]
  58.     if (os.path.islink(LinkStr)):
  59.     #if (S_ISLNK(StatMode)):
  60.         return True
  61.     else:
  62.         return False
  63. #=-----------------------------------------------------------------
  64. def ProcOneLine(SrcStr, DestStr, IsTest):
  65.     if (not ChkIsExists(SrcStr)):
  66.         #print "Target Not Found!"
  67.         return True
  68.    
  69.     BackupConfDir = "BackupConfDir/"
  70.     #--------Clean Start----
  71.     if (ChkIsExists(DestStr)):
  72.         if (ChkIsLink(DestStr)):
  73.             
  74.             ReadLink = os.readlink(DestStr)
  75.             if (ReadLink == SrcStr):
  76.                 print "link = %s     Yes Euery" % ReadLink
  77.                 return True
  78.             else:
  79.                 print "link = %s     No Eqery" % ReadLink
  80.                 #return True
  81.             if (True == IsTest):
  82.                 print "os.unlink(%s)" % DestStr
  83.             else:
  84.                 print "os.unlink(%s)" % DestStr
  85.                 #if (os.unlink(DestStr)):
  86.                 if (os.system("unlink %s" % DestStr) == 0):
  87.                     print "unlink OK"
  88.                 else:
  89.                     print "unlink Fail"
  90.         else:
  91.             #-------Add user input
  92.             if (ChkIsDir(DestStr)):
  93.                 result = ask_YNQ("Delete ==== %s === Dir ?" % (DestStr))
  94.                 if (result == "quit"):
  95.                     return False
  96.                 if (result == "yes"):
  97.                     if (True == IsTest):
  98.                         print "os.rmdir(%s) " % DestStr
  99.                     else:
  100.                         ChkAndMkDir(BackupConfDir)
  101.                         os.system("cp %s %s -rf" % (DestStr, BackupConfDir))
  102.                         print "os.rmdir(%s) " % DestStr
  103.                         #if (os.rmdir(DestStr)):
  104.                         if (os.system("rm %s -rf" % DestStr) == 0):
  105.                             print "rmdir() OK"
  106.                         else:
  107.                             print "rmdir() Faile"
  108.                 else:
  109.                     return True
  110.             else:
  111.                 result = ask_YNQ("Delete ===  %s === File ?" % (DestStr))
  112.                 if (result == "quit"):
  113.                     return False
  114.                 if (result == "yes"):
  115.                     if (True == IsTest):
  116.                         print "os.remove(%s)" % DestStr
  117.                     else:
  118.                         ChkAndMkDir(BackupConfDir)
  119.                         os.system("cp %s %s -f" % (DestStr, BackupConfDir ))
  120.                         print "os.remove(%s)" % DestStr
  121.                         #if (os.remove(DestStr)):
  122.                         if (os.system("rm -f %s" % DestStr) == 0):
  123.                             print "os.remove OK"
  124.                         else:
  125.                             print "os.remove False"
  126.                 else:
  127.                     return True
  128.     else:
  129.         print "%s is Not Exists" % DestStr
  130.     #----Clean Over-----   
  131.     if (True == IsTest):
  132.         print "os.symlink(%s, %s) " % (SrcStr, DestStr)
  133.     else:
  134.         print "os.symlink(%s, %s) " % (SrcStr, DestStr)
  135.         #os.symlink(SrcStr, DestStr)
  136.         if (os.system("ln -sv %s %s" % (SrcStr, DestStr)) == 0):
  137.             print "ln -sv %s %s  OK" % (SrcStr, DestStr)
  138.         else:
  139.             print "ln -sv %s %s  faile" % (SrcStr, DestStr)
  140.     return True
  141. #=-----------------------------------------------------------------
  142. def ask_ok(prompt):
  143.     while True:
  144.         ok = raw_input(prompt)
  145.         if ok in ('y', 'ye', 'yes'):
  146.             return True
  147.         elif ok in ('n', 'no', 'nop', 'nope'):
  148.             return False
  149.         else:
  150.             print 'yes or no,please'
  151.         
  152. def ask_YNQ(prompt):
  153.     while True:
  154.         ok = raw_input(prompt)
  155.         if ok in ('y', 'ye', 'yes'):
  156.             return "yes"
  157.         elif ok in ('n', 'no', 'nop', 'nope'):
  158.             return "no"
  159.         elif ok in ('q', 'quit'):
  160.             return "quit"
  161.         else:
  162.             print 'yes or no or quit,please'
  163. #while 1:
  164. #    flag = ask_ok('are you really want to quit?')
  165. #    if flag == True:
  166. #        break
  167. #print 'out'
  168. #=-----------------------------------------------------------------
  169. if __name__ == "__main__":
  170.     IsTest = True
  171.     if (len(sys.argv) > 1):
  172.         if (sys.argv[1] in ('true', 'True')):
  173.             print "IsTest is False"
  174.             IsTest = False
  175.         else:
  176.             print "IsTest is True"
  177.     print "MainFunc Start"
  178.     MainFunc(IsTest)
  179.     print "MainFunc Over"
  180. #    SrcStr = "12341325"
  181. #   if (ask_ok("Delete %s Dir ?" % (SrcStr, ))):
  182. #       print "delete ..."
  183. #   else:
  184. #       print "Esc"
  185. #=-----------------------------------------------------------------
  186. #    os.path.exists(path)
  187. #    if   os.path.isfile("c:\windows"):   
  188. #     print   "file"   
  189. #     else:   
  190. #     print   "directory"   
  191. #   os.symlink(src, des)
  192. #   unlink( path)
  193. #   mkdir( path[, mode])
复制代码

之前还写了个自动压缩这个目录上传到邮箱的脚本
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-4 14:53:11 | 显示全部楼层
强,收藏了~~
我用的是tar的-g命令增量备份,还不错的说
回复 支持 反对

使用道具 举报

发表于 2010-1-5 00:40:33 | 显示全部楼层
开个natilus, 显示隐藏文件, 选中要备份的点文件, 右键, 压缩

嘿嘿, 开个玩笑... 不过也不是不行啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表