Table of Contents
bash Архивация и резервное копирование
В этой статье, рассмотрим несколько программ, часто используемых для управления коллекциями файлов.
Программы сжатия:
- <html>gzip</html> – сжимает и распаковывает файлы;
- <html>bzip2</html> – программа поблочного сжатия файлов.
Программы архивирования:
- <html>tar</html> – утилита архивирования на ленту;
- <html>zip</html> – упаковывает и сжимает файлы.
И программа синхронизации файлов:
- <html>rsync</html> – выполняет синхронизацию файлов и каталогов с удаленной системой.
Cжатие данных – это процесс устранения избыточных данных. Давайте рассмотрим воображаемый пример. Допустим, есть файл, хранящий изображение абсолютно черного квадрата размером 100 на 100 пикселов. В терминах хранения данных (если предположить, что каждый пиксел представлен 24 битами, или 3 байтами) изображение занимает 30 000 байт:
100 × 100 × 3 = 30 000
Изображение, состоящее из пикселов одного цвета, содержит массу избыточных данных. Будь мы умнее, мы могли бы закодировать данные в виде простого описания того факта, что изображение представлено блоком из 30 000 пикселов черного цвета. То есть вместо хранения блока данных с 30 000 нулей (черный цвет в файлах изображений обычно представлен нулевым значением) мы могли бы сжать данные до числа 30 000 с последующим нулем, описывающим цвет. Такая схема сжатия называется: кодированием длин серий (run-length encoding), и является одной из простейших технологий сжатия.
Современные технологии не в пример сложнее и эффективнее, но главная цель осталась прежней – избавиться от избыточных данных. Алгоритмы сжатия (математические методики, применяемые для осуществления сжатия) делятся на две основные категории:
- Сжатие без потерь (lossless) – гарантирует сохранность всех данных, содержащихся в оригинале. То есть после восстановления файла из сжатой версии восстановленный файл будет иметь в точности то же содержимое, что и несжатый оригинал;
- Сжатие с потерями (lossy) – удаляет некоторые данные во время сжатия, чтобы обеспечить более высокую степень сжатия. Восстановленный файл в этом случае не будет совпадать с оригинальной версией, скорее он будет близкой аппроксимацией оригинала. Примерами сжатия с потерями могут служить формат JPEG (для изображений) и MP3 (для музыкальных произведений).
В дальнейшем обсуждении будем рассматривать только сжатие без потерь, поскольку большинство данных в компьютерах потерь не допускается.
Сжатие файлов
Архивирование файлов
Часто вместе со сжатием используется операция архивирования. Архивирование – это процесс сбора множества файлов и упаковывание их в один большой файл. Архивирование часто применяется как один из этапов создания резервных копий системы. Оно также используется при перемещении старых данных из системы в некоторое долговременное хранилище.
Статья об архиваторе tar
Статья о программе сжатия и архивирования zip
Синхронизация файлов и каталогов
В задачах резервного копирования систем широко используется стратегия синхронизации одного или нескольких каталогов с другими каталогами, находящимися в локальной системе (обычно на некотором извлекаемом устройстве) или в удаленной. Можно, к примеру, создать локальную копию веб-сайта, находящегося в разработке, и синхронизировать ее время от времени с «рабочей» копией на удаленном веб-сервере.
В мире Unix-подобных систем для решения этой задачи широко используется инструмент rsync. Эта программа синхронизует локальные и удаленные каталоги, используя протокол rsync remote-update (протокол удаленного обновления rsync), который позволяет rsync быстро обнаруживать различия между двумя каталогами и копировать минимальный объем данных, необходимый для синхронизации. Это делает программу rsync быстрой и экономичной по сравнению с другими программами копирования.
Статья о программе синхронизации rsync