/ scripts / gnupg.sh
gnupg.sh
 1  #!/usr/bin/env bash
 2  
 3  # Usage:
 4  # ./gnupg.sh backup <key-id>
 5  # ./gnupg.sh restore <file>
 6  
 7  backup() {
 8      mkdir -p /tmp/gnupg-backup
 9      gpg --export --export-options backup --output /tmp/gnupg-backup/public.gpg "${1}"
10      gpg --export-secret-keys --export-options backup --output /tmp/gnupg-backup/private.gpg "${1}"
11      tar cf backup.tar -C /tmp/gnupg-backup .
12      rm -r /tmp/gnupg-backup
13      printf "\nBackup saved to backup.tar\n"
14  }
15  
16  restore() {
17      mkdir -p /tmp/gnupg-restore
18      tar xf "${1}" -C /tmp/gnupg-restore
19      gpg --import /tmp/gnupg-restore/public.gpg
20      gpg --import /tmp/gnupg-restore/private.gpg
21      rm -r /tmp/gnupg-restore
22      printf "\nBackup restored\n"
23      printf "To edit trust level: gpg --edit-key <key-id>\n"
24      printf "Type \`trust\` and press Enter\n"
25      printf "!!! Don't forget to delete primary secret key !!!\n"
26  }
27  
28  if [ "${1}" = 'backup' ]; then
29      backup "${2}"
30  elif [ "${1}" = 'restore' ]; then
31      restore "${2}"
32  fi