-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackupdef.py
41 lines (31 loc) · 1.19 KB
/
backupdef.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import pickle
import os
from entries import FolderEntry
class BackupDef:
def __init__(self, folder: FolderEntry):
self.folder = folder
def __str__(self) -> str:
return str(self.folder)
@property
def fileSize(self) -> int:
return len(pickle.dumps(self, protocol=pickle.HIGHEST_PROTOCOL))
def saveToFile(self, path: str):
# Remove old backupdef file if it exists
try:
os.remove(path)
except OSError:
pass
# Save backupdef to file
with open(path, 'wb') as pkl_file:
pickle.dump(self, pkl_file, protocol=pickle.HIGHEST_PROTOCOL)
def loadFromFile(path: str = None) -> 'BackupDef':
with open(path, 'rb') as pkl_file:
return pickle.load(pkl_file)
def delta(self, older_def: 'BackupDef'):
"""
Computes the changes between this and an older BackupDef.
Returns a BackupDef containing only the changes.
"""
return BackupDef(self.folder.delta(older_def.folder))
def processDelta(self, older_def: 'BackupDef', source: str, destination: str, bar=None):
self.folder.processDelta(older_def.folder, source, destination, bar)