]> apps.delaporte.us Git - dotfiles.git/commitdiff
Add backup commands before upgrade
authorEdward Delaporte <edward@delaporte.us>
Sat, 21 Feb 2026 23:56:13 +0000 (17:56 -0600)
committerEdward Delaporte <edward@delaporte.us>
Sat, 21 Feb 2026 23:56:13 +0000 (17:56 -0600)
invoke/upgrade-linux/tasks.py [new file with mode: 0644]

diff --git a/invoke/upgrade-linux/tasks.py b/invoke/upgrade-linux/tasks.py
new file mode 100644 (file)
index 0000000..c079ba8
--- /dev/null
@@ -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)
+