内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

怎么用Python寫(xiě)腳本實(shí)現(xiàn)完全備份和增量備份-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)怎么用Python寫(xiě)腳本實(shí)現(xiàn)完全備份和增量備份的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

崖州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!python有哪些常用庫(kù)

python常用的庫(kù):1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。

需求:

在/root/backup下面有兩個(gè)文件夾dst和src。要求在周一的時(shí)候進(jìn)行完全備份,其余日子進(jìn)行增量備份。從src備份到dst。

思路及關(guān)鍵點(diǎn):

建立一個(gè)文件,以字典方式記錄src的文件名以及文件對(duì)應(yīng)的md5的值

完全備份的時(shí)候?qū)⑽募蚼d5值寫(xiě)在一個(gè)文件里面。cPickle的知識(shí)點(diǎn)。

增量備份的時(shí)候比較文件名是否在key里面,沒(méi)有就要備份;有的話,這個(gè)文件的md5值是否改變,改變了就要備份

os.path.join()拼接路徑,os.listdir(),os.chdir()

time.strftime()判斷周幾

cPickle,可以無(wú)損記錄所有Python的變量類型。文件操作。

tarfile對(duì)文件打包的使用

hashlib用于計(jì)算文件md5的值。注意不要一次打開(kāi)一個(gè)文件,4k地打開(kāi),防止打開(kāi)一個(gè)超大文件爆內(nèi)存。

with file()可以打開(kāi)一個(gè)文件之后不f.close()

#!/usr/bin/env python
import time
import os
import cPickle as p
import tarfile
import hashlib
baseDir = '/root/backup'
srcDir = 'src'
dstDir = 'dst'
fullName = "full_%s_%s.tar.gz" % (srcDir, time.strftime('%Y%m%d'))
incrName = "incr_%s_%s.tar.gz" % (srcDir, time.strftime('%Y%m%d'))
md5file = 'md5.data'
def md5sum(fname):
 m = hashlib.md5()
 with file(fname) as f:
  while True:
   data = f.read(4096)
   if len(data) == 0:
    break
   m.update(data)
 return m.hexdigest()
def fullBackup():
 md5Dict = {}
 fileList = os.listdir(os.path.join(baseDir,srcDir))
 for eachFile in fileList:
  md5Dict[eachFile] = md5sum(os.path.join(baseDir,srcDir,eachFile))
 with file(os.path.join(baseDir,dstDir,md5file),'w') as f:
  p.dump(md5Dict,f)
 tar = tarfile.open(os.path.join(baseDir,dstDir,fullName),'w:gz')
 os.chdir(baseDir)
 tar.add(srcDir)
 tar.close()
def incrBackup():
 newmd5 = {}
 fileList = os.listdir(os.path.join(baseDir,srcDir))
 for eachFile in fileList:
  newmd5[eachFile] = md5sum(os.path.join(baseDir,srcDir,eachFile))
 with file(os.path.join(baseDir,dstDir,md5file)) as f:
  storedmd5 = p.load(f)
 tar = tarfile.open(os.path.join(baseDir,dstDir,incrName),'w:gz')
 os.chdir(baseDir)
 for eachKey in newmd5:
  if (eachKey not in storedmd5) or (newmd5[eachKey] != storedmd5[eachKey]):
   tar.add(os.path.join(srcDir,eachKey))
 tar.close()
 with file(os.path.join(baseDir,dstDir,md5file),'w') as f:
  p.dump(newmd5,f)
def main():
 if time.strftime('%a') == 'Mon':
  fullBackup()
 else:
  incrBackup()
if __name__ == '__main__':
 main()
~

感謝各位的閱讀!關(guān)于“怎么用Python寫(xiě)腳本實(shí)現(xiàn)完全備份和增量備份”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

本文題目:怎么用Python寫(xiě)腳本實(shí)現(xiàn)完全備份和增量備份-創(chuàng)新互聯(lián)
分享地址:http://www.rwnh.cn/article44/dopdee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作網(wǎng)站設(shè)計(jì)公司、網(wǎng)頁(yè)設(shè)計(jì)公司、云服務(wù)器營(yíng)銷型網(wǎng)站建設(shè)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
璧山县| 乡城县| 武汉市| 荆门市| 福清市| 邹平县| 金平| 遂溪县| 鄂伦春自治旗| 伊金霍洛旗| 建平县| 日土县| 宣汉县| 渝中区| 苏州市| 丰都县| 错那县| 莆田市| 铜鼓县| 赤城县| 改则县| 花莲市| 广饶县| 邯郸市| 山丹县| 抚顺市| 平乡县| 轮台县| 隆子县| 武功县| 桂阳县| 杭锦旗| 西丰县| 宽城| 鲁甸县| 福贡县| 砚山县| 来宾市| 炎陵县| 江门市| 延安市|