
pg_dump ile aldığımız backupların openssl ile nasıl kriptolu bir şekilde alabiliriz ve bu backuptan decrypt ederek nasıl geri dönüş yapabiliriz? Aşağıdaki script ile encrypt backup alabiliriz.
Öncesinde Openssl ile key public ve private key oluşturmamız gerekmektedir;
openssl req -x509 -nodes -days 36500-newkey rsa:4096 -keyout backup_key.pem -out backup_key.pem.pub
Oluşturulan keyler aşağıdaki gibir;
$ ll
total 20
-rw-------. 1 s_cust13 s_cust13 3268 Feb 25 11:29 backup_key.pem
-rw-rw-r--. 1 s_cust13 s_cust13 2004 Feb 25 11:29 backup_key.pem.pub
Backup scripti;
#!/bin/bash
## #######################
## Db name parameter
database_name="$1"
backup_public_key="/u01/pg_data13/cert/backup_key.pem.pub"
## Backup location.
backup_dir="/home/s_cust13/backup/"
## Numbers of days you want to keep copies of your databases
number_of_days=7
if [ -z "${database_name}" ]
then
echo "Enter a database name as the first argument"
exit 1
fi
## Backup files names settings
backup_date=`date +%Y-%m-%d-%H-%M-%S`
backup_name="${database_name}.${backup_date}.tar"
echo "Dumping ${database_name} to ${backup_dir}${backup_name}"
pg_dumpall -v -g -f ${backup_dir}dump_roles_$backup_date.sql
pg_dump -Z -v ${database_name} -Ft -f ${backup_dir}${backup_name}
openssl smime -encrypt \
-aes256 -binary -outform DEM \
-in ${backup_dir}${backup_name} \
-out ${backup_dir}${backup_name}.enc \
"${backup_public_key}"
rm -f ${backup_dir}${backup_name}
find ${backup_dir} -type f -prune -mtime \
+${number_of_days} -exec rm -f {} \;
Oluşan encrypted dosyayı decrypt yapmak için;
$ openssl smime -decrypt -in ${backup_dir}${backup_name} -binary -inform DEM -inkey /u01/pg_data13/cert/backup_key.pem ${backup_dir}${backup_name}.tar
--Benim örneğim için
$ openssl smime -decrypt -in test1.2022-02-25-12-19-54.tar.enc -binary -inform DEM -inkey /u01/pg_data13/cert/backup_key.pem > test1.2022-02-25-12-19-54.tar
ilgili DB ler oluşturulduktan sonra bu backplara dönmek için ;
pg_restore -d test1 test1.2022-02-25-12-19-54.tar -v
Bir yanıt yazın