Мені потрібно створити архів за допомогою команди gzip (не tar - це необхідно), а архів повинен містити файли з іншого каталогу - наприклад, / і т.д. Я намагався використовувати команду
gzip myetc.gz /etc
Але це не спрацювало.
Мені потрібно створити архів за допомогою команди gzip (не tar - це необхідно), а архів повинен містити файли з іншого каталогу - наприклад, / і т.д. Я намагався використовувати команду
gzip myetc.gz /etc
Але це не спрацювало.
Відповіді:
Gzip працює лише з одним файлом або потоком - дані, передані в gzip. Тож спочатку потрібно генерувати один файл, як, наприклад, з tar, а потім ви можете його gzip. Інший варіант - зібрати всі окремі файли, а потім націлити їх на один файл.
Обидва ці рішення дурні і їх не слід використовувати. Вам слід використовувати tar з вбудованою опцією стиснення і робити це все в одній команді.
.tar.gz
...
cat filename | grep blah
як і дурно. Це також набагато менше оптимального, оскільки він би використовував великий проміжний простір. Я не знаю, чи вважав би це дурним настільки ж необґрунтованим, неоптимальним і взагалі просто некрасивим. Ну, і дурні теж працюють.
fork()
.
gzip
працює з файлами, а не з каталогами. Тому для створення архіву каталогу вам потрібно використовувати tar
(який створить єдиний тарбол з декількох файлів):
tar cvf myetc.tar /etc
або для gzipped архіву:
tar cvzf myetc.tar.gz /etc
cd / ; tar cf - ./etc | gzip -c - > myetc.tar.gz
(якщо вам цікаво, чому я натискаю "./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. У вас не буде жодного файлу myfile.gz, як ви очікували, але багато gziped-файлів рекурсивно. Але це не добре робити це з тощо через символьні посилання ...
Для розпакування каталогу ця ж логіка може бути застосована і з gunzip.
Інший спосіб - перетворити каталог в один файл, якщо у вас немає tar для цього, але утиліта DD, як продемонстровано у цьому дописі: /ubuntu/626634/converting-a -файл до каталогу
gzip
не єzip
. Вони різні інструменти, які працюють по-різному.