From: Edward Delaporte Date: Sat, 21 Feb 2026 23:56:13 +0000 (-0600) Subject: Add backup commands before upgrade X-Git-Url: https://us-delaporte.pagekite.me/gitweb/dotfiles.git/commitdiff_plain/0d755f8783ff2a64e11412c5426e7a036117c624?ds=inline Add backup commands before upgrade --- 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) +