summaryrefslogtreecommitdiff
path: root/hosts
diff options
context:
space:
mode:
Diffstat (limited to 'hosts')
-rwxr-xr-xhosts/vidhar/borg/copy.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/hosts/vidhar/borg/copy.py b/hosts/vidhar/borg/copy.py
index 38e719cf..d8d19a86 100755
--- a/hosts/vidhar/borg/copy.py
+++ b/hosts/vidhar/borg/copy.py
@@ -131,6 +131,12 @@ def copy_archive(src_repo_path, dst_repo_path, entry):
131 (chroot / bindMount).mkdir(parents=True,exist_ok=True) 131 (chroot / bindMount).mkdir(parents=True,exist_ok=True)
132 # print(*['mount', '--bind', pathlib.Path('/') / bindMount, chroot / bindMount], file=stderr) 132 # print(*['mount', '--bind', pathlib.Path('/') / bindMount, chroot / bindMount], file=stderr)
133 subprocess.run(['mount', '--bind', pathlib.Path('/') / bindMount, chroot / bindMount], check=True) 133 subprocess.run(['mount', '--bind', pathlib.Path('/') / bindMount, chroot / bindMount], check=True)
134 try:
135 os.unlink('/etc/fuse.conf')
136 except FileNotFoundError:
137 pass
138 with open('/etc/fuse.conf', 'w') as fuse_conf:
139 fuse_conf.write('user_allow_other\nmount_max = 1000\n')
134 os.chroot(chroot) 140 os.chroot(chroot)
135 os.chdir('/') 141 os.chdir('/')
136 dir = pathlib.Path('/borg') 142 dir = pathlib.Path('/borg')
@@ -150,12 +156,11 @@ def copy_archive(src_repo_path, dst_repo_path, entry):
150 else: 156 else:
151 print(f'{total_files} files, {naturalsize(total_size, binary=True)}', file=stderr) 157 print(f'{total_files} files, {naturalsize(total_size, binary=True)}', file=stderr)
152 # print(f'Mounting to {dir}', file=stderr) 158 # print(f'Mounting to {dir}', file=stderr)
153 with subprocess.Popen(['borg', 'mount', '--foreground', '--progress', '--lock-wait=600', f'{src_repo_path}::{entry["name"]}', dir], preexec_fn=lambda: as_borg()) as mount_proc: 159 with subprocess.Popen(['borg', 'mount', '-o', 'allow_other', '--foreground', '--progress', '--lock-wait=600', f'{src_repo_path}::{entry["name"]}', dir], preexec_fn=lambda: as_borg()) as mount_proc:
154 with Halo(text='Waiting for mount', **halo_args) as sp: 160 with Halo(text='Waiting for mount', **halo_args) as sp:
155 wait_start = datetime.now() 161 wait_start = datetime.now()
156 while True: 162 while True:
157 ret = subprocess.run(['mountpoint', '-q', dir], preexec_fn=lambda: as_borg()) 163 if os.path.ismount(dir):
158 if ret.returncode == 0:
159 break 164 break
160 elif datetime.now() - wait_start > timedelta(minutes=15): 165 elif datetime.now() - wait_start > timedelta(minutes=15):
161 ret.check_returncode() 166 ret.check_returncode()