URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8603
[ Назад ]

Исходное сообщение
"Массивы в BASH"

Отправлено scrooge , 29-Янв-10 15:12 
Важно! флудить здесь не надо!!! Программированием занимался еще в институте, чтобы решить данную задачу нужно потратить несколько дней на книжки, а решение требуется уже вчера.

Итак, нужно периодически просматривать пути на предмет наличия там файлов в определенной папке (IMP_FOLDER) и, в случае их присутствия, забэкапить их и отправить архив по назначению. После чего текущую папку требуется очистить.

Навоял следующее:

#!/usr/local/bin/bash

TODAY=`date "+%Y-%m-%d"`
BASEDIR=/tmp
logfile=empty.log
var[0]=/mnt/pathtores2/res02
var[1]=/mnt/pathtores3/res03
var[2]=/mnt/pathtoAB/AB
...
var[430]=/mnt/pathtoother/other

ftpuser=blablabla
ftppass=blablabla
remote=blablabla

/bin/mkdir -p $BASEDIR/$TODAY;
echo "##### Result by $TODAY" >> $BASEDIR/$logfile

for PREF in ${var[@]}; do
cd $PREF
if [ "$(ls -A IMP_FOLDER)" ]
    then
    /usr/local/bin/zip -r $BASEDIR/$TODAY/$RANDOM.zip $PREF/IMP_FOLDER;
    /usr/local/bin/lftp -c "o $ftpuser:$ftppass@$remote && mirror -R $BASEDIR/$TODAY";
    rm -rf IMP_FOLDER/*
    else
    echo "Folder "IMP_FOLDER" in $PREF is empty! \
         Nothing to do." >> $BASEDIR/$logfile
fi
done

rm -rf $BASEDIR/$TODAY

Затык с именем архива... Пока я его делаю с рандомным именем, а нужно, чтобы имя архива совподало с именем последней папки в пути (т.е. res02, res03, AB и т.д.)

HELLp, pls!


Содержание

Сообщения в этом обсуждении
"Массивы в BASH"
Отправлено Andrey Mitrofanov , 29-Янв-10 15:39 
>Важно! флудить здесь не надо!!!

И эти люди запрещают мне ковырять в носу! :-P


>var[0]=/mnt/pathtores2/res02
>var[430]=/mnt/pathtoother/other
>for PREF in ${var[@]}; do
>    /usr/local/bin/zip -r $BASEDIR/$TODAY/$RANDOM.zip $PREF/IMP_FOLDER;
>Затык с именем архива... Пока я его делаю с рандомным именем, а
>нужно, чтобы имя архива совподало с именем последней папки в пути
>(т.е. res02, res03, AB и т.д.)

/usr/local/bin/zip -r $BASEDIR/$TODAY/${PREF##*/}.zip $PREF/IMP_FOLDER;

>HELLp, pls!

В кассу! Следующий...


"Массивы в BASH"
Отправлено scrooge , 29-Янв-10 15:47 
Андрей, премного благодарен!!!

>[оверквотинг удален]
>>    /usr/local/bin/zip -r $BASEDIR/$TODAY/$RANDOM.zip $PREF/IMP_FOLDER;
>>Затык с именем архива... Пока я его делаю с рандомным именем, а
>>нужно, чтобы имя архива совподало с именем последней папки в пути
>>(т.е. res02, res03, AB и т.д.)
>
>/usr/local/bin/zip -r $BASEDIR/$TODAY/${PREF##*/}.zip $PREF/IMP_FOLDER;
>
>>HELLp, pls!
>
>В кассу! Следующий...