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