diff options
Diffstat (limited to 'hosts/vidhar/borg')
| -rwxr-xr-x | hosts/vidhar/borg/copy.py | 11 |
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() |
