python 使用tar备份文件,目录,排除文件


#!/usr/bin/python

# -*- coding: utf-8 -*-

import time,os,sys

#获取输出需要备份的文件或者目录

source_file = sys.argv[1]

#通过os.path.isfile(source_file)函数来判断需要备份的是文件或目录

state=os.path.isfile(source_file)

print state

#如果是文件则执行以下代码

if state == True:

#获取备份文件

back_file = source_file.split(‘/‘)[-1]

#定义备份目录

back_dir=‘/root/backup/back_dir/‘

#定义压缩后备份文件名

file_name="%s.tar.gz" %(back_file)

#定义备份后的文件名存放的路径以及压缩后的文件名,方便在tar引用变量

back_to_file="%s%s"%(back_dir,file_name)

#将上面定义的备份路径后的文件名做引用tar zxvf /root/backup/back_dir/file.tar.gz 需要备份的文件

cmd = "tar zcvf %s %s"%(back_to_file,back_file)

#通过os.system()这个函数去调用shell命令

os.system(cmd)

#通过判断位置参数1是否为--exclude,tar zcf /root/backup/back_dir/file.tar.gz --exclude 文件 目录

if source_file == "--exclude":

#获取需要备份的目录名

source_file = sys.argv[3]

#获取需要排除的文件名

exclude_file = sys.argv[2]

#这里使用split(‘/‘)以/分隔符对目录路径进行分割,取1获得需要备份的目录名

back_file = source_file.split(‘/‘)[1]

file_name="%s.tar.gz" %(back_file)

back_dir=‘/root/backup/back_dir/‘

back_to_file="%s%s"%(back_dir,file_name)

back_to_file="%s%s"%(back_dir,file_name)

cmd = "tar zcvf %s --exclude %s %s"%(back_to_file,exclude_file,source_file)

os.system(cmd)

print cmd

#否则执行以下代码块,备份目录的方法

else:

back_file = source_file.split(‘/‘)[1]

file_name="%s.tar.gz" %(back_file)

back_dir=‘/root/backup/back_dir/‘

back_to_file="%s%s"%(back_dir,file_name)

cmd = "tar zcvf %s %s"%(back_to_file,source_file)

os.system(cmd)

print source_file

print cmd

时间: 2024-08-30 01:50:54

python 使用tar备份文件,目录,排除文件的相关文章

tar打包时排除文件

如果 /opt/apache/目录下有 a b c d  这几个目录,现在要将 a b目录tar打包,不打包c d目录 命令如下,当前在opt目录下: opt> tar -zcvf apache.tar.gz --exclude=c --exclude=d apache 或 opt> tar -zcvf test.tar.gz --exclude=/apache/c --exclude=apache/d apache 注意: 要打包的目录要放在最后面的! tar打包时排除文件

Python shutil模块(目录和文件操作)

import shutil #导入shutil模块 copyfileobj方法 将类文件对象fsrc的内容复制到类文件对象fdst shutil.copyfileobj(fsrc, fdst[, length]) 我一般的用法: shutil.copyfileobj(open('file','r'),open('file','w')) 注:如果fsrc对象的当前文件位置不为0,那么将只复制从当前文件位置到文件末尾的内容 copyfile方法 将名为src的文件的内容复制到名为dst的文件中,并返

目录下文件递归查找

python 使用yield实现目录下文件的递归查找(windows & linux通用) 转载自:https://www.cnblogs.com/weiok/p/4872119.html import os import fnmatch def iterfindfiles(path, fnexp): for root, dirs, files in os.walk(path): for filename in fnmatch.filter(files, fnexp): yield os.pat

Windows下python的tar.gz文件安装

windows下下载了django,PIL,web.py发现都是tar.gz格式的文件,网上查找也非常系统的方法,总结一下其他大神的方法,归纳于此. 首先下载tar.gz文件,比如web.py,下载后是一个tar.gz文件,用好压或其他解压软件解压,你会看到目录里有一个setup.py文件,这时,在地址栏输入%comspec%,这样会出现该目录下的提示符,再写Python.exe setup.py install,回车即可.(前提,环境变量已设置,否则无法使用)

python 读取一个目录下的所有目录和文件

觉着没事,应该学点东西.找到以前看过的python,试着做了个读取文件的程序.不管效果怎么,总算成功了. #!/usr/bin/python # -*- coding:utf8 -*- import os allFileNum = 0 def printPath(level, path): global allFileNum ''''' 打印一个目录下的所有文件夹和文件 ''' # 所有文件夹,第一个字段是次目录的级别 dirList = [] # 所有文件 fileList = [] # 返回

Linux tar压缩命令 排除某个目录 (根据man tar 总结)

一般直接用tar命令打包很简单,直接使用 tar -zcvf test.tar.gz test 即可. 在很多时候,我们要对某一个目录打包,而这个目录下有几十个子目录和子文件,我们需要在打包的时候排除其中1.2个目录或文件. 这时候我们在用tar命令打包的时候,增加参数 --exclude 就能达到目的. 例如: 我们以tomcat 为例,打包的时候我们要排除 tomcat/logs 目录,命令如下: tar -zcvf tomcat.tar.gz --exclude=tomcat/logs t

python之OS模块(对文件or目录操作)

OS模块 os,语义为操作系统,包含普遍的操作系统功能,与具体的平台无关.python编程时,处理文件和目录这些操作,就比如说:显示当前目录下所有文件/删除某个文件/获取文件大小-- os模块不受平台限制,也就是说:当我们要在linux中显示当前命令时就要用到pwd命令,而Windows中cmd命令行下就要用到这个,例如:这时候我们使用python中os模块的os.path.abspath(name)功能,甭管是linux或者Windows都可以获取当前的绝对路径. 常见函数列表 os.name

用python查找在指定目录下特定文件夹下的指定文件

本代码是在python2.*上边所写. 功能:在指定目录下查找特定文件夹下的特定文件. 实例:查找在packages目录下文件夹名为values下的strings.xml文件 #!/usr/bin/env python import os def walk_dir(path): filter_file_name = 'strings.xml' for root, dirs, files in os.walk(path): for dir_item in dirs: if dir_item ==

Linux tar (打包.压缩.解压缩)命令说明 | tar如何解压文件到指定的目录?

打包举例:将 /usr/local/src/zlib-1.2.5目录下的文件打包成 zlib-1.2.5.tar.gz cd /usr/local/src tar -czvf ./zlib-1.2.5.tar.gz ./zlib-1.2.5/* # 压缩到制定目录下(如:/root/2/ ) tar -czvf /root/2/zlib-1.2.5.tar.gz ./zlib-1.2.5/* #压缩 tar  -czvf   ***.tar.gz tar  -cjvf   ***.tar.bz2