@@ -48,7 +48,8 @@ bootstrap_variables() {
48
48
DEFAULT_USER \
49
49
DEFAULT_PASS \
50
50
DEFAULT_ENCRYPT_PASSPHRASE \
51
- DEFAULT_ENCRYPT_PUBKEY \
51
+ DEFAULT_ENCRYPT_PUBLIC_KEY \
52
+ DEFAULT_ENCRYPT_PRIVATE_KEY \
52
53
DEFAULT_MONGO_CUSTOM_URI \
53
54
DEFAULT_MYSQL_TLS_CA_FILE \
54
55
DEFAULT_MYSQL_TLS_CERT_FILE \
@@ -74,7 +75,8 @@ bootstrap_variables() {
74
75
DB"${backup_instance_number}"_USER \
75
76
DB"${backup_instance_number}"_PASS \
76
77
DB"${backup_instance_number}"_ENCRYPT_PASSPHRASE \
77
- DB"${backup_instance_number}"_ENCRYPT_PUBKEY \
78
+ DB"${backup_instance_number}"_ENCRYPT_PUBLIC_KEY \
79
+ DB"${backup_instance_number}"_ENCRYPT_PRIVATE_KEY \
78
80
DB"${backup_instance_number}"_MONGO_CUSTOM_URI \
79
81
DB"${backup_instance_number}"_MYSQL_TLS_CA_FILE \
80
82
DB"${backup_instance_number}"_MYSQL_TLS_CERT_FILE \
@@ -185,7 +187,8 @@ bootstrap_variables() {
185
187
transform_backup_instance_variable "${backup_instance_number}" ENABLE_PARALLEL_COMPRESSION backup_job_parallel_compression
186
188
transform_backup_instance_variable "${backup_instance_number}" ENCRYPT backup_job_encrypt
187
189
transform_backup_instance_variable "${backup_instance_number}" ENCRYPT_PASSPHRASE backup_job_encrypt_passphrase
188
- transform_backup_instance_variable "${backup_instance_number}" ENCRYPT_PUBKEY backup_job_encrypt_pubkey
190
+ transform_backup_instance_variable "${backup_instance_number}" ENCRYPT_PRIVATE_KEY backup_job_encrypt_private_key
191
+ transform_backup_instance_variable "${backup_instance_number}" ENCRYPT_PUBLIC_KEY backup_job_encrypt_public_key
189
192
transform_backup_instance_variable "${backup_instance_number}" EXTRA_DUMP_OPTS backup_job_extra_dump_opts
190
193
transform_backup_instance_variable "${backup_instance_number}" EXTRA_ENUMERATION_OPTS backup_job_extra_enumeration_opts
191
194
transform_backup_instance_variable "${backup_instance_number}" EXTRA_OPTS backup_job_extra_opts
@@ -1237,21 +1240,26 @@ file_encryption() {
1237
1240
if [ "${exit_code}" = "0" ] ; then
1238
1241
print_debug "[file_encryption] Encrypting"
1239
1242
output_off
1240
- if [ -n "${backup_job_encrypt_passphrase}" ] && [ -n "${backup_job_encrypt_pubkey }" ]; then
1243
+ if [ -n "${backup_job_encrypt_passphrase}" ] && [ -n "${backup_job_encrypt_public_key }" ]; then
1241
1244
print_error "Can't encrypt as both ENCRYPT_PASSPHRASE and ENCRYPT_PUBKEY exist!"
1242
1245
return
1243
- elif [ -n "${backup_job_encrypt_passphrase}" ] && [ -z "${backup_job_encrypt_pubkey }" ]; then
1246
+ elif [ -n "${backup_job_encrypt_passphrase}" ] && [ -z "${backup_job_encrypt_public_key }" ]; then
1244
1247
print_notice "Encrypting with GPG Passphrase"
1245
1248
encrypt_routines_start_time=$(date +'%s')
1246
1249
encrypt_tmp_dir=$(run_as_user mktemp -d)
1247
1250
echo "${backup_job_encrypt_passphrase}" | silent run_as_user ${play_fair} gpg --batch --home ${encrypt_tmp_dir} --yes --passphrase-fd 0 -c "${TEMP_PATH}"/"${backup_job_filename}"
1248
1251
rm -rf "${encrypt_tmp_dir}"
1249
- elif [ -z "${backup_job_encrypt_passphrase}" ] && [ -n "${backup_job_encrypt_pubkey }" ]; then
1250
- if [ -f "${backup_job_encrypt_pubkey }" ]; then
1252
+ elif [ -z "${backup_job_encrypt_passphrase}" ] && [ -n "${backup_job_encrypt_public_key}" ] && [ -n "${backup_job_encrypt_private_key }" ]; then
1253
+ if [ -f "${backup_job_encrypt_private_key }" ]; then
1251
1254
encrypt_routines_start_time=$(date +'%s')
1252
- print_notice "Encrypting with GPG Public Key"
1255
+ print_notice "Encrypting with GPG Private Key"
1253
1256
encrypt_tmp_dir=$(run_as_user mktemp -d)
1254
- silent run_as_user ${play_fair} gpg --batch --yes --home ${encrypt_tmp_dir} --recipient-file "${backup_job_encrypt_pubkey}" -c "${TEMP_PATH}"/"${backup_job_filename}"
1257
+ cat "${backup_job_encrypt_private_key}" | run_as_user tee "${encrypt_tmp_dir}"/private_key.asc > /dev/null
1258
+ print_debug "[file_encryption] [key] Importing Private Key"
1259
+ silent run_as_user gpg --home ${encrypt_tmp_dir} --batch --import "${encrypt_tmp_dir}"/private_key.asc
1260
+ print_debug "[file_encryption] [key] Encrypting to Public Key"
1261
+ cat "${backup_job_encrypt_public_key}" | run_as_user tee "${encrypt_tmp_dir}"/public_key.asc > /dev/null
1262
+ silent run_as_user ${play_fair} gpg --batch --yes --home "${encrypt_tmp_dir}" --encrypt --recipient-file "${encrypt_tmp_dir}"/public_key.asc "${TEMP_PATH}"/"${backup_job_filename}"
1255
1263
rm -rf "${encrypt_tmp_dir}"
1256
1264
fi
1257
1265
fi
@@ -1266,6 +1274,9 @@ file_encryption() {
1266
1274
- dbbackup.backup.encrypt.duration.[${backup_job_db_host}.${backup_job_db_name}] ${encrypt_routines_total_time}
1267
1275
EOF
1268
1276
)
1277
+ else
1278
+ print_error "Encryption failed! Could not detect encrypted file"
1279
+ return 99
1269
1280
fi
1270
1281
else
1271
1282
write_log error "Skipping encryption because backup did not complete successfully"
0 commit comments