Путаница между архивированием и сжатием?

Я запутался в архивировании и сжатии и собираюсь написать то, что считаю правильным.

Вот команды, которые я хочу получить лучшее понимание:

tar –c file > file.tar
tar –cf file.tar file // this command and the previous one are about the same

Я думаю, что предыдущие команды просто создают своего рода общую папку (архив), в которой у нас есть точные файлы, которые у нас были до выполнения команды архивирования (размер не уменьшается вообще), единственное отличие состоит в том, что третья будет создавать архив с.gz вместо.tar.

Чтобы уменьшить размер архива (сжать его), мы должны использовать:

tar -cjf file.tar.bz2 file
tar –cJf file.tar.xz file

gzip file.tar // it’ll create a compressed file called file.tar.gz
tar -cz file  > file.tar.gz 

Я вижу это так: если расширение -.gz, .bz2 или.xz, оно сжато, а если -.tar, оно заархивировано, это правильно?

2 ответа

Решение

Я думаю, что этот ответ на ваш вопрос: https://unix.stackexchange.com/questions/127169/does-tar-actually-compress-files-or-just-group-them-together

Чтобы подтвердить, что вы думаете: tar действительно просто помещает файл в архив без какого-либо сжатия. Именно флаги сжатия, которые вы можете использовать, заставят tar использовать тип сжатия при создании архива.

Кроме того, расширения файлов набираются вручную, поэтому вы можете быть обмануты так:tar -cz file > file.tar.bz2 (когда вы должны были использовать.tar.gz вместо)

Если вы захотите извлечь этот файл позже, вы будете обманывать себя, думая, что использовали сжатие gzip, поэтому знайте, что вы делаете, или документируйте где-нибудь, что вы делали.

'tar' буквально означает архив на ленте, а также сохраняет и извлекает файлы из архива на ленте (или диске). tar поддерживает большое количество программ сжатия, таких как gzip, bzip2, lzip, lzma, lzop, xz и традиционный компресс

Команды tar должны начинаться с такой функции, как

[-] A --catenate --concatenate | c --create | d --diff --compare |
         --delete | r --append | t --list | --test-label | u --update | x
         --extract --get [options] [pathname ...]

Опция -a может использоваться для автоматического определения требуемого сжатия по суффиксу (расширению) создаваемого файла. tar должен автоматически определять тип сжатия и действовать соответствующим образом при извлечении без особой информации. Он будет использовать только суффикс для определения типа, если проверка подписи завершится неудачно. Для гораздо большего на tar выдать команду man tar и чтобы узнать больше о сжатии tar, см.: https://www.gnu.org/software/tar/manual/html_section/tar_69.html

Есть ряд опций, которые могут изменить результаты. tar допускает добавление и удаление. Расширение никоим образом не указывает тип файла. Например, я видел файлы изображений из системы Windows с расширением.jpg, которые на самом деле были.gif. Чтобы узнать тип файла, откройте терминал с помощью Ctrl Alt T, перейдите в каталог с соответствующим файлом и введите команду file filename Вот пример вывода из сжатого файла gzip:

$ file wireless-info.tar.gz 
wireless-info.tar.gz: gzip compressed data, from Unix, last modified: Thu Apr 23 07:45:20 2015

Изменение расширения никоим образом не меняет вывод file сделав его надежным способом определения типа файла даже для файлов, которые у вас нет и на которых нет заметок. Вот пример после переименования предыдущего файла и удаления.gz...

$ file wireless-info.tar
wireless-info.tar: gzip compressed data, from Unix, last modified: Thu Apr 23 07:45:20 2015

Для больше на file и как это работает выдай команду man file

Источники: опыт & https://www.gnu.org/software/tar/manual/html_section/tar_69.html

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