diff --git a/main.py b/main.py index 894ecf4..5725ab0 100755 --- a/main.py +++ b/main.py @@ -34,6 +34,10 @@ def main(): action="store_true", default=False, help="Do not do create backup") + parser.add_argument("--external-rsync", + action="store_true", + default=False, + help="Use external rsync for copying") parser.add_argument("sources", nargs="+", metavar="SOURCE", @@ -55,7 +59,12 @@ def main(): _lg.error("Source directory %s does not exist", src_dir) return 1 - initiate_backup(args.sources, backup_dir_abs, dry_run=args.dry_run) + initiate_backup( + args.sources, + backup_dir_abs, + dry_run=args.dry_run, + external_rsync=args.external_rsync, + ) if __name__ == "__main__": diff --git a/spqr/curateipsum/backup.py b/spqr/curateipsum/backup.py index 15c11a3..6f381a0 100644 --- a/spqr/curateipsum/backup.py +++ b/spqr/curateipsum/backup.py @@ -43,7 +43,10 @@ def _get_latest_backup(backup_dir: pathlib.Path) -> Optional[pathlib.Path]: return None -def initiate_backup(sources, backup_dir: pathlib.Path, dry_run=False): +def initiate_backup(sources, + backup_dir: pathlib.Path, + dry_run: bool = False, + external_rsync: bool = False): """ Main backup function """ start_time = time.time() @@ -71,11 +74,13 @@ def initiate_backup(sources, backup_dir: pathlib.Path, dry_run=False): shutil.rmtree(cur_backup, ignore_errors=True) return + rsync_func = fs.rsync_ext if external_rsync else fs.rsync + for src in sources: src_abs = pathlib.Path(os.path.abspath(src)) dst_abs = cur_backup / src_abs.name _lg.info("Backing up directory %s to %s backup", src_abs, cur_backup.name) - fs.rsync_ext(src_abs, dst_abs, dry_run=dry_run) + rsync_func(src_abs, dst_abs, dry_run=dry_run) if dry_run: _lg.info("Dry-run, removing created backup: %s", cur_backup.name) diff --git a/spqr/curateipsum/fs.py b/spqr/curateipsum/fs.py index b7406bd..a69d969 100644 --- a/spqr/curateipsum/fs.py +++ b/spqr/curateipsum/fs.py @@ -13,6 +13,20 @@ from typing import Iterable _lg = logging.getLogger(__name__) + +# *deleting will_be_deleted +# >f.st.... .gitignore +# >f+++++++ LICENSE +# >f+++++++ LICENSE-sym +# >f+++++++ README.md +# >f+++++++ find_stale_torrents.py +# >f+++++++ rootfile +# cL+++++++ test -> rootfile +# cd+++++++ folder/ +# >f+++++++ folder/in-folder +# cd+++++++ java-alg/ + + def rsync_ext(src, dst, dry_run=False): """Call external rsync command""" rsync_args = ["rsync"] @@ -308,4 +322,4 @@ def hardlink_dir(src_dir, dst_dir) -> bool: _lg.debug(f"Creating directory: {dst_abs}") os.mkdir(dst_abs) - return _hardlink_dir_ext(src_abs, dst_abs) + return _recursive_hardlink(src_abs, dst_abs)