mirror of
https://github.com/tuna/tunasync.git
synced 2025-04-21 04:42:46 +00:00
modify gc layout
This commit is contained in:
parent
d595af6755
commit
b4bf5a6b97
@ -13,7 +13,8 @@ max_retry = 2
|
|||||||
[btrfs]
|
[btrfs]
|
||||||
service_dir = "{mirror_root}/_current/{mirror_name}"
|
service_dir = "{mirror_root}/_current/{mirror_name}"
|
||||||
working_dir = "{mirror_root}/_working/{mirror_name}"
|
working_dir = "{mirror_root}/_working/{mirror_name}"
|
||||||
gc_dir = "{mirror_root}/_gc/{mirror_name}_{{timestamp}}"
|
gc_root = "{mirror_root}/_garbage/"
|
||||||
|
gc_dir = "{mirror_root}/_garbage/_gc_{mirror_name}_{{timestamp}}"
|
||||||
|
|
||||||
[[mirrors]]
|
[[mirrors]]
|
||||||
name = "archlinux"
|
name = "archlinux"
|
||||||
|
@ -3,12 +3,12 @@
|
|||||||
import re
|
import re
|
||||||
import sh
|
import sh
|
||||||
import os
|
import os
|
||||||
import ConfigParser
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import toml
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
parser = argparse.ArgumentParser(prog="tunasync_snapshot_gc")
|
parser = argparse.ArgumentParser(prog="tunasync_snapshot_gc")
|
||||||
parser.add_argument("--max-level", type=int, default=2, help="max walk level to find garbage snapshots")
|
parser.add_argument("--max-level", type=int, default=1, help="max walk level to find garbage snapshots")
|
||||||
parser.add_argument("--pattern", default=r"^_gc_\d+", help="pattern to match garbage snapshots")
|
parser.add_argument("--pattern", default=r"^_gc_\d+", help="pattern to match garbage snapshots")
|
||||||
parser.add_argument("-c", "--config", help="tunasync config file")
|
parser.add_argument("-c", "--config", help="tunasync config file")
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ if __name__ == "__main__":
|
|||||||
pattern = re.compile(args.pattern)
|
pattern = re.compile(args.pattern)
|
||||||
|
|
||||||
def walk(_dir, level=1):
|
def walk(_dir, level=1):
|
||||||
if level > 2:
|
if level > args.max_level:
|
||||||
return
|
return
|
||||||
|
|
||||||
for fname in os.listdir(_dir):
|
for fname in os.listdir(_dir):
|
||||||
@ -26,16 +26,18 @@ if __name__ == "__main__":
|
|||||||
if pattern.match(fname):
|
if pattern.match(fname):
|
||||||
print("GC: {}".format(abs_fname))
|
print("GC: {}".format(abs_fname))
|
||||||
try:
|
try:
|
||||||
ret = sh.btrfs("subvolume", "delete", abs_fname)
|
sh.btrfs("subvolume", "delete", abs_fname)
|
||||||
except sh.ErrorReturnCode, e:
|
except sh.ErrorReturnCode, e:
|
||||||
print("Error: {}".format(e.stderr))
|
print("Error: {}".format(e.stderr))
|
||||||
else:
|
else:
|
||||||
walk(abs_fname, level+1)
|
walk(abs_fname, level+1)
|
||||||
|
|
||||||
settings = ConfigParser.ConfigParser()
|
with open(args.config) as f:
|
||||||
settings.read(args.config)
|
settings = toml.loads(f.read())
|
||||||
mirror_root = settings.get("global", "mirror_root")
|
|
||||||
|
|
||||||
walk(mirror_root)
|
mirror_root = settings["global"]["mirror_root"]
|
||||||
|
gc_root = settings["btrfs"]["gc_root"].format(mirror_root=mirror_root)
|
||||||
|
|
||||||
|
walk(gc_root)
|
||||||
|
|
||||||
# vim: ts=4 sw=4 sts=4 expandtab
|
# vim: ts=4 sw=4 sts=4 expandtab
|
||||||
|
Loading…
x
Reference in New Issue
Block a user