v-add-fs-archive 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #!/bin/bash
  2. # info: archive directory
  3. # options: USER ARCHIVE SOURCE
  4. #
  5. # The function creates tar archive
  6. user=$1
  7. archive=$2
  8. src0=$3
  9. # Checking arguments
  10. if [ -z "$src0" ]; then
  11. echo "Usage: USER ARCHIVE FILE [FILE_2] [FILE_3] [FILE ...]"
  12. exit 1
  13. fi
  14. # Checking vesta user
  15. if [ ! -e "$VESTA/data/users/$user" ]; then
  16. echo "Error: vesta user $user doesn't exist"
  17. exit 3
  18. fi
  19. # Checking user homedir
  20. homedir=$(grep "^$user:" /etc/passwd |cut -f 6 -d :)
  21. if [ -z $homedir ]; then
  22. echo "Error: user home directory doesn't exist"
  23. exit 12
  24. fi
  25. # Checking archive
  26. if [ -e "$archive" ]; then
  27. echo "Error: archive already exist $archive"
  28. exit 1
  29. fi
  30. # Checking source path
  31. IFS=$'\n'
  32. i=1
  33. for src in $*; do
  34. if [ "$i" -gt 2 ]; then
  35. rpath=$(readlink -f "$src")
  36. if [ -z "$(echo $rpath |egrep "^/tmp|^$homedir")" ]; then
  37. echo "Error: invalid source path $src"
  38. exit 1
  39. fi
  40. fi
  41. ((i++))
  42. done
  43. i=1
  44. for src in $*; do
  45. if [ "$i" -gt 2 ]; then
  46. # Deleting leading home path
  47. src=$(echo "$src"| sed -e "s|/home/$user/||")
  48. # Creating tar.gz archive
  49. sudo -u $user tar -rf "${archive/.gz/}" -C /home/$user $src >\
  50. /dev/null 2>&1
  51. if [ "$?" -ne 0 ]; then
  52. echo "Error: archive $archive was not created"
  53. exit 3
  54. fi
  55. fi
  56. ((i++))
  57. done
  58. # Checking gzip
  59. if [[ "$archive" =~ \.gz$ ]]; then
  60. sudo -u $user gzip "${archive/.gz/}" >/dev/null 2>&1
  61. if [ "$?" -ne 0 ]; then
  62. echo "Error: archive $archive was not gziped"
  63. exit 3
  64. fi
  65. fi
  66. exit