Включается ли исходный файл деготь имя каталога верхнего уровня? Это не похоже на скриншот. Если вы заново создаете файл tar с каталогом верхнего уровня, как указано в пункте 2 в том, что вы пытались, структура не будет одинаковой, и любая программа, пытающаяся использовать tar-файл, не сможет проанализируйте его.
Как вы протестируете «Если я просто раскодирую рабочий tar и tar без изменений, это не сработает». В графическом интерфейсе или в оболочке? Если в оболочке - какие точные команды вы используете?
В оболочке вы можете получить содержимое tarball командой tar -tf filename.tar
. Если все файлы, указанные в этом списке, начинаются с того же имени папки, ваш архив содержит каталог верхнего уровня. Если он просто перечисляет различные файлы и подкаталоги, это не так. (Тарболы, которые не являются мерзостью, но если для чего вы их используете, это вам нужно будет справиться.)
Я предполагаю, что если вы сделаете это в своем исходном файле tar и измененный, неработающий tar-файл, результаты будут отличаться.
Следующие должны работать в оболочке, если у вас есть/нужен тарболл без верхнего уровня каталог:
$ mkdir workdir
$ cd workdir
$ tar -xf ../tarball.tar
<edit your file however you like>
$ tar -cf ../tarball-new.tar *
$ cd ..
$ rm -r workdir
В случае, если вы/нужен тарболл с верхнего уровня каталогов, следующий должен хватает:
$ tar -xf ../tarball.tar
$ cd toplevel_directory
<edit your file however you like>
$ cd ..
$ tar -cf tarball-new.tar toplevel_directory
$ rm -r toplevel_directory
Edit: Я рад, что работал для вас. Дело в том, что tar включает в себя пути файлов, которые он хранит, а не только имена файлов. Поэтому, если вам нужен плоский список файлов, вам нужно запустить tar в каталоге, содержащем эти файлы, давая все из них в качестве аргументов tar
. Если вы попытаетесь использовать ярлык для перехода на уровень и указав только имя каталога для упаковки, tar будет содержать имя каталога в архиве.
Вывод 'tar -tf' http://i.imgur.com/jXysZSf.jpg Идеальный анализ. Спасибо. Я попробую ваше решение. – PRP
Ваше решение работает. Большое спасибо за ваше время. – PRP