Add logging code and a few extra command-line flags
This commit is contained in:
parent
f1f773bf95
commit
ce4a5e84e0
50
bin/backup
50
bin/backup
@ -10,7 +10,7 @@ import logging
|
|||||||
import os.path
|
import os.path
|
||||||
import rbackup.rsync as rsync
|
import rbackup.rsync as rsync
|
||||||
|
|
||||||
from rbackup.hierarchy import Hierarchy
|
from rbackup.hierarchy import Repository, Snapshot
|
||||||
|
|
||||||
# ========== Constants ==========
|
# ========== Constants ==========
|
||||||
RSYNC_DEFAULT_OPTS = [
|
RSYNC_DEFAULT_OPTS = [
|
||||||
@ -18,15 +18,44 @@ RSYNC_DEFAULT_OPTS = [
|
|||||||
"--hard-links",
|
"--hard-links",
|
||||||
"--prune-dirs",
|
"--prune-dirs",
|
||||||
"--backup",
|
"--backup",
|
||||||
|
"--xattrs",
|
||||||
"--ignore-missing-args",
|
"--ignore-missing-args",
|
||||||
]
|
]
|
||||||
EXTRA_RSYNC_OPTS = {"dry_run": "--dry-run"}
|
EXTRA_RSYNC_OPTS = {
|
||||||
|
"dry_run": "--dry-run",
|
||||||
|
"delete": "--delete-after",
|
||||||
|
"checksum": "--checksum",
|
||||||
|
"update": "--update",
|
||||||
|
}
|
||||||
|
|
||||||
# ========== Logging Setup ==========
|
# ========== Logging Setup ==========
|
||||||
|
console_formatter = logging.Formatter(LOGFORMAT)
|
||||||
|
syslog = logging.getLogger("packaging_scripts")
|
||||||
|
syslog.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
stdout_handler = logging.StreamHandler(sys.stdout)
|
||||||
|
stdout_handler.setLevel(logging.INFO)
|
||||||
|
stdout_handler.setFormatter(console_formatter)
|
||||||
|
stdout_handler.addFilter(lambda record: record.levelno <= logging.INFO)
|
||||||
|
|
||||||
|
stderr_handler = logging.StreamHandler(sys.stderr)
|
||||||
|
stderr_handler.setLevel(logging.WARNING)
|
||||||
|
stderr_handler.setFormatter(console_formatter)
|
||||||
|
|
||||||
|
syslog.addHandler(stdout_handler)
|
||||||
|
syslog.addHandler(stderr_handler)
|
||||||
|
|
||||||
# ========== Main Script ==========
|
# ========== Main Script ==========
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument(
|
||||||
|
"-c",
|
||||||
|
"--use-checksums",
|
||||||
|
action="store_const",
|
||||||
|
dest="extra_rsync_opts",
|
||||||
|
const=EXTRA_RSYNC_OPTS["checksum"],
|
||||||
|
help="use rsync's checksumming feature to look for changed files"
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-d",
|
"-d",
|
||||||
"--dry-run",
|
"--dry-run",
|
||||||
@ -35,15 +64,26 @@ if __name__ == "__main__":
|
|||||||
const=EXTRA_RSYNC_OPTS["dry_run"],
|
const=EXTRA_RSYNC_OPTS["dry_run"],
|
||||||
help="pass --dry-run to rsync",
|
help="pass --dry-run to rsync",
|
||||||
)
|
)
|
||||||
parser.add_argument("dest", help="destination directory", metavar="destination")
|
parser.add_argument(
|
||||||
|
"-v", "--verbose", action="store_true", help="increase script verbosity"
|
||||||
|
)
|
||||||
|
parser.add_argument("operation", help="the operation to perform", metavar="op")
|
||||||
|
parser.add_argument("repository", help="repository to back up to", metavar="repo")
|
||||||
|
|
||||||
args = parser.parser_args()
|
args = parser.parser_args()
|
||||||
|
repo = Repository(args.repository)
|
||||||
|
|
||||||
hier = Hierarchy(args.dest)
|
|
||||||
link_dest = hier.prev_snapshot
|
link_dest = hier.prev_snapshot
|
||||||
|
|
||||||
|
if args.verbose:
|
||||||
|
stdout_handler.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
# Handle empty repository
|
||||||
|
|
||||||
|
# else handle regular repository
|
||||||
|
|
||||||
# Backup to hier.curr_snapshot
|
# Backup to hier.curr_snapshot
|
||||||
|
|
||||||
# Relink 'prev' to point to current snapshot
|
# Relink 'prev' to point to latest snapshot
|
||||||
os.remove(hier.prev_snapshot_link)
|
os.remove(hier.prev_snapshot_link)
|
||||||
os.symlink(curr_snapshot, hier.prev_snapshot_link, target_is_directory=True)
|
os.symlink(curr_snapshot, hier.prev_snapshot_link, target_is_directory=True)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user