Назад | Перейти на главную страницу

Почему tar не может изменить текущий каталог?

Следующая команда:

tar -C "${HOME}/temp" -zcvf uber-bundle.tgz temp

сбой со следующей ошибкой:

tar: temp: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

Однако работает немного другая команда, хотя и создается tar с неправильной структурой каталогов:

tar -C "${HOME}/temp" -zcvf uber-bundle.tgz ~/temp
tar: Removing leading `/' from member names
...

Понятно, что опция -C не может изменить текущий каталог tar на $ {HOME}, что делает каталог нераспознаваемым. Что пошло не так и как это исправить?

Здесь происходит следующее: опция -C указывает tar сначала сменить каталог перед созданием архива. Итак, в первом примере вы делаете примерно следующее:

cd /home/whatever/temp/; tar -zcvf uber-bundle.tgz temp;

Теперь вы уверены, что у вас есть дополнительный каталог temp по этому пути '/ home / something / temp /'

Во втором случае, поскольку вы используете абсолютный путь ~ / temp в качестве аргумента tar, даже если tar изменил ваш каталог на '/ home / something / temp /', он работает с аргументом ~ / temp, поэтому вы делаете это:

cd /home/whatever/temp/; tar -zcvf uber-bundle.tgz ~/temp;

Итак, в этом случае проблема заключается в том, что вы создаете tar-архив каталога, в котором находитесь.