Last active
November 27, 2019 05:38
-
-
Save kwent/82f544dd0488619fd596 to your computer and use it in GitHub Desktop.
NEO4J Backup to AWS S3 Shell Script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh - | |
#title :backup_neo4j_to_s3.sh | |
#description :This script is creating a NEO4J Backup through neo4j-backup tool, | |
# compress the backup folder via LZMA2 algorithm compression, and upload it to AWS S3. | |
#author :Quentin Rousseau <contact@quent.in> | |
#date :2014-07-28 | |
#version :1.1 | |
#usage :sh backup_neo4j_to_s3.sh ip port destination | eg. sh backup_neo4j_to_s3.sh 127.0.0.1 6362 /mnt/datadisk/backup | |
#dependencies :apt-get update && apt-get install p7zip-full && apt-get install awscli. | |
#============================================================================== | |
#Initialization | |
TODAY=$(date +%Y-%m-%d) | |
NEO4J_SERVER=$1 | |
NEO4J_BACKUP_BINARY=/opt/neo4j-enterprise-1.9.8/bin/neo4j-backup | |
NEO4J_BACKUP_PORT=$2 # Default port 6362 | |
NEO4j_BACKUP_DESTINATION_FOLDER=$3 | |
BACKUP_FILE_NAME=neo4j-backup-$TODAY.7z | |
AWS_BUCKET=mybucket.quent.in.s3-website-us-east-1.amazonaws.com | |
AWS_REGION=us-east-1 | |
export TZ=America/Los_Angeles | |
export JAVA_HOME=/opt/jdk1.7.0_55 | |
export PATH=$PATH:$JAVA_HOME/bin | |
export AWS_ACCESS_KEY_ID=SECRET_KEY | |
export AWS_SECRET_ACCESS_KEY=ACCESS_KEY | |
#Helping functions | |
benchmark_and_execute() { | |
echo "\n[START] - $1" | |
date1=$(date +"%s") | |
eval $2 | |
date2=$(date +"%s") | |
echo "[END] - $1" | |
diff=$(($date2-$date1)) | |
echo "[BENCHMARK] - $(($diff / 60)) minutes and $(($diff % 60)) seconds elapsed.\n" | |
} | |
echo "[START] - NEO4j BACKUP TO S3 - $TODAY" | |
echo "[CONF] - NEO4J SERVER: $NEO4J_SERVER | NEO4J BACKUP PORT: $NEO4J_BACKUP_PORT" | |
echo "[CONF] - NEO4J BACKUP DESTINATION FOLDER IS: $NEO4j_BACKUP_DESTINATION_FOLDER" | |
echo "[CONF] - AWS CONFIGURATION | AWS BUCKET: $AWS_BUCKET | AWS REGION: $AWS_REGION" | |
cmd="$NEO4J_BACKUP_BINARY -from single://$NEO4J_SERVER:$NEO4J_BACKUP_PORT -to $NEO4j_BACKUP_DESTINATION_FOLDER" | |
benchmark_and_execute "NEO4j BACKUP" "$cmd" | |
if [ ! -d "$NEO4j_BACKUP_DESTINATION_FOLDER" ]; then | |
echo "[ERROR] - $NEO4j_BACKUP_DESTINATION_FOLDER doesn't exist! Backup canceled." | |
return | |
fi | |
cmd="7za a -m0=lzma2 -mx1 $NEO4j_BACKUP_DESTINATION_FOLDER.7z $NEO4j_BACKUP_DESTINATION_FOLDER" | |
benchmark_and_execute "7Z FOLDER BY LZMA2 COMPRESSION" "$cmd" | |
cmd="mv $NEO4j_BACKUP_DESTINATION_FOLDER.7z $BACKUP_FILE_NAME" | |
benchmark_and_execute "RENAMING FILE" "$cmd" | |
cmd="aws s3 cp $BACKUP_FILE_NAME s3://$AWS_BUCKET --region $AWS_REGION" | |
benchmark_and_execute "UPLOAD COMPRESSED FILE TO AWS S3" "$cmd" | |
cmd="rm $BACKUP_FILE_NAME && rm -Rf $NEO4j_BACKUP_DESTINATION_FOLDER" | |
benchmark_and_execute "DELETE BACKUP FROM LOCAL" "$cmd" | |
echo "[END] NEO4j BACKUP TO S3 - $TODAY" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This line looks pretty dangerous if someone passes
/
as an argument by mistake and are running it as root. Anif
check would be great to have here