66
77user=$1
88archive=$2
9- src =$3
9+ src0 =$3
1010
1111# Checking arguments
12- if [ -z " $src " ]; then
13- echo " Usage: USER ARCHIVE SOURCE "
12+ if [ -z " $src0 " ]; then
13+ echo " Usage: USER ARCHIVE FILE [FILE_2] [FILE_3] [FILE ...] "
1414 exit 1
1515fi
1616
@@ -21,36 +21,56 @@ if [ ! -e "$VESTA/data/users/$user" ]; then
2121fi
2222
2323# Checking user homedir
24- homedir=$( grep " ^$user :" /etc/passwd | cut -f 6 -d :)
24+ homedir=$( grep " ^$user :" /etc/passwd | cut -f 6 -d :)
2525if [ -z $homedir ]; then
2626 echo " Error: user home directory doesn't exist"
2727 exit 12
2828fi
2929
3030# Checking archive
31- if [ -e " $archive .tar.gz " ]; then
32- echo " Error: archive already exist $archive .tar.gz "
31+ if [ -e " $archive " ]; then
32+ echo " Error: archive already exist $archive "
3333 exit 1
3434fi
3535
3636# Checking source path
37- rpath=$( readlink -f " $src " )
38- if [ -z " $( echo $rpath | egrep " ^/tmp|^$homedir " ) " ]; then
39- echo " Error: invalid source path $src "
40- exit 1
41- fi
37+ IFS=$' \n '
38+ i=1
39+ for src in $* ; do
40+ if [ " $i " -gt 2 ]; then
41+ rpath=$( readlink -f " $src " )
42+ if [ -z " $( echo $rpath | egrep " ^/tmp|^$homedir " ) " ]; then
43+ echo " Error: invalid source path $src "
44+ exit 1
45+ fi
46+ fi
47+ (( i++ ))
48+ done
4249
43- # Parsing current directory
44- d=$( dirname " $src " )
50+ i=1
51+ for src in $* ; do
52+ if [ " $i " -gt 2 ]; then
53+ # Deleting leading home path
54+ src=$( echo " $src " | sed -e " s|/home/$user /||" )
4555
46- # Removing leading file path
47- f=$( echo " $src " | sed -e " s|$d /||" )
56+ # Creating tar.gz archive
57+ sudo -u $user tar -rf " ${archive/ .gz/ } " -C /home/$user $src > \
58+ /dev/null 2>&1
59+ if [ " $? " -ne 0 ]; then
60+ echo " Error: archive $archive was not created"
61+ exit 3
62+ fi
63+ fi
64+ (( i++ ))
65+ done
4866
49- # Creating tar.gz archive
50- sudo -u $user tar -czf " $archive .tar.gz" -C $d $f > /dev/null 2>&1
51- if [ " $? " -ne 0 ]; then
52- echo " Error: archive $archive .tar.gz was not created"
53- exit 3
67+ # Checking gzip
68+ if [[ " $archive " =~ \. gz$ ]]; then
69+ sudo -u $user gzip " ${archive/ .gz/ } " > /dev/null 2>&1
70+ if [ " $? " -ne 0 ]; then
71+ echo " Error: archive $archive was not gziped"
72+ exit 3
73+ fi
5474fi
5575
5676exit
0 commit comments