feat(user/gpg_encrypt_batch.sh):Add gpg batch encryption script
[BK-2020-03.git] / user / gpg_encrypt_batch.sh
1 #!/bin/bash
2 # Desc: Encrypts a batch of files in the current working directory according to a find pattern.
3 # Usage: gpg_encrypt_batch.sh [PATH key] [PATTERN]
4 # Example: gpg_encrypt_batch.sh "/tmp/key.txt" "*.tar.xz"
5 # Depends: Bash 5.1.16, gpg (GnuPG) 2.2.27, libgcrypt 1.9.4
6 # Version: 0.0.1
7
8 PATH_KEY="$1"; # symmetric encryption passphrase is first line of this file
9 FIND_PATTERN="$2"; # adjust me (e.g. "*.tar.xz")
10
11 passphrase="$(head -n1 "$PATH_KEY")"; # first line
12
13 while read -r line; do
14 printf "STATUS:Beginning encryption of:%s\n" "$line"; sleep 1;
15 time gpg --symmetric --no-symkey-cache \
16 --passphrase "$passphrase" \
17 --pinentry-mode loopback \
18 --cipher-algo AES256 --no-armor \
19 --batch --yes \
20 --output "$line".gpg \
21 "$line" && \
22 printf "STATUS:Finished encrypting:%s\n" "$line" 1>&2 &
23 done < <(find . -maxdepth 1 -type f -name "$FIND_PATTERN" | sort);