As far as I can tell rdify is finished!
This commit is contained in:
24
rdify
24
rdify
@ -17,8 +17,9 @@ class RamDiskItem():
|
|||||||
self.target = Path(target)
|
self.target = Path(target)
|
||||||
self.persist = Path(persist)
|
self.persist = Path(persist)
|
||||||
self.ramdisk = Path("/dev/shm/ramdisk")
|
self.ramdisk = Path("/dev/shm/ramdisk")
|
||||||
self.full_rd_path = ramdisk.joinpath(target.name)
|
self.full_rd_path = self.ramdisk.joinpath(self.target.name)
|
||||||
self.full_persist_path = persist.joinpath(target.name)
|
self.full_persist_path = self.persist.joinpath(self.target.name)
|
||||||
|
self.rsync_destination = self.full_persist_path if self.target.is_file() else self.persist
|
||||||
|
|
||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
@ -26,7 +27,7 @@ class RamDiskItem():
|
|||||||
self.ramdisk.mkdir(parents=True, exist_ok=True)
|
self.ramdisk.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
|
||||||
if target.is_file():
|
if self.target.is_file():
|
||||||
shutil.copy2(self.target, self.ramdisk)
|
shutil.copy2(self.target, self.ramdisk)
|
||||||
else:
|
else:
|
||||||
shutil.copytree(self.target, self.full_rd_path)
|
shutil.copytree(self.target, self.full_rd_path)
|
||||||
@ -37,21 +38,28 @@ class RamDiskItem():
|
|||||||
|
|
||||||
def sync(self):
|
def sync(self):
|
||||||
# TODO: actually look at output from this...
|
# TODO: actually look at output from this...
|
||||||
subprocess.run(["rsync", "-aP", "--delete", self.full_rd_path, self.full_persist_path])
|
subprocess.run(["rsync", "-aP", "--delete", self.full_rd_path, self.rsync_destination])
|
||||||
|
|
||||||
def loop_sync(self, delay):
|
def loop_sync(self, delay):
|
||||||
while True:
|
while True:
|
||||||
self.sync
|
try:
|
||||||
time.sleep(delay)
|
self.sync()
|
||||||
|
time.sleep(delay)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
eprint("Interrupt received, exiting...")
|
||||||
|
return
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
|
if not self.target.is_symlink():
|
||||||
|
eprint(f"Target: {self.target} isn't a symlink!")
|
||||||
|
return
|
||||||
self.sync()
|
self.sync()
|
||||||
|
self.target.unlink()
|
||||||
shutil.move(self.full_persist_path, self.target.parent)
|
shutil.move(self.full_persist_path, self.target.parent)
|
||||||
if self.full_rd_path.is_file():
|
if self.full_rd_path.is_file():
|
||||||
self.full_rd_path.unlink()
|
self.full_rd_path.unlink()
|
||||||
else:
|
else:
|
||||||
shutil.rmtree(self.full_rd_path)
|
shutil.rmtree(self.full_rd_path)
|
||||||
shutil.rmtree(self.full_persist_path)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@ -86,7 +94,7 @@ def main():
|
|||||||
elif args.loop_sync:
|
elif args.loop_sync:
|
||||||
rd_item.loop_sync(args.loop_sync)
|
rd_item.loop_sync(args.loop_sync)
|
||||||
elif args.cleanup:
|
elif args.cleanup:
|
||||||
rd_item.cleanup(args.target, args.perist)
|
rd_item.cleanup()
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user