v-extract-fs-archive 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #!/bin/bash
  2. # info: archive to directory
  3. # options: USER ARCHIVE DIRECTORY
  4. #
  5. # The function extracts archive into directory on the file system
  6. user=$1
  7. src_file=$2
  8. dst_dir=$3
  9. # Checking arguments
  10. if [ -z "$dst_dir" ]; then
  11. echo "Usage: USER ARCHIVE DIRECTORY"
  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 source dir
  26. if [ ! -e "$src_file" ]; then
  27. echo "Error: source file $src_file doesn't exist"
  28. exit 3
  29. fi
  30. # Checking source path
  31. rpath=$(readlink -f "$src_file")
  32. if [ -z "$(echo $rpath |egrep "^/tmp|^$homedir")" ]; then
  33. echo "Error: invalid source path $src_file"
  34. exit 2
  35. fi
  36. # Checking destination path
  37. rpath=$(readlink -f "$dst_dir")
  38. if [ -z "$(echo $rpath |egrep "^/tmp|^$homedir")" ]; then
  39. echo "Error: invalid destination path $dst_dir"
  40. exit 2
  41. fi
  42. # Extracting gziped archive
  43. if [ ! -z "$(echo $src_file |egrep -i '.tgz|.tar.gz')" ]; then
  44. x='yes'
  45. sudo -u $user mkdir -p "$dst_dir" >/dev/null 2>&1
  46. sudo -u $user tar -xzf "$src_file" -C "$dst_dir" >/dev/null 2>&1
  47. rc=$?
  48. fi
  49. # Extracting bziped archive
  50. if [ ! -z "$(echo $src_file |egrep -i '.tbz|.tar.bz')" ]; then
  51. x='yes'
  52. sudo -u $user mkdir -p "$dst_dir" >/dev/null 2>&1
  53. sudo -u $user tar -xjf "$src_file" -C "$dst_dir" >/dev/null 2>&1
  54. rc=$?
  55. fi
  56. # Extracting gziped file
  57. if [ ! -z "$(echo $src_file |grep -i '.gz')" ] && [ -z "$x" ]; then
  58. sudo -u $user mkdir -p "$dst_dir" >/dev/null 2>&1
  59. sudo -u $user mv "$src_file" "$dst_dir" >/dev/null 2>&1
  60. sudo -u $user gzip -d "$dst_dir/$(basename $src_file)" >/dev/null 2>&1
  61. rc=$?
  62. fi
  63. # Extracting bziped file
  64. if [ ! -z "$(echo $src_file |grep -i '.bz')" ] && [ -z "$x" ]; then
  65. sudo -u $user mkdir -p "$dst_dir" >/dev/null 2>&1
  66. sudo -u $user mv "$src_file" "$dst_dir"# >/dev/null 2>&1
  67. sudo -u $user bzip2 -d "$dst_dir/$(basename $src_file)" >/dev/null 2>&1
  68. rc=$?
  69. fi
  70. # Extracting ziped archive
  71. if [ ! -z "$(echo $src_file |grep -i '.zip')" ]; then
  72. sudo -u $user mkdir -p "$dst_dir" >/dev/null 2>&1
  73. sudo -u $user unzip "$src_file" -d "$dst_dir" >/dev/null 2>&1
  74. rc=$?
  75. fi
  76. # Extracting ziped archive
  77. if [ ! -z "$(echo $src_file |grep -i '.7z')" ]; then
  78. sudo -u $user mkdir -p "$dst_dir" >/dev/null 2>&1
  79. sudo -u $user mv "$src_file" "$dst_dir" >/dev/null 2>&1
  80. sudo -u $user p7zip -d "$src_file" >/dev/null 2>&1
  81. rc=$?
  82. fi
  83. # Extracting tared archive
  84. if [ ! -z "$(echo $src_file |grep -i '.tar')" ] && [ -z "$x" ]; then
  85. x='yes'
  86. sudo -u $user mkdir -p "$dst_dir" >/dev/null 2>&1
  87. sudo -u $user tar -xf "$src_file" -C "$dst_dir" >/dev/null 2>&1
  88. rc=$?
  89. fi
  90. # Extracting rared archive
  91. if [ ! -z "$(echo $src_file |grep -i '.rar')" ]; then
  92. sudo -u $user mkdir -p "$dst_dir" >/dev/null 2>&1
  93. sudo -u $user unrar "$src_file" "$dst_dir" >/dev/null 2>&1
  94. rc=$?
  95. fi
  96. # Checking result
  97. if [ $rc -ne 0 ]; then
  98. echo "Error: $src_file was not extracted"
  99. exit 3
  100. fi
  101. # Exiting
  102. exit