W mojej firmie pobieramy migawkę lokalnej bazy danych rozwoju jako db.dump.tar.gz
plik. Kompresja ma sens, ale archiwum zawiera tylko jeden plik ( db.dump
).
Czy jest sens archiwizacji pojedynczego pliku, czy jest to .tar.gz
po prostu taki idiom? Dlaczego nie tylko .gz
?
tar
compression
archive
ogrodnik
źródło
źródło
tar -zxvf
. Ale dla tych, którzy patrzą na nazwę pliku i widzą, że nie ma go.tgz
jako rozszerzenia, gzip plik zrzutu bazy danych jest w porządku. Ponieważ nie znam szczegółowo algorytmów kompresji, nie jestem pewien, czy tar wykonuje jakąkolwiek kompresję na rzadkich plikach, takich jak db dump, ale w przypadku zwykłych plików tekstowych bezpośredni gzip pliku ma bardzo małą przewagę wielkości nad tarowaniem pierwszego i gzip ing plik.tar.gz
się, że jestem lepszy od większości innych powszechnych metod. Pamiętam, że był lepszy niż sprawiedliwy,.tar
ale nie pamiętam, czy był lepszy niż sprawiedliwy.gz
..cab
Format ironicznie Window był najlepszą z metod, które wypróbowałem, co było bardzo nieoczekiwane.tar
nie jest algorytmem kompresji, jest to format archiwizacjiOdpowiedzi:
Zalety używania
.tar.gz
zamiast tego.gz
są takietar
przechowuje więcej metadanych (uprawnienia UNIX itp.) niżgzip
.Koszty użytkowania
tar
są również bardzo małe.Jeśli nie jest to naprawdę potrzebne, nadal nie polecam tar pojedynczego pliku. Istnieje wiele przydatnych narzędzi, które mogą uzyskać dostęp do skompresowanych pojedynczych plików bezpośrednio (takich jak
zcat
,zgrep
itd. - także dla istniejącychbzip2
ixz
).źródło
.gz
, moim pierwszym instynktem jesttar -zxf foo.gz
. Zapamiętywanie, że gzip jest nawet poleceniem, zajmuje kilka sekund.z
(lub-
o to chodzi), większość nowoczesnychtar
s automatycznie wykryje, że plik wymaga dekompresji.gzip
zachowuje oryginalną nazwę pliku i znacznik czasu. Możesz użyć tej-N
opcji podczas dekompresji, aby je przywrócić.Właściwie zadajesz tylko połowę pytania. Drugie pytanie brzmi: „Dlaczego miałbym kompresować plik tar za pomocą gzip?”. Odpowiedź nie tylko
gzip
sprawia , że plik jest mniejszy (w większości przypadków):tar
:gzip
:Tylko
tar
Ty nie możesz być pewien, że Twoje dane nie zostały uszkodzone. Tylkogzip
Ty nie możesz przywrócić identyfikatora użytkownika / grupy, czasu modyfikacji i możliwe, że nie oryginalna nazwa pliku.Kombinacja jest bardziej wydajna niż poszczególne polecenia / formaty, ponieważ uzupełniają się wzajemnie .
źródło
tar
stronę wikipedii, źle zrozumiałem opis, co oznacza, że suma kontrolna dotyczyła całego pliku.Jest to dość duża zaletą korzystania tylko-skompresowane pliki tekstowe - zawartość może być bezpośrednio dostępne z narzędzi wiersza polecenia, takich jak
less
,zgrep
,zcat
.źródło
Powiedziałbym, że ludzie prawdopodobnie nie zdają sobie sprawy, że mogą używać gzip / bzip2 / xz bez tar. Być może dlatego, że pochodzą z tła DOS / Windows, gdzie normalna jest kompresja i archiwizacja w jednym formacie ( ZIP , RAR itp.).
Chociaż w niektórych sytuacjach używanie tar może mieć niewielkie zalety ze względu na przechowywanie metadanych lub możliwość dodawania dodatkowych plików, istnieją również wady. Za pomocą zwykłego pliku gzip / bzip2 / xz można go zdekompresować i przesłać zdekompresowane dane bezpośrednio do innego narzędzia (takiego jak baza danych) bez konieczności przechowywania zdekompresowanych danych jako pliku na dysku. Z tarballem jest to trudniejsze.
źródło
tgz
rozszerzenia. Jednak w przypadku OP używa siętar.gz
- a jeśli ci hipotetyczni byli użytkownicy Win / DOS są podobni do mnie, pierwszą rzeczą, jaką mówią, patrząc na taki plik, jest: „Dlaczego ma 2 rozszerzenia?”. Następnie google go i szybko uzyskać odpowiedź, co wyraźnie wyjaśnia, żetar
i kompresja są różne. ;-)Istnieje ważna różnica, która może sprawić, że użycie będzie
tar
ważne w pewnych okolicznościach: Oprócz „metadanych”, o których wspomniał @jofel w swojej odpowiedzi,tar
zapisuje nazwę pliku w archiwum. Po wyodrębnieniu otrzymujesz oryginalną nazwę pliku, niezależnie od tego, jak nazywa się archiwum.W twoim przypadku archiwum tar i plik zawiera ona mieć podobnych nazw
db.dump.tar.gz
idb.tar
, ale przypuśćmy, zmienić nazwę pliku tar do20-Apr-16.dump.tgz
, lub cokolwiek. Rozwiąż to ztar xvfz
, a otrzymaszdb.dump
. Dla porównania rozpakuj20-Apr-16.dump.gz
i masz20-Apr-16.dump
. (Edycja: jak wskazano w komentarzach, gzip zapisuje również nazwę pliku, ale zwykle nie jest używany podczas rozpakowywania).tar
Archiwum może zawierać także względną ścieżkę, która stawia rozpakowany plik w podkatalogu.Twój przypadek użycia określi, czy tego rodzaju trwałość nazw plików jest potrzebna, a nawet pożądana , czy faktycznie jest niepożądana. Ale z pewnością, niezależnie od kompresji,
tar
archiwum podróżuje inaczej niż zwykły plik.źródło
gzip --name
jawnie podczas dekompresji), ale nie musisz używać tar, aby uzyskać trwałość nazw plików.Oprócz wszystkich innych odpowiedzi, ostatnio spotkałem się ze skryptową sytuacją, w której oczekiwano tylko jednego pliku, ale poprzedni pracownik napisał skrypty z możliwością wygenerowania więcej niż jednego pliku. Pliki zostały smołowane i skompresowane, a następnie przesłane i rozszerzone.
Gdy proces urósł do tego stopnia, że utworzył plik o wielkości 4,3 GB, przewinął i utworzył plik .dump.001 oprócz pliku .dump. Wszystkie skrypty po prostu działały.
To jest zdefiniowane proaktywne lenistwo sysadmin!
źródło
Zeskrobałbym pojedynczy plik, aby go skopiować, zachowując znacznik czasu (który można łatwo przeoczyć w plikach do pobrania). Uprawnienia do plików i własność są mniej ważne: pobieranie to termin, który dotyczy systemów, które nie są dobrze zintegrowane.
Bez względu na to, czy jest to tar, czy nie, standardową praktyką jest kompresowanie pliku, aby przyspieszyć pobieranie - i uniknąć wyczerpania miejsca na dysku.
źródło
Tar jest szczególnie użyteczny w przypadku wielu plików, które nie zostały zapisane w formalnym systemie plików, zawsze tak było. Jeśli z jakiegoś powodu jest okazja, aby zapisać tylko 1 plik, nie ma to rzeczywistych konsekwencji. Mogę dodać mój plik .tar.gz bezpośrednio do / dev / sdx bez względu na partycję lub system plików. Równie dobrze może to być taśma.
Zwykle dzieje się tak, ponieważ skrypt lub proces został skopiowany z kodu dziedzictwa. Oczywiście nie ma potrzeby tarowania, jeśli istnieje tylko jeden plik, ale pozostawia miejsce na ulepszenie wielu plików ......
źródło