FileManager create archvies

This commit is contained in:
Serghey Rodin 2016-08-10 14:36:54 +03:00
parent 4adbef4517
commit 317c90b38a
5 changed files with 66 additions and 38 deletions

View file

@ -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
@ -28,29 +28,49 @@ if [ -z $homedir ]; then
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
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
# Parsing current directory
d=$(dirname "$src")
# Removing leading file path
f=$(echo "$src" |sed -e "s|$d/||")
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 -czf "$archive.tar.gz" -C $d $f >/dev/null 2>&1
sudo -u $user tar -rf "${archive/.gz/}" -C /home/$user $src >\
/dev/null 2>&1
if [ "$?" -ne 0 ]; then
echo "Error: archive $archive.tar.gz was not created"
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

View file

@ -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);

View file

@ -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());

View file

@ -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">\