В чем разница между .tar.gz и .gz, или .tar.7z и .7z?

131

Недавно я копировал множество своих данных, и я заметил, что могу сохранять файлы как .gz или .tar.gz , или .7z и .tar.7z и т. д. Каковы различия между нормальным и вариантом .tar.* ? Какой из них рекомендуется при создании резервных копий?

    
задан Exeleration-G 15.04.2012 в 03:09
источник

6 ответов

155

Если вы работаете с фоном Windows, вы можете быть знакомы с форматами zip и rar. Это архивы нескольких файлов, сжатых вместе.

В Unix и Unix-подобных системах (например, Ubuntu) архивирование и сжатие являются отдельными.

tar помещает несколько файлов в один (tar) файл.

gzip сжимает один файл (только).

Итак, чтобы получить сжатый архив, вы объединяете два, сначала используйте tar или pax , чтобы получить все файлы в один файл (archive.tar), затем gzip it (archive.tar.gz) , Если у вас есть только один файл, который вам нужно сжать (notes.txt), нет необходимости в tar, поэтому вы просто делаете gzip notes.txt , что приведет к notes.txt.gz . Существуют и другие типы сжатия, такие как compress , bzip2 и xz , которые работают так же, как gzip (кроме использования различных типов сжатия, конечно)

    
ответ дан geirha 15.04.2012 в 03:41
источник
42

Это зависит от того, что вы ищете ... Сжатие или архивирование?

Когда я говорю о архивировании, я имею в виду сохранение разрешений, структуру каталогов и т. д.

Сжатие может игнорировать большинство из этого и просто получать ваши файлы в меньших пакетах.

Чтобы сохранить права доступа к файлам, используйте 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-сжатие обеспечивает большее сжатие, но не сохраняет права собственности на файлы, разрешения и т. д. Rzip - это еще одна утилита сжатия, которая предлагает сопоставимое сжатие с 7z.

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

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

    
ответ дан SaultDon 15.04.2012 в 03:45
10

gzip или bzip2 не знает о file system - имя файла, каталог, древовидную структуру. Просто сжимайте входной поток, а затем выводите результат. Даже gzip или bzip2 не могут архивировать автономный каталог. Именно поэтому в сочетании с tar.

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

Я думаю, что эта стратегия исходила из «сделать что-то хорошее» . Тар хорошо работает? Оставьте это. Требуется больше степени сжатия, чем gzip? Вот bzip2 или 7zip.

    
ответ дан Mait 15.04.2012 в 06:55
8

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

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

    
ответ дан MuffinStateWide 15.04.2012 в 03:36
3

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

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

    
ответ дан G. He 15.04.2012 в 03:21
3

Tar (Tape Archiver) традиционно использовался в качестве контейнера в Unix / Linux для пакетных файлов для перемещения. Он упаковывает структуру файлов и поддерживает атрибуты файлов, но не сжимает файлы.

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

    
ответ дан Marty Fried 15.04.2012 в 03:34