mirror of
https://github.com/myvesta/vesta
synced 2025-07-12 08:06:43 -07:00
FileManager create archvies
This commit is contained in:
parent
4adbef4517
commit
317c90b38a
5 changed files with 66 additions and 38 deletions
|
@ -6,11 +6,11 @@
|
|||
|
||||
user=$1
|
||||
archive=$2
|
||||
src=$3
|
||||
src0=$3
|
||||
|
||||
# Checking arguments
|
||||
if [ -z "$src" ]; then
|
||||
echo "Usage: USER ARCHIVE SOURCE"
|
||||
if [ -z "$src0" ]; then
|
||||
echo "Usage: USER ARCHIVE FILE [FILE_2] [FILE_3] [FILE ...]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -21,36 +21,56 @@ if [ ! -e "$VESTA/data/users/$user" ]; then
|
|||
fi
|
||||
|
||||
# Checking user homedir
|
||||
homedir=$(grep "^$user:" /etc/passwd | cut -f 6 -d :)
|
||||
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.tar.gz" ]; then
|
||||
echo "Error: archive already exist $archive.tar.gz"
|
||||
if [ -e "$archive" ]; then
|
||||
echo "Error: archive already exist $archive"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Checking source path
|
||||
rpath=$(readlink -f "$src")
|
||||
if [ -z "$(echo $rpath |egrep "^/tmp|^$homedir")" ]; then
|
||||
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
|
||||
fi
|
||||
((i++))
|
||||
done
|
||||
|
||||
# Parsing current directory
|
||||
d=$(dirname "$src")
|
||||
i=1
|
||||
for src in $*; do
|
||||
if [ "$i" -gt 2 ]; then
|
||||
# Deleting leading home path
|
||||
src=$(echo "$src"| sed -e "s|/home/$user/||")
|
||||
|
||||
# Removing leading file path
|
||||
f=$(echo "$src" |sed -e "s|$d/||")
|
||||
|
||||
# Creating tar.gz archive
|
||||
sudo -u $user tar -czf "$archive.tar.gz" -C $d $f >/dev/null 2>&1
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo "Error: archive $archive.tar.gz was not created"
|
||||
# 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
|
||||
|
|
|
@ -158,9 +158,7 @@ class FileManager {
|
|||
$items = implode(' ', $items_arr);
|
||||
|
||||
$dst_item = $this->formatFullPath($dst_item);
|
||||
$dst_item = str_replace('.tar.gz', '', $dst_item);
|
||||
|
||||
// echo VESTA_CMD . "v-add-fs-archive {$this->user} {$dst_item} {$items}";
|
||||
exec (VESTA_CMD . "v-add-fs-archive {$this->user} {$dst_item} {$items}", $output, $return_var);
|
||||
|
||||
$error = self::check_return_code($return_var, $output);
|
||||
|
|
|
@ -1142,7 +1142,6 @@ FM.unpackItem = function() {
|
|||
);
|
||||
}
|
||||
|
||||
|
||||
var src = selected.find('.source').val();
|
||||
src = $.parseJSON(src);
|
||||
|
||||
|
@ -1172,36 +1171,32 @@ FM.unpackItem = function() {
|
|||
FM.packItem = function() {
|
||||
var tab = FM.getTabLetter(FM.CURRENT_TAB);
|
||||
var box = FM['TAB_' + tab];
|
||||
var selected = $(FM['TAB_' + tab] ).find('.dir.active');
|
||||
var selected = $(FM['TAB_' + tab] ).find('.dir.selected');
|
||||
if (selected.length == 0) {
|
||||
return FM.displayError(
|
||||
App.Constants.FM_NO_FILE_SELECTED
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
var src = selected.find('.source').val();
|
||||
src = $.parseJSON(src);
|
||||
|
||||
if (FM.isItemPseudo(src)) {
|
||||
if (FM.isItemPseudo(src) && selected.length <=1 ) {
|
||||
return FM.displayError(
|
||||
App.Constants.FM_NO_FILE_OR_DIRECTORY_SELECTED
|
||||
);
|
||||
}
|
||||
|
||||
if (FM.isItemPseudo(src)) {
|
||||
return FM.displayError(
|
||||
App.Constants.FM_NO_FILE_OR_DIRECTORY_SELECTED
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
var dst = FM['TAB_' + tab + '_CURRENT_PATH'];
|
||||
if (dst == '') {
|
||||
dst = GLOBAL.ROOT_DIR;
|
||||
}
|
||||
|
||||
var tpl = Tpl.get('popup_pack', 'FM');
|
||||
if(selected.length > 1){
|
||||
tpl = Tpl.get('popup_bulk_pack', 'FM');
|
||||
}
|
||||
tpl.set(':NUMBER_OF_ITEMS', selected.length);
|
||||
tpl.set(':FILENAME', src.name);
|
||||
tpl.set(':DST_DIRNAME', (dst + '/' + src.name + '.tar.gz').replace('//', '/'));
|
||||
FM.popupOpen(tpl.finalize());
|
||||
|
|
|
@ -188,6 +188,21 @@ App.Templates.html = {
|
|||
</div>\
|
||||
</div>'],
|
||||
|
||||
popup_bulk_pack: ['<div class="confirm-box pack warning">\
|
||||
<div class="message">'+App.Constants.FM_PACK+' (~!:NUMBER_OF_ITEMS~!)</div>\
|
||||
<div class="actions">\
|
||||
<input type="text" id="pack-destination" class="new-title" value="~!:DST_DIRNAME~!">\
|
||||
</div>\
|
||||
<div class="warning warning-message"></div>\
|
||||
<!-- div class="actions">\
|
||||
<label><input type="checkbox" name="overwrite" class="title" />Overwrite exising files</label>\
|
||||
</div -->\
|
||||
<div class="controls">\
|
||||
<p class="cancel" onClick="FM.popupClose();">'+App.Constants.FM_CANCEL+'</p>\
|
||||
<p class="ok" onClick="FM.confirmPackItem();">'+App.Constants.FM_PACK_BUTTON+'</p>\
|
||||
</div>\
|
||||
</div>'],
|
||||
|
||||
popup_unpack: ['<div class="confirm-box unpack warning">\
|
||||
<div class="message">'+App.Constants.FM_EXTRACT+' <span class="title">"~!:FILENAME~!"</span> '+App.Constants.FM_INTO_KEYWORD+':</div>\
|
||||
<div class="actions">\
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue