SharePoint Alfresco PHP MySQL
О сайте Контакты
пятница, 21 июня 2013 г.

Разделение архива на части в Linux

Знакома ли вам ситуация, когда необходимо скачать с хостинга накопившийся большой объем данных, а файловая система поддерживает только файлы размером 2 ГБ? Сразу оговорюсь, что речь идет о передаче по FTP большого количества мелких файлов, которые для передачи целесообразно запаковывать в архив, чтобы избежать многочисленных переподключений. Если это ваш случай, то решение не заставит себя долго ждать ...

Нужно просто запаковывать не в один архив, а делить его на части. Естественно, один большой архив может «весить» более 2 ГБ, а при разделении можно легко получить несколько крупных файлов, которые легко сохранить в файловой системе и передать потом по FTP. Допустим, мы имеем FreeBSD с файловой системой ext2, там как раз ограничение на максимальный размер файла 2 ГБ. Тогда для упаковки с разделением можем использовать две стандартные утилиты: tar и split. Получится такая команда:

tar cvf - 'dir_name' | split -b 1024m - dir_name.tar_

Здесь происходит следующее. Утилита tar упаковывает без сжатия директорию dir_name в стандартный поток вывода. Данный поток подхватывается и подается на вход утилите split, которая делит его на порции по 1024 МБ, помещая в серию файлов с общим префиксом dir_name.tar. Ключ v у tar можно убрать, он нужен всего лишь для показа имен файлов во время упаковывания. Таким образом, мы «запихнули» всю директорию в один разделенный файл. Теперь его можно легко скачать по частям и затем собрать и распаковать.

Sergey Lysenko, пятница, 21 июня 2013 г.

Комментарии: