Яка різниця між .tar.gz і .gz, або .tar.7z і .7z?


158

Останнім часом я створюю резервну копію багатьох своїх даних, і я помітив, що можу зберігати файли як .gzабо .tar.gz, або .7zі .tar.7z, etcetera. Які відмінності між нормальним та .tar.*варіантом? Який із них рекомендується робити під час створення резервних копій?

Відповіді:


183

Якщо ви походите з фону Windows, вам можуть бути знайомі формати zip та rar. Це архіви декількох файлів, стислих разом.

У Unix та Unix-подібних системах (як Ubuntu) архівування та стиснення є окремими.

tar поміщає кілька файлів в один (tar) файл.

gzip стискає один файл (лише).

Отже, щоб отримати стислий архів, ви об'єднаєте два, спочатку скористайтеся tarабо paxзберіть всі файли в один файл (archive.tar), потім gzipйого (archive.tar.gz). Якщо у вас є лише один файл, який вам потрібно стиснути (Notes.txt), то тар не потребує, тому ви просто зробите, gzip notes.txtщо призведе до notes.txt.gz. Є й інші типи стиснення, такі як compress, bzip2і xzякі працюють так само, як gzip (крім використання різних типів стиснення, звичайно)


6
Це має сенс, але тоді, чому я можу зробити .7zархів з декількох файлів, тоді як я також можу зробити .tar.7zархів з декількох файлів?
Exeleration-G

3
@ Exeleration-G 7zip не дотримується цієї схеми. Це більше схоже на zip та rar. Не впевнений, у чому сенс використання смоли в поєднанні з 7zip, оскільки я сам не використовував 7zip.
geirha

42
@ Exeleration-G Прочитавши інші відповіді, я бачу, що SaultDon відповідає на це; 7zip не зберігає права власності на Unix та дозвіл на архівовані файли (схоже, що це в основному спрямовано на Windows, як-от zip та rar), тому є сенс поєднувати його з tar, щоб зберегти право власності та дозволи.
geirha

@geirha Позначте питання вирішеним, якщо ви знайдете відповідну відповідь.
Раві

1
На мій досвід 7z набагато краще стискається, ніж блискавка. Коли я тестував, це врятувало мене на кшталт 40% додатково
Eoin

49

Це залежить від того, що ви шукаєте ... Стиснення чи архівування?

Коли я говорю про архівування, я маю на увазі збереження дозволів, структури каталогів тощо ...

Стиснення може ігнорувати більшість із цього і просто отримувати ваші файли меншими пакетами.

Щоб зберегти дозволи файлів, використовуйте tar:

tar cpvf backup.tar folder

Прапор p збереже права доступу до файлів. Використовуйте прапор z для стиснення gzip або j прапор для стиснення bzip.

tar czpvf backup.tar.gz folder #backup.tgz is acceptable as well
tar cjpvf backup.tar.bz2 folder #backup.tbz2 works too

Якщо ви хочете мати файл tar, ви можете "оновити" пакет tar, використовуючи прапор P:

tar cpPvf backup.tar folder

Потім для оновлення, заміни "c" на "u", і при розпакуванні ви можете використовувати "k" для збереження вже існуючих файлів.

tar upPvf backup.tar folder #updating a tar file
tar xpPkvf backup.tar #extracting a tar with permissions(p) and not extracting(k) files that exist on disk already

Прапор P зберігає файли з повними шляхами, тому - / home / username vs home / username (зверніть увагу на провідну косу рису вперед).

Стиснення 7z пропонує більшу компресію, але не зберігає право власності на файли, дозволи та ін.

Я думаю, що файл backup.tar.7z - це лише файл tar (з дозволами), стиснутий 7z-файлом, хоча я не здивуюсь, якщо трапиться невелике стиснення, оскільки 7z може не змогти скинути метадані файлу. Це здатність 7z виключити метадані файлів, які можуть забезпечити велике стиснення (серед іншого, звичайно).

Стиснення повністю залежить також від типу даних. Деякі файли не стискаються, тому що вони вже можуть бути стиснуті іншими засобами (наприклад, .mp3, .jpg, .tiff / з lzma, .rpm тощо).


11

gzip або bzip2 не знає про file system- ім'я файлу, каталог або структуру дерева. Він просто стискає вхідний потік, а потім вихідний результат. Навіть gzip або bzip2 не можуть самостійно архівувати каталоги, тому зазвичай вони поєднуються з tar.

tar (архіватор) - просто структура архіву файлів. gzip, bzip2 (компресор) - просто стиснути вхід.

Я думаю, що ця стратегія виникла з філософії Unix «зроби добре» . Дьоготь добре працює? Залиште так, як є. Потрібно більше коефіцієнта стиснення, ніж gzip? Ось bzip2 або 7zip.


Насправді 7zip може архівувати, як zip або rar.
Мейт

8

різноманітні стилі стиснення, гусениця сама по собі просто архівується (мало-до без стиснення). tar.gz - архів дьогтю, але вміст стискається gzip (помірне стиснення), отже .gz та tar.7z стискаються за допомогою 7zip (зазвичай надвисока компресія)

під час резервного копіювання я рекомендую tar.7z, оскільки він має найвищу швидкість стиснення, економлячи вам місце, але використовує додаткову програму (7zip). .tar.gz буде більшими файлами і виконувати ту саму роботу, ви також можете використовувати bzip (.tar.bz / bz2), хоча я не впевнений, чи підійде це вам краще, оскільки я використовую gzip або 7zip


4

зазвичай файли * .tar - це лише файли tar, створені програмою tar, * .gz програми створюються gzip, * .tar.gz (колись також * .tgz) - це gziped файли tar, а * .7z створюються 7zip.

Однак в Linux / Unix можна назвати файл у будь-якому випадку, де він захоче, тому це повністю на розсуд творця файлів.


3

Тар (стрічковий архіватор) традиційно використовується як контейнер в Unix / Linux для упаковки файлів для руху. Він пакує структуру файлів і підтримує атрибути файлів, але не стискає файли.

Програми стиснення стискають файл, щоб зменшити його, але вони можуть не обробляти декілька файлів, та / або вони не можуть обробляти атрибути файлів, необхідні для Linux. Оскільки tar вже існує і добре підтримується, немає причин архівувати програми, щоб дублювати цю функціональність, яка залежить від платформи (повторно, для Windows та Linux). Крім того, різні програми стиснення можуть працювати по-різному для різних типів файлів, тому бажано мати вибір декількох.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.