Мне нужно создать архив с помощью команды gzip (не tar - это необходимо), и архив должен содержать файлы из другого каталога - например, /etc. Я пробовал использовать команду
gzip myetc.gz /etc
Но это не сработало.
решение1
gzip
работает с файлами, а не с каталогами. Поэтому для создания архива каталога вам нужно использовать tar
(что создаст один tarball из нескольких файлов):
tar cvf myetc.tar /etc
или, для архива gzip:
tar cvzf myetc.tar.gz /etc
решение2
Gzip работает только с одним файлом или потоком — данные передаются в gzip. Поэтому сначала нужно сгенерировать один файл, как с помощью tar, а затем можно сжать его gzip. Другой вариант — сжать все отдельные файлы gzip, а затем сжать их в один файл tar.
Оба эти решения глупы и не должны использоваться. Вам следует использовать tar со встроенной опцией сжатия и сделать все это одной командой.
решение3
Если у вас действительно нет tar, вы можете использовать gzip для создания резервной копии каталога с помощью опции (-r — рекурсивно), но, возможно, это не совсем то, что вы ожидаете...
Сначала вам нужно будет скопировать свой каталог под другим именем, если вы хотите сохранить исходный каталог нетронутым.
#cp -a directory my_gzip_alone_backup
Во-вторых, вы рекурсивно сожмете все файлы в каталоге (-r).
#gzip -r my_gzip_alone_backup
Теперь давайте заглянем внутрь my-gzip-alone-backup. У вас не будет одного файла myfile.gz, как вы ожидаете, а будет много рекурсивно сжатых gzip файлов. Но делать это с etc нехорошо из-за символических ссылок...
Для распаковки каталога можно применить ту же логику с помощью gunzip.
Другой способ — преобразовать каталог в один файл, если у вас нет tar для этого, но есть утилита dd, как показано в этом посте:https://askubuntu.com/questions/626634/преобразование-файла-в-каталог