| 
					
				 | 
			
			
				@@ -99,6 +99,32 @@ OPT="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Backup files extension 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 EXT="sql" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Encyrption settings 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# (inspired by http://blog.altudov.com/2010/09/27/using-openssl-for-asymmetric-encryption-of-backups/) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Once the backup done, each SQL dump will be encrypted and the original file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# will be deleted (if encryption was successful). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# It is recommended to backup into a staging directory, and then use the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# POSTBACKUP script to sync the encrypted files to the desired location. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Encryption uses private/public keys. You can generate the key pairs like the following: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# openssl req -x509 -nodes -days 100000 -newkey rsa:2048 -keyout backup.key -out backup.crt -subj '/' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Decryption: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# openssl smime -decrypt -in backup.sql.gz.enc -binary -inform DEM -inkey backup.key -out backup.sql.gz 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Enable encryption 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ENCRYPTION=no 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Encryption public key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ENCRYPTION_PUBLIC_KEY="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Encryption Cipher (see enc manpage) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ENCRYPTION_CIPHER="aes256" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Suffix for encyrpted files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ENCRYPTION_SUFFIX=".enc" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Command to run before backups (uncomment to use) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #PREBACKUP="/etc/postgresql-backup-pre" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -346,7 +372,26 @@ dbdump () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-# Compression function plus latest copy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Encryption function 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encryption() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ENCRYPTED_FILE="$1$ENCRYPTION_SUFFIX" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	# Encrypt as needed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if [ "$ENCRYPTION" = "yes" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		echo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		echo "Encrypting $1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		echo "	to $ENCRYPTED_FILE" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		echo "	using cypher $ENCRYPTION_CIPHER and public key $ENCRYPTION_PUBLIC_KEY" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if openssl smime -encrypt -$ENCRYPTION_CIPHER -binary -outform DEM \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			-out "$ENCRYPTED_FILE" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			-in "$1" "$ENCRYPTION_PUBLIC_KEY" ; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			echo "	and remove $1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			rm -f "$1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Compression (and encrypt) function plus latest copy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 SUFFIX="" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 compression () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if [ "$COMP" = "gzip" ]; then 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -362,13 +407,13 @@ elif [ "$COMP" = "bzip2" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	echo "No compression option set, check advanced settings" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encryption $1$SUFFIX 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if [ "$LATEST" = "yes" ]; then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	cp $1$SUFFIX "$BACKUPDIR/latest/" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cp $1$SUFFIX* "$BACKUPDIR/latest/" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Run command before we begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if [ "$PREBACKUP" ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	then 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -448,7 +493,7 @@ echo ====================================================================== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			echo Monthly Backup of $MDB... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				dbdump "$MDB" "$BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.$EXT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				compression "$BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.$EXT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				BACKUPFILES="$BACKUPFILES $BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.$EXT$SUFFIX" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				BACKUPFILES="$BACKUPFILES $BACKUPDIR/monthly/$MDB/${MDB}_$DATE.$M.$MDB.$EXT$SUFFIX*" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			echo ---------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	fi 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -484,7 +529,7 @@ echo ====================================================================== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		echo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			dbdump "$DB" "$BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.$EXT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			compression "$BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.$EXT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			BACKUPFILES="$BACKUPFILES $BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.$EXT$SUFFIX" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			BACKUPFILES="$BACKUPFILES $BACKUPDIR/weekly/$DB/${DB}_week.$W.$DATE.$EXT$SUFFIX*" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		echo ---------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	# Daily Backup 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -495,7 +540,7 @@ echo ====================================================================== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		echo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			dbdump "$DB" "$BACKUPDIR/daily/$DB/${DB}_$DATE.$DOW.$EXT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			compression "$BACKUPDIR/daily/$DB/${DB}_$DATE.$DOW.$EXT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			BACKUPFILES="$BACKUPFILES $BACKUPDIR/daily/$DB/${DB}_$DATE.$DOW.$EXT$SUFFIX" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			BACKUPFILES="$BACKUPFILES $BACKUPDIR/daily/$DB/${DB}_$DATE.$DOW.$EXT$SUFFIX*" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		echo ---------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	done 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -511,7 +556,7 @@ echo ====================================================================== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		echo Monthly full Backup of \( $MDBNAMES \)... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			dbdump "$MDBNAMES" "$BACKUPDIR/monthly/$DATE.$M.all-databases.$EXT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			compression "$BACKUPDIR/monthly/$DATE.$M.all-databases.$EXT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			BACKUPFILES="$BACKUPFILES $BACKUPDIR/monthly/$DATE.$M.all-databases.$EXT$SUFFIX" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			BACKUPFILES="$BACKUPFILES $BACKUPDIR/monthly/$DATE.$M.all-databases.$EXT$SUFFIX*" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		echo ---------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -531,7 +576,7 @@ echo ====================================================================== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		echo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			dbdump "$DBNAMES" "$BACKUPDIR/weekly/week.$W.$DATE.$EXT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			compression "$BACKUPDIR/weekly/week.$W.$DATE.$EXT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			BACKUPFILES="$BACKUPFILES $BACKUPDIR/weekly/week.$W.$DATE.$EXT$SUFFIX" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			BACKUPFILES="$BACKUPFILES $BACKUPDIR/weekly/week.$W.$DATE.$EXT$SUFFIX*" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		echo ---------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	# Daily Backup 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -543,7 +588,7 @@ echo ====================================================================== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		echo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			dbdump "$DBNAMES" "$BACKUPDIR/daily/$DATE.$DOW.$EXT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			compression "$BACKUPDIR/daily/$DATE.$DOW.$EXT" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			BACKUPFILES="$BACKUPFILES $BACKUPDIR/daily/$DATE.$DOW.$EXT$SUFFIX" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			BACKUPFILES="$BACKUPFILES $BACKUPDIR/daily/$DATE.$DOW.$EXT$SUFFIX*" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		echo ---------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 echo Backup End Time `date` 
			 |