Я должен создать архив с помощью команды gzip (не tar - это необходимо), и архив должен содержать файлы из другого каталога - например, / etc. Я пытался использовать команду
gzip myetc.gz /etc
Но это не сработало.
Я должен создать архив с помощью команды gzip (не tar - это необходимо), и архив должен содержать файлы из другого каталога - например, / etc. Я пытался использовать команду
gzip myetc.gz /etc
Но это не сработало.
Ответы:
Gzip работает только с одним файлом или потоком - данные передаются в gzip. Итак, сначала вам нужно сгенерировать один файл, как с помощью tar, а затем вы можете распаковать его. Другой вариант - сжать все отдельные файлы, а затем скопировать их в один файл.
Оба эти решения глупы и не должны использоваться. Вы должны использовать tar со встроенной опцией сжатия и делать все это одной командой.
.tar.gz
...
cat filename | grep blah
как глупо. Это также намного меньше, чем оптимальное, потому что он будет использовать большое промежуточное пространство. Я не знаю, назову ли я это глупым, настолько же необоснованным, неоптимальным и вообще просто уродливым. Ну, глупо работает тоже.
fork()
.
gzip
работает с файлами, а не каталогами. Поэтому для создания архива каталога вам нужно использовать tar
(который создаст один архив из нескольких файлов):
tar cvf myetc.tar /etc
или для сжатого архива:
tar cvzf myetc.tar.gz /etc
cd / ; tar cf - ./etc | gzip -c - > myetc.tar.gz
(если вам интересно, почему я tar «./etc» вместо «/ etc», то это потому, что в этих старых системах при использовании tar xvf, он выведет в / etc и перезапишет его ... [или вы должны использовать «pax» в этом случае]). Обратная команда, т.е. извлечь этот архив под "/ где-то": cd /somewhere ; gzip -dc < /the/location/of/myetc.tar.gz | tar xvf -
Если у вас действительно нет tar, вы можете использовать gzip для создания резервной копии каталога, используя опцию (-r - рекурсивно), но, возможно, это не совсем то, что вы ожидаете ...
Сначала вам нужно будет скопировать ваш каталог под другим именем, если вы хотите сохранить исходный каталог неприкосновенным.
#cp -a directory my_gzip_alone_backup
Во-вторых, вы будете сжимать все файлы в каталоге рекурсивно (-r).
#gzip -r my_gzip_alone_backup
Теперь давайте заглянем внутрь my-gzip-alone-backup. У вас не будет ни одного файла myfile.gz, как вы ожидаете, но рекурсивно будет много gziped файлов. Но это нехорошо делать с помощью символических ссылок ...
Для распаковки каталога та же логика может быть применена с помощью gunzip.
Другой способ - преобразовать каталог в один файл, если у вас нет tar для этого, но есть утилита dd, как показано в этом посте: /ubuntu/626634/converting-a -file к каталогу
gzip
неzip
. Это разные инструменты, которые работают по-разному.