]> apps.delaporte.us Git - dotfiles.git/blob - invoke/upgrade-linux/tasks.py
c079ba8847512248cf06ecaf3d7fa6d3e49b6638
[dotfiles.git] / invoke / upgrade-linux / tasks.py
1 from invoke import task
2
3 from datetime import datetime as dt
4 import os
5
6 HOME = os.path.expanduser('~')
7 TODAY = dt.now().strftime('%Y.%m.%d')
8 DOTFILES=f'{HOME}/dotfiles'
9
10
11 @task
12 def backup_package_list(c):
13 c.run(f'dpkg --get-selections > {HOME}/backup/packages.{TODAY}.dpkg')
14
15 @task
16 def show_disk_space(c):
17 print("Do we have at least 5G of free space?")
18 c.run('df -h /')
19
20 @task
21 def backup_sources(c):
22 c.run(f'cp /etc/apt/sources.list {HOME}/backup/sources.list.{TODAY}.backup')
23
24
25
26 @task
27 def backup_etc(c):
28 print("Use --prompt-for-sudo")
29 c.run(f'sudo tar -czf {HOME}/backup/etc.backup.{TODAY}.tar.gz /etc')
30 login = os.getlogin()
31 c.run(f'sudo chown {login}:{login} {HOME}/backup/etc.backup.{TODAY}.tar.gz')
32
33
34 @task
35 def review_backups(c):
36 print('Lines in dpkg backup:')
37 c.run(f'cat {HOME}/backup/*.dpkg | wc -l')
38 print('Files in /etc backup:')
39 c.run(f'tar tf {HOME}/backup/etc.backup.*.tar.gz | wc -l')
40 print('Ensure sources are backed up:')
41 c.run(f'tar tf {HOME}/backup/etc.backup.*.tar.gz | grep etc/apt/sources')
42 c.run(f'ls -al --block-size=M {HOME}/backup')
43
44 @task
45 def backup(c):
46 backup_package_list(c)
47 backup_sources_list(c)
48 backup_etc(c)
49 review_backup(c)
50