Muszę utworzyć archiwum za pomocą polecenia gzip (nie tar - to konieczne), a archiwum powinno zawierać pliki z innego katalogu - na przykład / etc. Próbowałem użyć polecenia
gzip myetc.gz /etc
Ale to nie zadziałało.
Muszę utworzyć archiwum za pomocą polecenia gzip (nie tar - to konieczne), a archiwum powinno zawierać pliki z innego katalogu - na przykład / etc. Próbowałem użyć polecenia
gzip myetc.gz /etc
Ale to nie zadziałało.
Odpowiedzi:
Gzip działa tylko z jednym plikiem lub strumieniem - dane przesyłane do gzip. Najpierw musisz wygenerować jeden plik, np. Z tar, a następnie możesz go spakować. Inną opcją jest gzipowanie wszystkich pojedynczych plików, a następnie tarowanie ich w jednym pliku.
Oba te rozwiązania są głupie i nie należy ich używać. Powinieneś użyć tar z wbudowaną opcją kompresji i zrobić to wszystko za pomocą jednego polecenia.
.tar.gz
...
cat filename | grep blah
głupi. Jest również znacznie mniej niż optymalny, ponieważ wymagałby dużej tymczasowej przestrzeni. Nie wiem, czy nazwałbym to głupim tak samo, jak nieuzasadnionym, nieoptymalnym i ogólnie po prostu brzydkim. Cóż, głupi też działa.
fork()
.
gzip
działa z plikami, a nie katalogami. Dlatego, aby utworzyć archiwum katalogu, którego musisz użyć tar
(który utworzy jeden plik archiwum z wielu plików):
tar cvf myetc.tar /etc
lub w przypadku spakowanego gzipem:
tar cvzf myetc.tar.gz /etc
cd / ; tar cf - ./etc | gzip -c - > myetc.tar.gz
(jeśli zastanawiasz się, dlaczego zapisuję tar „./etc” zamiast „/ etc”, to dlatego, że w starszych systemach, kiedy używasz tar xvf, wyświetli się w / etc i nadpisze go ... [lub w takim przypadku musisz użyć „pax”]). Komenda odwrotna, tzn. Wypakowanie tego archiwum pod „/ gdzieś”: cd /somewhere ; gzip -dc < /the/location/of/myetc.tar.gz | tar xvf -
Jeśli naprawdę nie masz dostępnej tar, możesz użyć gzip do utworzenia kopii zapasowej katalogu za pomocą opcji (-r - rekurencyjnie), ale być może nie jest to dokładnie to, czego oczekujesz ...
Najpierw musisz skopiować katalog na inną nazwę, jeśli chcesz zachować oryginalny katalog nietykalny.
#cp -a directory my_gzip_alone_backup
Po drugie, skompresujesz wszystkie pliki w katalogu rekurencyjnie (-r).
#gzip -r my_gzip_alone_backup
Teraz rzućmy okiem na kopię zapasową my-gzip-alone-backup. Nie będziesz mieć jednego pliku myfile.gz, jak się spodziewasz, ale wiele plików spakowanych rekursywnie. Ale nie warto robić tego z etc z powodu dowiązań symbolicznych ...
Aby rozpakować katalog, tę samą logikę można zastosować za pomocą gunzip.
Innym sposobem jest przekonwertowanie katalogu na pojedynczy plik, jeśli nie masz tar, aby to zrobić, ale masz dd util, jak pokazano w tym poście: /ubuntu/626634/converting-a -plik-do-katalogu
gzip
nie jestzip
. Są to różne narzędzia, które działają inaczej.