Skip to content

Instantly share code, notes, and snippets.

@eyJhb
Last active July 13, 2018 16:29
Show Gist options
  • Save eyJhb/8803a6059d58fc8d688725e2b8326b84 to your computer and use it in GitHub Desktop.
Save eyJhb/8803a6059d58fc8d688725e2b8326b84 to your computer and use it in GitHub Desktop.
Simple backup script that uses GPG to encrypt backups with public key before transferring backup to a SCP server
#!/bin/bash
# Linux SCP Backup Script
# how it works
# -
#date string
d=$(date --iso)
# dir where backup is located
BACKUP_TEMP_DIR="/root"
BACKUP_TEMP_FOLDER="$BACKUP_TEMP_DIR/backup-$d"
# remote dir
REMOTE_DIR="./"
backup_clean() {
echo 'Removing local backup folder'
rm -rf $BACKUP_TEMP_DIR/backup-*
}
PGP_ID=""
SCP_USER="backup-user"
SCP_KEY_FILE="/root/.ssh"
SERVER_IP="backup.example.com"
SERVER_LOCATION="/media/backup/"
PORT=22
backup_make() {
mkdir "$BACKUP_TEMP_FOLDER"
#backup /etc/openvpn folder
tar -czf "$BACKUP_TEMP_FOLDER/etc-openvpn.tar.gz" /etc/openvpn/
#backup /home/eyjhb/openvpn-ca folder
tar -czf "$BACKUP_TEMP_FOLDER/home-eyjhb-openvpn-ca.tar.gz" /home/eyjhb/openvpn-ca/
#tar folder into new .tar.gz with correct filename inside root
tar -cz -C $BACKUP_TEMP_DIR backup-$d/ | gpg -r $PGP_ID -o "$BACKUP_TEMP_DIR/backup-$d.tar.gz" --encrypt
echo "Beginning ftp upload"
scp -P $PORT -i $SCP_KEY_FILE $BACKUP_TEMP_DIR/backup-$d.tar.gz $SCP_USER@$SERVER_IP:$SERVER_LOCATION
}
#clean all files left behind from this script
backup_clean
#make the backup
backup_make
#clean up after us again
backup_clean
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment