Как извлечь отдельную папку и ее подпапки из "тарбола" (.tar.gz)

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

Я старался:

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

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

2 ответа

Решение

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

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

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

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

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

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

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

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

Другие вопросы по тегам