2012-04-14 5 views
0

Мне нужно сжать определенные файлы и каталог. Предположим, что они помещены в/root/project. Дело в том, что мне нужно сжать их в формате gzip-tarball с определенным именем (name.tar.gz) и в корневом каталоге, я имею в виду, что как только я открыл .tar.gz все файлы и каталоги, которые я хочу сжать, есть.Сжатие файлов и каталогов

Я попытался с помощью следующих команд:

tar czfv name.tar.gz /root/project 
tar czfv name.tar.gz /root/project/* 

, но тогда вся подструктура получает сжатия (я имею в виду, когда я открыть .tar.gz я должен перемещаться по каталогам корневой/проекта .. который мне не нужен, мне нужно, чтобы файлы были как только я открылся в «/», я полагаю)

Надеюсь, я сам объяснил ... извините за мой плохой английский и спасибо заранее!

ответ

0

Если вы хотите, чтобы имена файлов в тарболе на все имеют project/ префикс (который часто желательно), сделать

(cd /root && tar czvf `pwd`/name.tar.gz project) 

Если вы не хотите префикс вообще, делать

(cd /root/project && tar czvf `pwd`/name.tar.gz .) 

(pwd фиксирует настоящий рабочий каталог до выполнения cd; скобки выполняют команду в подоболочке, так что текущая оболочка остается в том же каталоге.)

+0

Второй выбор - это то, что я хочу! Спасибо! Проблема только в том, что когда я сжимаю, файл .tar.gz тоже сжимается вместе с другими файлами! (вид рекурсивной вещи: S) – Lucia

+0

@ Lucia: Я не знаю, что вы имеете в виду. Опция 'z' для' tar' заставляет весь файл сжиматься. –

+0

Когда я открываю новый файл name.tar.gz, внутри него появляется вместе со всеми файлами, сжатыми еще одно имя.tar.gz с 0Bytes ..: S я не знаю почему. – Lucia

2

Если вы используете GNU деготь можно использовать следующую команду:

tar -C /root/project -zcvf /root/name.tar.gz .

-C причины деготь для изменения в каталог /root/project перед добавлением в каталог . в архив. Убедитесь, что каталог назначения для вашего архива находится не в каталоге, в котором вы архивируете (/ root/project). В этом примере создается архив в/root.