it-swarm.com.ru

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

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

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

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, оно заархивировано, это правильно?

4
engineering student

Я думаю, что этот ответ на ваш вопрос: 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, поэтому знайте, что вы делаете, или документируйте где-нибудь, что вы делали.

5
Dino Hensen

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

2
Elder Geek