Add 'snapcfg.py'
This commit is contained in:
parent
352619400c
commit
d1088dadae
|
@ -0,0 +1,37 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
#from os import scandir
|
||||
from hashlib import md5
|
||||
from pathlib import Path
|
||||
from datetime import datetime
|
||||
|
||||
def _copy(self, target):
|
||||
import shutil
|
||||
assert self.is_file()
|
||||
shutil.copy(str(self), str(target))
|
||||
|
||||
def _md5(self):
|
||||
from hashlib import md5
|
||||
assert self.is_file()
|
||||
return md5(self.read_bytes()).hexdigest()
|
||||
|
||||
Path.copy = _copy
|
||||
Path.md5 = _md5
|
||||
|
||||
snapdir = Path("/srv/snapdisk")
|
||||
cfgname = "snapraid.conf"
|
||||
cfgmaster = Path(f"/etc/{cfgname}")
|
||||
snapdisks = [x for x in snapdir.iterdir() if x.is_dir()]
|
||||
print(f"[{datetime.now()}] snapcfg: validating snapraid configuration backups")
|
||||
|
||||
for snapdisk in snapdisks:
|
||||
target = Path(snapdisk, cfgname)
|
||||
if (target.exists() and (target.md5() != cfgmaster.md5())):
|
||||
target.rename(target.with_suffix(".bak"))
|
||||
print(f"[{datetime.now()}] Moved {target} to {target.with_suffix('.bak')}")
|
||||
if not target.exists():
|
||||
cfgmaster.copy(target)
|
||||
if target.exists():
|
||||
print(f"[{datetime.now()}] Copied {cfgmaster} to {target}")
|
||||
else:
|
||||
print(f"[{datetime.now()}] Backup copy of {cfgmaster} to {target} failed!")
|
Loading…
Reference in New Issue