最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用Python寫腳本,實現完全備份和增量備份的示例

 更新時間:2018年04月29日 08:48:14   作者:huangyingleo  
下面小編就為大家分享一篇用Python寫腳本,實現完全備份和增量備份的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

需求:

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

思路及關鍵點:

建立一個文件,以字典方式記錄src的文件名以及文件對應的md5的值

完全備份的時候將文件名和md5值寫在一個文件里面。cPickle的知識點。

增量備份的時候比較文件名是否在key里面,沒有就要備份;有的話,這個文件的md5值是否改變,改變了就要備份

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

time.strftime()判斷周幾

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

tarfile對文件打包的使用

hashlib用于計算文件md5的值。注意不要一次打開一個文件,4k地打開,防止打開一個超大文件爆內存。

with file()可以打開一個文件之后不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()
~  

以上這篇用Python寫腳本,實現完全備份和增量備份的示例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python數據擬合與廣義線性回歸算法學習

    Python數據擬合與廣義線性回歸算法學習

    這篇文章主要為大家詳細介紹了Python數據擬合與廣義線性回歸算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Python 自動備份腳本的示例代碼

    Python 自動備份腳本的示例代碼

    這篇文章主要介紹了Python 自動備份腳本,本文結合代碼給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • 玩轉python selenium鼠標鍵盤操作(ActionChains)

    玩轉python selenium鼠標鍵盤操作(ActionChains)

    這篇文章主要為大家詳細介紹了python selenium鼠標鍵盤操作(ActionChains),教大家如何玩轉selenium鼠標鍵盤,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Python腳本實現監(jiān)聽服務器的思路代碼詳解

    Python腳本實現監(jiān)聽服務器的思路代碼詳解

    這篇文章主要介紹了Python腳本實現監(jiān)聽服務器的思路,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Python標準庫uuid模塊(生成唯一標識)詳解

    Python標準庫uuid模塊(生成唯一標識)詳解

    uuid通過Python標準庫的uuid模塊生成通用唯一ID(或“UUID”)的一種快速簡便的方法,下面這篇文章主要給大家介紹了關于Python標準庫uuid模塊(生成唯一標識)?的相關資料,需要的朋友可以參考下
    2022-05-05
  • Python 中的判斷語句,循環(huán)語句,函數

    Python 中的判斷語句,循環(huán)語句,函數

    這篇文章主要介紹了Python 中的判斷語句,循環(huán)語句,函數,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Python借助with語句實現代碼段只執(zhí)行有限次

    Python借助with語句實現代碼段只執(zhí)行有限次

    這篇文章主要介紹了Python借助with語句實現代碼段只執(zhí)行有限次,首先要定義一個能夠在with語句中使用的類實現enter和exit,下文詳細介紹需要的小伙伴可以參考一下
    2022-03-03
  • Python自動化辦公Excel模塊openpyxl原理及用法解析

    Python自動化辦公Excel模塊openpyxl原理及用法解析

    這篇文章主要介紹了Python自動化辦公Excel模塊openpyxl原理及用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • python中reader的next用法

    python中reader的next用法

    這篇文章主要介紹了python中reader的next用法,分別介紹了python3中的用法和python2中的用法,具體實例代碼大家參考下本文
    2018-07-07
  • Python中的單例模式與反射機制詳解

    Python中的單例模式與反射機制詳解

    這篇文章主要為大家介紹了Python中的單例模式與反射機制,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11

最新評論

龙江县| 荔波县| 巴马| 宝清县| 得荣县| 疏附县| 天津市| 孝义市| 永济市| 桦南县| 牡丹江市| 元谋县| 大同县| 天津市| 临夏县| 宾川县| 德昌县| 安丘市| 溆浦县| 嘉定区| 东光县| 根河市| 马龙县| 昌邑市| 保亭| 肇源县| 西吉县| 凤翔县| 正宁县| 永平县| 永丰县| 申扎县| 龙门县| 林西县| 确山县| 嘉义市| 林芝县| 化德县| 神农架林区| 西乌珠穆沁旗| 宜兰县|