2015-03-24 6 views
0

Я пишу цикл, который должен сжать все файлы в текущем каталоге в файл tar.Сжатие файлов в папке с использованием tar

Существует инструкция if, чтобы проверить, существует ли файл tar, и если так добавить файлы на него.

FILE_NAME_ARCHIVE=sjohal_Jan_archive.tar 

cd /archive/sjohal/Jan 

for file in `/bin/ls -1` 
do 
if [ -f $FILE_NAME_ARCHIVE ] 
    then 
    tar -cuf $FILE_NAME_ARCHIVE $file 
else 
    tar -ruf $FILE_NAME_ARCHIVE $file 
fi 
done 

Но по какой-то причине я получаю ошибку «деготь: Вы не можете указать более одной опции -Acdtrux»»

+1

[Не анализировать выходные данные из 'ls'] (http://mywiki.wooledge.org/ParsingLs) и [не читать строки с' for'] (http://mywiki.wooledge.org/DontReadLinesWithFor). –

+0

'tar' не является сжатым форматом. Просто говорю'. – tripleee

ответ

1

Вы используете -cuf и -ruf но, как сообщение об ошибке проясняет , вы не можете использовать более одного из -c, -r и -u сразу.

Это, как говорится, вам не нужно ничего делать. tar должно быть прекрасным создание файла tar, который не существует при использовании -r или -u, чтобы вы могли полностью избежать проверки.

Также обратите внимание, что -u будет дублировать файл в tarball, чтобы размер tarball увеличивался на размер обновленного файла (он не удаляет старый файл).

Смежные вопросы