Advertisement
Guest User

Untitled

a guest
Nov 27th, 2015
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3.  
  4. BACKUP_DIR="/Root/Backup/"
  5. PIECE_SIZE=10M
  6. ACTION=store
  7.  
  8. trap "exit 2" SIGINT
  9.  
  10. for i in "$@"
  11. do
  12. case $i in
  13. -u=*|--user=*) # mega user
  14. USER="${i#*=}"
  15. shift
  16. ;;
  17. -p=*|--password=*) # mega user password
  18. PWD="${i#*=}"
  19. shift
  20. ;;
  21. -s=*|--secret=*) # encryption password
  22. ENC_PWD="${i#*=}"
  23. shift
  24. ;;
  25. --piece=*) # size of piece
  26. PIECE_SIZE="${i#*=}"
  27. shift
  28. ;;
  29.  
  30. -r|--restore) # resurse into sub directories
  31. ACTION=restore
  32. shift # past argument with no value
  33. ;;
  34. *)
  35. # unknown option
  36. ;;
  37. esac
  38. done
  39.  
  40. function store {
  41. if [[ -n "$1" && -d "$1" ]]; then
  42. NAME=`basename $1`
  43. MEGA_PATH=$BACKUP_DIR$NAME
  44. TMP_DIR=`mktemp -d`
  45.  
  46. megamkdir -u $USER -p $PWD $BACKUP_DIR 2>/dev/null
  47. megarm -u $USER -p $PWD $MEGA_PATH 2>/dev/null
  48. megamkdir -u $USER -p $PWD $MEGA_PATH
  49.  
  50. 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.
  51.  
  52. rm -r $TMP_DIR
  53. else
  54. echo "Please specify directory!" >&2
  55. exit 1
  56. fi
  57. }
  58.  
  59. function restore {
  60. if [[ -n "$1" ]]; then
  61. NAME=`basename $1`
  62. MEGA_PATH=$BACKUP_DIR$NAME
  63. mkdir -p $1
  64. FILES=`megals -u $USER -p $PWD -n $MEGA_PATH`
  65. if [[ -z "$FILES" ]]; then
  66. echo "Sorry no backup find in $MEGA_PATH" >&2
  67. exit 2
  68. fi
  69.  
  70. (for f in $FILES; do
  71. megaget -u $USER -p $PWD --path - $MEGA_PATH/$f | openssl aes-256-cbc -d -k "$ENC_PWD" -md sha256
  72. done) | tar -C $1 -xzv
  73. else
  74. echo "Please specify directory!" >&2
  75. exit 1
  76. fi
  77. }
  78.  
  79. if [[ -z "$USER" || -z "$PWD" || -z "$ENC_PWD" ]]; then
  80. echo "You must provide --user --pasword and --secret" >&2
  81. exit 3
  82. fi
  83.  
  84. case $ACTION in
  85. restore)
  86. restore $1
  87. ;;
  88. store)
  89. store $1
  90. esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement