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

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

160
задан 15 April 2012 в 05:09

7 ответов

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

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

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

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

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

0
ответ дан 15 April 2012 в 05:09

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

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

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

Чтобы сохранить права доступа к файлам, используйте 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 и т. Д.).

0
ответ дан 15 April 2012 в 05:09

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

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

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

0
ответ дан 15 April 2012 в 05:09

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

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

0
ответ дан 15 April 2012 в 05:09

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

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

0
ответ дан 15 April 2012 в 05:09

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

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

0
ответ дан 15 April 2012 в 05:09

Другие ответы хорошо объяснили разницу между сжатием и архивированием.

7z - это архиватор, что означает, что он знает внутреннюю структуру каталогов, имена файлов и т. Д. Без необходимости распаковывать все. Однако есть некоторые ограничения. Я цитирую man 7z в моей системе Ubuntu:

Backup and limitations
       DO NOT USE the 7-zip format for backup purpose on Linux/Unix because :
        - 7-zip does not store the owner/group of the file.

       On Linux/Unix, in order to backup directories you must use tar :
        - to backup a directory  : tar cf - directory | 7za a -si directory.tar.7z
        - to restore your backup : 7za x -so directory.tar.7z | tar xf -

       If you want to send files and directories (not the owner of file) to others Unix/MacOS/Windows users, you can use the 7-zip format.

         example : 7za a directory.7z  directory

       Do not use "-r" because this flag does not do what you think.

       Do not use directory/* because of ".*" files (example : "directory/*" does not match "directory/.profile")

Вот и все. Можно использовать tar внутри 7z (в результате получится directory.tar.7z ), чтобы убедиться, что вы сохранили все специальные возможности Linux. Однако 7z будет знать только об одном tar-файле внутри, и весь tar-файл нужно будет распаковать и прочитать, чтобы обнаружить, что находится внутри. Поэтому для множества обычных файлов и там, где право собственности не имеет значения, просто используйте 7z напрямую.

Кроме того, если файл tar (или сжатый файл tar.anything) поврежден, вы сможете восстановить данные только до момента повреждения. С таким архивом, как 7z (без использования tar), ваши шансы на восстановление большего количества файлов выше.

PS: 7z также может создавать твердые архивы, что приводит к лучшему сжатию, но имеет те же ограничения, что и использование tar внутри любого компрессора. Источник: https://en.wikipedia.org/wiki/Solid_compression

0
ответ дан 17 January 2020 в 16:19

Другие вопросы по тегам:

Похожие вопросы: