使用Python做備份程序

4.1 問題
編寫backup.py腳本,實現以下目標:

需要支持完全和增量備份
週一執行完全備份
其他時間執行增量備份
備份文件需要打包爲tar文件並使用gzip格式壓縮
4.2 方案
整體框架創建3個函數,分別實現完全備份、增量備份、文件加密3種功能:

1.首先導入time模塊,利用if進行判斷,如果當地時間是星期一,執行完全備份函數,否則執行增量備份函數,其中,通配符%a代表時間星期幾縮寫,上傳參數分別爲要備份的原目錄、目標目錄、md5字典存放目錄

2.調用完全備份函數:

a)首先獲取新文件名,將新文件名放入目標目錄下,目的是定義備份文件的絕對路徑,以寫壓縮方式打開目標目錄下新文件,將原目錄寫入新文件中,完成完全備份,其中os.path.join作用是將目錄名和文件的基名拼接成一個完整的路徑

b)瞭解os.walk()目錄遍歷器輸出文件結構,利用for循環將要備份原目錄中文件遍歷出來作爲字典鍵值對鍵, md5加密結果作爲字典鍵值對的值(此時將原目錄中文件作爲上傳參數調用文件加密函數),存入空字典中,字典中每個文件對應一個md5值,最後將字典寫入到md5字典存放目錄中

3.調用文件加密函數:將原目錄文件循環讀取逐一加密,返回加密結果

4.調用增量備份函數:

a)增量備份函數代碼與完全備份函數基本一致

b)區別在於,備份前要先以二進制讀方式打開md5字典存放目錄,讀取舊數據,判斷舊數據中鍵對應的加密值與新加密值是否相同,如果不相同,則將新增內容寫入到目標文件中(即只備份新數據)

5.注意:md5主要用於原文件與新文件判斷

4.3 步驟
實現此案例需要按照如下步驟進行。

步驟一:編寫腳本

[root@localhost day06]# vim backup.py
#!/usr/bin/env python3
import time
import os
import tarfile
import hashlib
import pickle
#用於判斷兩個文件是否相同,提取每個文件中的前4字節的內容然後輸出md5碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章