tar удаление ведущего '/' из имен членов

У меня возникла ошибка, когда я добавил > /dev/null к команде tar, кто-нибудь знает, что происходит во втором примере?

хороший:

 tar -cvf $kname /var/www

Плохо:

 tar -cvf $kname /var/www > /dev/null

 error:tar: Removing leading `/' from member names

person Hebing    schedule 19.09.2014    source источник
comment
Меня одного смущает, что в сообщении от tar две разные кавычки? Первый — это обратная кавычка, а второй — одинарная кавычка.   -  person Dan Cron    schedule 26.08.2016
comment
См. также tar: Удаление ведущего `/' из имен элементов   -  person Martin Schröder    schedule 22.09.2016
comment
К сожалению, tar выводит его в начале сборки архива, поэтому вы пропустите это сообщение, если прокрутите экран вверх.   -  person H2ONaCl    schedule 03.12.2016
comment
@DanCron Это, вероятно, взято из стиля цитат LaTeX. (Мне это нравится! :D) tex.stackexchange.com /questions/10670/quotes-in-latex#10672   -  person Campa    schedule 25.10.2018
comment
@Campa Я думаю, ты что-то понял. Но если бы они решили использовать кавычки в стиле LaTeX, разве они не использовали бы две обратные кавычки раньше, а затем две одинарные кавычки после ``/''?   -  person Dan Cron    schedule 25.10.2018


Ответы (3)


«Хорошая» версия также отображает то же самое сообщение, которое вы только что пропустили.

Если вам не нравится такое поведение, поищите «ведущий» в руководстве. Первый удар:

-P, --absolute-names
       don't strip leading '/'s from file names
person Karoly Horvath    schedule 19.09.2014
comment
хорошая версия может быть успешно выполнена. но плохая версия выдала мне ошибку tar: Удаление ведущего `/' из имен элементов. Я не совсем понимаю это сообщение об ошибке, как мне решить эту ошибку? - person Hebing; 19.09.2014
comment
Плохая версия может быть выполнена так же успешно. Как я уже сказал, оба отображают одно и то же сообщение. - person Karoly Horvath; 19.09.2014
comment
добавление -P работает, см.: tar -cvf test.tar -P /var/www › /dev/null, спасибо - person Hebing; 19.09.2014
comment
примечание: вы, вероятно, не хотите этого... просто проигнорируйте сообщение. - person Karoly Horvath; 19.09.2014
comment
@KarolyHorvath: почему бы и нет? - person parvus; 18.10.2014
comment
@parvus, потому что распаковка этого файла распаковала бы его по абсолютному пути, из которого он был заархивирован, возможно, перезаписав очень ценные файлы. без косой черты в начале он распаковывается относительно ./ - person regretoverflow; 14.11.2014

Это связано с тем, что ваш файл ($kname) имеет ведущее значение /.

Чтобы исправить это, вы можете указать -C для изменения каталога вместо указания полного пути к файлу архива.

person kenorb    schedule 30.03.2015
comment
в то время как -P работает как обходной путь, -C, вероятно, больше подходит вам. - person pdeschen; 01.04.2015
comment
-C не влияет на -c - person junpet; 28.04.2021

Возможно, лучше оставить ваши файлы без «/» в резервной копии и просто игнорировать сообщение об ошибке. Tar делает это в качестве меры предосторожности, потому что, если вы распакуете файл, он автоматически вернет файлы в исходный каталог. Это может быть опасно, и большинство людей хотят этого избежать. Лично я был бы доволен тем, что он удалил '/', и тогда ваше восстановление будет относительным, а не абсолютным путем к каталогу. Затем вы можете вручную переместить файлы в нужное место или в другое место. Просто публикую это, чтобы люди знали и не заменяли непреднамеренно свои исходные файлы.

person pvella    schedule 08.09.2017