4 сентября 2010 г.

Передача данных посредством FloppyNet. Нарезка и склейка файлов.

Сегодня потребовалось передать относительно большой файл посредством ФлоппиНет (FloppyNet). Для тех, кто не в теме, поясняю: ФлоппиНет - это передача данных посредством 3.5 дюймовых дискет. Этот способ передачи данных уже давно устарел, сейчас в качестве среды передачи широко используются медные провода, и всё чаще физической средой передачи служит свет, идущий по оптоволокну.

ФлоппиНет является одной из первых технологий семейства КроссоНет (sneakernet), не считая тех, что были в до-компьютерное время. Принцип технологий передачи данных, входящих в семейство КроссоНет, заключается в том, что данные записываются на переносной накопитель, который необходимо отнести к получателю. Если вам часто приходится передавать данные подобным образом, вам желательно иметь хорошие кроссовки для быстрой доставки данных с наименьшим количеством потерянных пакетов. Отсюда и название данной технологии.
Так как переносные накопители могут вместить всё больший объём данных, данная технология продолжает применяться повсеместно, даже развиваться, и вряд ли устареет в ближайшем будущем. Впрочем, на замену КроссоНет приходят файлообменные сети, которые выполняют ту же функцию, только быстрее и надёжнее. Единственное условие - наличие у отправителя и получателя подключения к сети Интернет.

Итак, я решил использовать совершенно устаревшую технологию ФлоппиНет, поскольку это был самый простой и наименее затратный способ из доступных. Данная технология обладает единственным преимуществом - её поддерживают даже самые старые компьютеры и пользователи. К недостаткам можно отнести высокую вероятность потери пакетов данных во время передачи и низкую скорость.

У меня есть старый ноутбук IBM ThinkPad 760ED, который поддерживает ФлоппиНет, и относительно новый персональный компьютер (ПК) под управлением Linux, который так же поддерживает эту технологию. На ПК есть файл, который нужно передать на ноутбук, но который невозможно передать одним пакетом через ФлоппиНет. Следовательно, его нужно аккуратно нарезать на маленькие кусочки, которые потом можно будет последовательно передать. В Linux с нарезанием файлов проблем нет - есть инструмент, острый, как скальпель и надёжный, как... Как все базовые утилиты Linux, проверенные десятилетиями использования. Имя ему - split. Как и с любым качественно изготовленным инструментом, работать с ним не составляет труда.

Допустим, файл называется bigfile.tgz и он "весит" 2 мегабайта. Нарежем его на кусочки размером в 800 килобайт:

# split -b800k bigfile.tgz

Сразу после флага -b указывается максимальный размер каждого кусочка, в данном случае это 800 килобайт. О том, что задан размер в килобайтах, говорит буква k сразу после числа, как не трудно догадаться. Мегабайты обозначаются буковой m, а если буква не указана, то подразумеваются байты.

После нажатия клавиши Enter мы обнаружим в текущей директории несколько файлов под названиями xaa, xab, xac и т.д. Можно задать названия для частей файла - для этого нужно передать команде ещё один параметр после имени нарезаемого файла - префикс. Пусть, мы хотим, чтобы получившиеся части именовались как part_a, part_b part_c и т.д. Тогда префикс будет part_, и команда будет выглядеть вот так:

# split -b800k bigfile.tgz part_

Теперь копируем последовательно кусочки на дискету (или несколько дискет), и переносим на ноутбук. Там все кусочки большого файла сваливаем в одну кучу один каталог.

В Linux файлы "склеиваются" не сложнее, чем нарезаются. Для склеивания частей воедино используется команда cat:

# cat part_a part_b part_c ... part_NN > bigfile.tgz

Но вот ведь незадача! На ноутбуке нет (ещё нет) установленного Linux, только DOS и синие панельки Norton Commander... Тем не менее, повода для паники нет - DOS умеет склеивать части файла, правда, делает это несколько странно (на взгляд пользователя Linux, по крайней мере).

В DOS есть команда COPY, и пусть вас не вводит в заблуждение её название - она предназначена не только для копирования файлов, но и для склеивания файла из частей. Синтаксис команды не сложен, если вам интересны подробности, смотрите help copy в DOS. Я же затрону только то, что необходимо для склеивания бинарных (двоичных) файлов. В общем виде, это выглядит так:

# COPY /b part_a + part_b + part_c + ... + part_NN bigfile.tgz

Флаг /b указывает на то, что конечный файл является бинарным. Обратите внимание, что части файла как бы суммируются знаками "+". Если пропустить хотя бы один плюс между частями файла, команда выполнится некорректно.

В моём случае, команда выглядела примерно так:

# COPY /b part_a + part_b + part_c + ... + part_NN bigfile.tgz

- и из разрозненных частей, переданных через ФлоппиНет, вновь образовался исходный файл. Красота...

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

Отправить комментарий