4

Мне нужно извлечь одну папку и ее подпапки из архива (.tar.gz) на сервере CentOS. Я не имею ни малейшего понятия, как это сделать с помощью терминала SSH.

Я старался:

gunzip -c files_20100623.0110.tar.gz | tar -xvf home/bsisplas/public_html/staging/template/*.*

Однако он не может найти файл в архиве. Кроме того, где в синтаксисе gunzip вы указываете, куда должны идти извлеченные файлы? Я терминальный терминал Linux, если не сказать больше.

2 ответа2

6

Во-первых, когда вы используете опцию -f для tar , вам нужно дать ей аргумент, сообщающий имя файла архива. Поскольку вы кормите его из трубы из gunzip , мы используем - для обозначения стандартного ввода:

gunzip -c files_20100623.0110.tar.gz | tar -xvf - home/bsisplas/public_html/staging/template/*.*

Следующим моим пунктом будет то, что вам нужно только указать имя каталога. (Также: *.* Обычно DOS-изм. Если вы имеете в виду "все файлы" в Unix, просто напишите * . Если вы пишете *.* Вы говорите «все файлы с точкой где-то в их имени», что может исключать важные файлы без точки, такие как Makefile или README):

gunzip -c files_20100623.0110.tar.gz | tar -xvf - home/bsisplas/public_html/staging/template

Это должно работать. Но вы можете немного упростить задачу, используя опцию tar ' -z , которая говорит, что он должен делать сам gunzip . Мы используем это и заменим - входное имя файла на имя файла архива:

tar -xvzf files_20100623.0110.tar.gz home/bsisplas/public_html/staging/template

Как это работает?

3

Все, что вам нужно, это гудрон. Вы можете получить список файлов в архиве с параметром -t , а затем распаковать его как обычно, но с путем к файлу в качестве последнего аргумента: tar zxvf foo.tar.gz filepath

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