Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- BACKUP_DIR="/Root/Backup/"
- PIECE_SIZE=10M
- ACTION=store
- trap "exit 2" SIGINT
- for i in "$@"
- do
- case $i in
- -u=*|--user=*) # mega user
- USER="${i#*=}"
- shift
- ;;
- -p=*|--password=*) # mega user password
- PWD="${i#*=}"
- shift
- ;;
- -s=*|--secret=*) # encryption password
- ENC_PWD="${i#*=}"
- shift
- ;;
- --piece=*) # size of piece
- PIECE_SIZE="${i#*=}"
- shift
- ;;
- -r|--restore) # resurse into sub directories
- ACTION=restore
- shift # past argument with no value
- ;;
- *)
- # unknown option
- ;;
- esac
- done
- function store {
- if [[ -n "$1" && -d "$1" ]]; then
- NAME=`basename $1`
- MEGA_PATH=$BACKUP_DIR$NAME
- TMP_DIR=`mktemp -d`
- megamkdir -u $USER -p $PWD $BACKUP_DIR 2>/dev/null
- megarm -u $USER -p $PWD $MEGA_PATH 2>/dev/null
- megamkdir -u $USER -p $PWD $MEGA_PATH
- tar -C $1 -czv . | split --filter "openssl aes-256-cbc -e -k \"$ENC_PWD\" -md sha256 -out $TMP_DIR/\$FILE; megaput -u $USER -p $PWD --disable-previews --path $MEGA_PATH $TMP_DIR/\$FILE; rm $TMP_DIR/\$FILE" -b $PIECE_SIZE - $NAME.
- rm -r $TMP_DIR
- else
- echo "Please specify directory!" >&2
- exit 1
- fi
- }
- function restore {
- if [[ -n "$1" ]]; then
- NAME=`basename $1`
- MEGA_PATH=$BACKUP_DIR$NAME
- mkdir -p $1
- FILES=`megals -u $USER -p $PWD -n $MEGA_PATH`
- if [[ -z "$FILES" ]]; then
- echo "Sorry no backup find in $MEGA_PATH" >&2
- exit 2
- fi
- (for f in $FILES; do
- megaget -u $USER -p $PWD --path - $MEGA_PATH/$f | openssl aes-256-cbc -d -k "$ENC_PWD" -md sha256
- done) | tar -C $1 -xzv
- else
- echo "Please specify directory!" >&2
- exit 1
- fi
- }
- if [[ -z "$USER" || -z "$PWD" || -z "$ENC_PWD" ]]; then
- echo "You must provide --user --pasword and --secret" >&2
- exit 3
- fi
- case $ACTION in
- restore)
- restore $1
- ;;
- store)
- store $1
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement