From 0d755f8783ff2a64e11412c5426e7a036117c624 Mon Sep 17 00:00:00 2001 From: Edward Delaporte Date: Sat, 21 Feb 2026 17:56:13 -0600 Subject: [PATCH] Add backup commands before upgrade --- invoke/upgrade-linux/tasks.py | 50 +++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 invoke/upgrade-linux/tasks.py diff --git a/invoke/upgrade-linux/tasks.py b/invoke/upgrade-linux/tasks.py new file mode 100644 index 0000000..c079ba8 --- /dev/null +++ b/invoke/upgrade-linux/tasks.py @@ -0,0 +1,50 @@ +from invoke import task + +from datetime import datetime as dt +import os + +HOME = os.path.expanduser('~') +TODAY = dt.now().strftime('%Y.%m.%d') +DOTFILES=f'{HOME}/dotfiles' + + +@task +def backup_package_list(c): + c.run(f'dpkg --get-selections > {HOME}/backup/packages.{TODAY}.dpkg') + +@task +def show_disk_space(c): + print("Do we have at least 5G of free space?") + c.run('df -h /') + +@task +def backup_sources(c): + c.run(f'cp /etc/apt/sources.list {HOME}/backup/sources.list.{TODAY}.backup') + + + +@task +def backup_etc(c): + print("Use --prompt-for-sudo") + c.run(f'sudo tar -czf {HOME}/backup/etc.backup.{TODAY}.tar.gz /etc') + login = os.getlogin() + c.run(f'sudo chown {login}:{login} {HOME}/backup/etc.backup.{TODAY}.tar.gz') + + +@task +def review_backups(c): + print('Lines in dpkg backup:') + c.run(f'cat {HOME}/backup/*.dpkg | wc -l') + print('Files in /etc backup:') + c.run(f'tar tf {HOME}/backup/etc.backup.*.tar.gz | wc -l') + print('Ensure sources are backed up:') + c.run(f'tar tf {HOME}/backup/etc.backup.*.tar.gz | grep etc/apt/sources') + c.run(f'ls -al --block-size=M {HOME}/backup') + +@task +def backup(c): + backup_package_list(c) + backup_sources_list(c) + backup_etc(c) + review_backup(c) + -- 2.47.3