LINUX.ORG.RU

Написание скриптов для архивирования


0

0

Доброго времени суток. Есть следующая проблемка. Написал скрипт, который архивирует данные. Из скрипта запускается куча фоновых процессов, которые занимаются архивацией. Но в конце надо записать все что получилось на DVD, соответственно надо дождаться, пока завершаться все фоновые процессы. Как это организовать в скрипте?

Сейча скрипт выглядит следующим образом: #/bin/sh

BASE_DIR=/home/backup BACKUP_DIR=$BASE_DIR/bck`date +"%Y%m%d"`

mkdir $BACKUP_DIR touch $BACKUP_DIR/data_archive

for i in $( cat $1 ) do tar cvf $BACKUP_DIR/`basename $i`_`date +"%Y%m%d"`.tar $i > /dev/null bzip2 -z9 $BACKUP_DIR/`basename $i`_`date +"%Y%m%d"`.tar& done

anonymous

Re: Написание скриптов для архивирования

На куче процессов будет твориться жуткая путаница, например, если процесс 3 завершился раньше процесса 1, а wait'ы расставлены в порядке 1-2-3 (тем более что PID не могут инкрементироваться до бесконечности, так что теоретически возможен вариант, что пока первый вейт ждал завершения первого процесса, пид бывшего третьего вейта достался кому-нибудь ещё).

Поэтому более правильным вариантом будет освоение make (info make; hint: запускать как make -j n , где n --- количество скриптов в куче)

bakagaijin ()

Re: Написание скриптов для архивирования

И ещё: 1) зачем указывать tar'у v, если его вывод всё равно отправляется в /dev/null? 2) Если мне не изменяет память, tar умеет передавать опции компрессору 3) Если даже не умеет, то почему нельзя отключить verbose output и использовать пайпы?

bakagaijin ()

Re: Написание скриптов для архивирования

А почему, собственно, запускать их всех в фоне? Имхо, время-то выполнения будет то же самое. Или я не прав?

Laz ★★★★★ ()

Re: Написание скриптов для архивирования

можно в цикле антил слип ставить а как условие использовать атгрепаный ps на наличие запущенных таров

until [`ps -u user -o command|grep tar |grep -v grep|wc -l ` -eq 0]
do
sleep 2m;
done

AleX ★★★ ()

Re: Написание скриптов для архивирования

>tar cvf $BACKUP_DIR/`basename $i`_`date +"%Y%m%d"`.tar $i > /dev/null bzip2 -z9

tar cjf????

AleX ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.