Мой текущий каталог содержит один файл, как это

$ls -l
-rw-r--r--    1 root     staff             8 May 28 09:10 pavan

Теперь я хочу смолить и сжать этот файл как

$tar -cvf - *  2>/dev/null |gzip -vf9 > pavan.tar.gz 2>/dev/null

(Я знаю, что создаю заархивированный файл в том же каталоге, что и исходный файл)

Когда я запускаю вышеупомянутые команды tar/gzip примерно 20 раз, несколько раз я замечаю, что конечный файл pavan.tar.gz с заархивированными и заархивированными файлами имеет файл pavan.tar.gz размера pavan.tar.gz . Я не уверен, откуда этот файл нулевого размера поступает в архив.

Примечание: я НЕ запускаю команды tar/gzip для уже существующего файла tar.gz. Я всегда проверяю, чтобы в каталоге был только один файл, прежде чем запускать команды При поиске в Google, как описано здесь, я подозревал, что создаваемый tar.gz также был частью архивируемого файла. Но в моем случае, gzip - это тот, кто создает окончательный файл, и к моменту запуска gzip tar должен завершиться tarring.

Это происходит в AIX, но я также использовал тег Linux, чтобы привлечь больше внимания, так как я полагаю, что проблема не зависит от платформы.

3 ответа3

1

Вы вводите команду "piped". Ваш интерпретатор (bash и т.д.) Создает канал и выполняет две команды (порождает 2 процесса - tar & gzip). В этой процедуре bash разветвляется несколько раз, и не определено, создается ли целевой файл pavan.tar.gz до или после * расширения в команде tar .

0

Если у вас есть только один файл, и вы беспокоитесь, потому что он может измениться во времени, вы можете просто использовать

cat pavan | gzip -f9 > pavan.gz 

Дополнительный комментарий:

Если вы работаете с bash вы можете попытаться отменить выбор так с !(pavan.tar.gz) вы выберете все файлы, кроме pavan.tar.gz

 tar -zcf pavan.tar.gz !(pavan.tar.gz)  

в конечном итоге с --ignore-command-error

-1

Я не понимаю, почему вы используете -v, а затем перенаправить его на dev/null? удалите -v и dev/null, например:

tar -cf - * | gzip -f9> pavan.tar.gz

Вы не увидите ничего на экране.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .