среда, 12 января 2011 г.

Ubuntu 10.10 Восстановление удалённых фотографий с флешки с помощью foremost

Возникла необходимость восстановить данные с флешки от фотика. Флешка Sony MemoryStick PRODuo (2Gb), Со слов пострадавшей проблема в том, что "внезапно стёрлись все фотки с фотоаппарата" . О фотоаппарате ничего не известно. Заниматься восстановлением мёртвой флешки будем на Ubuntu 10.10

Чтобы не мучить и без того умирающую флешку скопируем с неё всю информацию командой dd на жёсткий диск компьютера. Чтобы знать откуда копировать нужно подсмотреть путь к устройству, выполнив нехитрую команду fdisk (перед этим конечно же вставив флешку в картридер)

sudo fdisk -l

Зная что наш флэш диск размером 2Gb легко находим его. У меня он называется /dev/mspblk0 Монтировать подключённое устройство не нужно. После этого запускаем процесс копирования.

sudo dd if=/dev/mspblk0 of=photo.dd

Процесс копирования не быстрый, на моём ноуте ушло 1166,91 сек на скорости 1,7 MB/c Можно было поэкспериментировать с флагом cbs=bytes который позволяет конвертировать за раз указанное количество байт, но чем проще метод, тем больше вероятность получить назад наши потерянные данные.

Команда dd простая как пять копеек. Всё что она делает это копирует данные с стандартного ввода на стандартный вывод. При этом можно менять размер блока и ещё несколько мелочей вроде пропуска указанного количества блоков.

Теперь самое важное. Качаем и запускаем команду foremost

sudo aptitude install foremost
mkdir ./out
foremost -t jpg -o ./out photo.dd

Для того чтобы восстановить не только jpg файлы, а вообще всё подряд, нужно вместо -t jpg указать -t all

ps: На данный момент foremost поддерживает (может восстанавливать) следующие форматы файлов jpg, gif, png, bmp, avi, exe, mpg, wav, riff, wmv, mov, pdf, ole, doc, zip, rar, htm, cpp

вторник, 11 января 2011 г.

Perl и динамические регулярные выражения

Нашёл тут у себя старый код, который решал интересную задачу поиска произвольно вложенных конструкций с помощью регулярных выражений. Эх! За что люблю Perl, так это за то что в нём такие мощные regexp'ы. Решение было подсмотрено в книге Дж.Фридла "Регулярные выражения" и называется это решение "Динамические регулярные выражения".

Regexp для проверки правильности вложенности скобок в строке текста выглядит вот так

my $regex;
$regex = qr/ (?:[^()]+ | \( (??{ $regex }) \) )* /x;

if ( $text =~ m/$regex/ ) {
    print "строка валидна\n";
}

понедельник, 10 января 2011 г.

Как разбить tar.gz архив на тома и как его потом склеить

Для того чтобы создать разбитый на тома архив в консоли нужно выполнить обычное архивирование с передачей результата в OUTPUT и таким образом на вторую команду конвейера, которая и разбивает полученный результат на тома нужного размера.

tar czf - ./backup | split -d -b 10m - backup.tar.gz.

В результате получится несколько файлов по 10 Мб с окончанием .01 .02 .03 и т.д.

Для того чтобы потом склеить полученные тома нужно выполнить cat с передачей через OUTPUT данных архиватору.

cat backup.tar* | tar xzf -

среда, 17 ноября 2010 г.

iconv перекодировка файлов

Существует простейшая консольная утилита iconv, которая может быстро перекодировать файлы из одной кодировки в другую.

Синтаксис
iconv -f кодировка_откуда [-t кодировка_куда] [входящий_файл]... 

суббота, 13 ноября 2010 г.

Паттерны проектирования. Perl. Абстрактная фабрика.

Абстрактная фабрика представляет собой интерфейс для создания взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов.

вторник, 2 ноября 2010 г.

Подсветка синтаксиса на blogspot.com

Для подсветки будем использовать highlight.js Хорошая библиотека, которой можно воспользоваться на blogspot.com Её преимущество, как я считаю, в том что свежая версия хостится на Яндексе, а следовательно подключить библиотеку, - пара пустяков.