python檔案備份

2021-09-29 19:34:53 字數 2529 閱讀 1190

#!/root/kl/bin/python3

# author:kl

#對檔案周一進行完全備份,周二到週日進行增量備份

#根據md5校驗

import tarfile

import hashlib

import os

from time import strftime

import pickle

defcheck_md5

(fname)

:# 計算檔案md5值的函式,接收檔名,返回md5值

m = hashlib.md5(

)with

open

(fname,

'rb'

)as fobj:

while1:

data = fobj.read(

4096)if

not data:

break

m.update(data)

return m.hexdigest(

)def

full_backup

(src, dst, md5file)

:# 拼接出備份檔案的絕對路徑

fname = os.path.basename(src)

fname =

'%s_full_%s.tar.gz'

%(fname, strftime(

'%y-%m-%d'))

fname = os.path.join(dst, fname)

# 完全備份,就是把整個目錄壓縮

tar = tarfile.

open

(fname,

'w:gz'

) tar.add(src)

tar.close(

)# 計算每個檔案的md5值

md5dict =

for path, folers, files in os.walk(src)

:for

file

in files:

key = os.path.join(path,

file

) md5dict[key]

= check_md5(key)

# 將md5值存入檔案

with

open

(md5file,

'wb'

)as fobj:

pickle.dump(md5dict, fobj)

defincrese_backup

(src, dst, md5file)

:# 拼接出備份檔案的絕對路徑

fname = os.path.basename(src)

fname =

'%s_increse_%s.tar.gz'

%(fname, strftime(

'%y-%m-%d'))

fname = os.path.join(dst, fname)

# 計算每個檔案的md5值

md5dict =

for path, folders, files in os.walk(src)

:for

file

in files:

key = os.path.join(path,

file

) md5dict[key]

= check_md5(key)

# 取出前一天的md5值

with

open

(md5file,

'rb'

)as fobj:

old_md5 = pickle.load(fobj)

# 找出新增檔案和改動的檔案進行備份

tar = tarfile.

open

(fname,

'w:gz'

)for key in md5dict:

if md5dict[key]

!= old_md5.get(key)

: tar.add(key)

tar.close(

)# 更新md5檔案

with

open

(md5file,

'wb'

)as fobj:

pickle.dump(md5dict, fobj)

if __name__ ==

'__main__'

: src =

'/tmp/demo/security'

dst =

'/tmp/demo/backup'

md5file =

'/tmp/demo/backup/md5.data'

if strftime(

'%a')==

'mon'

: full_backup(src, dst, md5file)

else

: increse_backup(src, dst, md5file)

Python 備份檔案,以及備份大檔案

今天分享乙個很有用的小 就是關於檔案的備份 import os 匯入os模組 ori file name r e python mayday.輸入檔案路徑 if os.path.isfile ori file name 判斷該路徑的是否是檔案 擷取檔名,重組檔名 seek num ori file ...

python 備份檔案指令碼

usr bin env python filename backup ver1.pyimport os import time source r d python test r d python test1 target dir d python test2 remember to change t...

python實現檔案的備份

現實生活中很多檔案需要備份,這裡寫一下用python程式實現檔案的備份。提示輸 件 oldfilename input 請輸 要拷 的 件名字 table of contents 應 1 製作 件的備份 11 以讀的 式開啟 件 oldfile open oldfilename,rb 提取 件的字尾...