#!/bin/bash # info: archive directory # options: USER ARCHIVE SOURCE # # The function creates tar archive user=$1 archive=$2 src0=$3 # Checking arguments if [ -z "$src0" ]; then echo "Usage: USER ARCHIVE FILE [FILE_2] [FILE_3] [FILE ...]" exit 1 fi # Checking vesta user if [ ! -e "$VESTA/data/users/$user" ]; then echo "Error: vesta user $user doesn't exist" exit 3 fi # Checking user homedir homedir=$(grep "^$user:" /etc/passwd |cut -f 6 -d :) if [ -z $homedir ]; then echo "Error: user home directory doesn't exist" exit 12 fi # Checking archive if [ -e "$archive" ]; then echo "Error: archive already exist $archive" exit 1 fi # Checking source path IFS=$'\n' i=1 for src in $*; do if [ "$i" -gt 2 ]; then rpath=$(readlink -f "$src") if [ -z "$(echo $rpath |egrep "^/tmp|^$homedir")" ]; then echo "Error: invalid source path $src" exit 1 fi fi ((i++)) done i=1 for src in $*; do if [ "$i" -gt 2 ]; then # Deleting leading home path src=$(echo "$src"| sed -e "s|/home/$user/||") # Creating tar.gz archive sudo -u $user tar -rf "${archive/.gz/}" -C /home/$user $src >\ /dev/null 2>&1 if [ "$?" -ne 0 ]; then echo "Error: archive $archive was not created" exit 3 fi fi ((i++)) done # Checking gzip if [[ "$archive" =~ \.gz$ ]]; then sudo -u $user gzip "${archive/.gz/}" >/dev/null 2>&1 if [ "$?" -ne 0 ]; then echo "Error: archive $archive was not gziped" exit 3 fi fi exit