Недавно довелось повозиться с установкой драйверов для новых принтеров HP, поддержки которых нет ни в Lenny, ни в Squeeze.
Сыпались абсолютно непонятные мне ошибки, но проблема решилась просто:
Для Squeeze достаточно:
export LANG=C
export LANGUAGE=C
export LC_ALL=C
(проблема видимо в том, что инсталлятор в expect не понимает локализованное приглашение на ввод пароля)
Для Lenny пришлось вдобавок отказаться от определённой автоматом версии дистрибутива 5.0.9 и вручную выбрать Debian 5.0.8 (иначе сыпались дикие сообщения о недоступности internet connection и невозможности установить cups-devel, видимо Debian 5.0.9 (т.к. драйвер знает максимум 5.0.8) не считается Debian'ом, и какие пакеты обеспечивают cups-devel инсталлятор не знает).
После этих телодвижений всё заработало :)
Сыпались абсолютно непонятные мне ошибки, но проблема решилась просто:
Для Squeeze достаточно:
export LANG=C
export LANGUAGE=C
export LC_ALL=C
(проблема видимо в том, что инсталлятор в expect не понимает локализованное приглашение на ввод пароля)
Для Lenny пришлось вдобавок отказаться от определённой автоматом версии дистрибутива 5.0.9 и вручную выбрать Debian 5.0.8 (иначе сыпались дикие сообщения о недоступности internet connection и невозможности установить cups-devel, видимо Debian 5.0.9 (т.к. драйвер знает максимум 5.0.8) не считается Debian'ом, и какие пакеты обеспечивают cups-devel инсталлятор не знает).
После этих телодвижений всё заработало :)
На днях нужно было привести в порядок файлы на винчестере. Необходимые имена файлов были собраны find'ом по -iregex ".*[0-9][0-9][0-9]\/dump.rar". Найденные имена файлов были сохранены в /tmp/dumps.txt. Осталось только слить всё найденное в определённый каталог. Я быстренько наваял вот такую строчку:
perl -e 'open (IN, "</tmp/dumps.txt"); while (<IN>) { chomp ($_); system ("mv -vf '\''$_'\'' /tmp/DUMPs/"); }'
и запустил её на выполнение. Когда перемещение подходило к концу, я вдруг понимаю, что все найденные файлы переносятся в один и тот же файл /tmp/DUMPs/dump.rar. Осознав это, я примерно за 3 секунды прервал выполнение команды и отмонтировал разделы с данными.
Как восстановить данные? Файловые системы - ext3, reiserfs, xfs. Я вспомнил, что на linux.org.ru что-то в новостях пробегало про anyfs-tools. Эти утилиты мне помогли. Порядок действий:
- скачиваем с сайта проекта http://anyfs-tools.sourceforge.net/ исходные тексты.
- компилируем и устанавливаем (для Debian GNU/Linux в исходниках есть всё необходимое, так что просто: dpkg-buildpackage -rfakeroot).
- монтируем нужную файловую систему (с атрибутом ro).
- строим таблицу inode'ов:
build_it <точка монтирования нужной фс> /tmp/<файл inodов>
- запускаем реставрацию файлов:
anysurrect -i <файл inodов> -t archieve_RAR -p tmp-RAR /dev/<устройство файловой системы, например sda1> <выходной файл inodeов>
- монтируем /dev/<устройство файловой системы, например sda1> используя файловую систему any и сгенерированный на предыдущем этапе <выходной файл inodeов>
anyfuse <выходной файл inodeов> /dev/<устройство файловой системы, например sda1> /tmp/1/
- в каталоге /tmp/1/tmp-RARarchieves/RAR/ получаем восстановленные rar'ы (имена их - что-то вроде inode_2312431_block_231321).
- далее простеньким скриптиком выцепляем "живые" rar'ы (используя rar t <имя файла архива>, если $? == 0 - то архив в порядке)
- а вот дальше надо скопировать и переименовать "живые" rar'ы. разработчики anyfs-tools рекомендуют переодически собирать статистику файловой системы в виде:
<имя файла> <контрольная сумма>
при наличии файла с такой статистикой проблем с переименованием вообще не возникает.
у меня такого файла статистики не было, но по файлам в архиве можно было безошибочно вычислить имя каталога, в котором лежал архив, так что мне повезло :)
Вот собственно и всё :)
perl -e 'open (IN, "</tmp/dumps.txt"); while (<IN>) { chomp ($_); system ("mv -vf '\''$_'\'' /tmp/DUMPs/"); }'
и запустил её на выполнение. Когда перемещение подходило к концу, я вдруг понимаю, что все найденные файлы переносятся в один и тот же файл /tmp/DUMPs/dump.rar. Осознав это, я примерно за 3 секунды прервал выполнение команды и отмонтировал разделы с данными.
Как восстановить данные? Файловые системы - ext3, reiserfs, xfs. Я вспомнил, что на linux.org.ru что-то в новостях пробегало про anyfs-tools. Эти утилиты мне помогли. Порядок действий:
- скачиваем с сайта проекта http://anyfs-tools.sourceforge.net/
- компилируем и устанавливаем (для Debian GNU/Linux в исходниках есть всё необходимое, так что просто: dpkg-buildpackage -rfakeroot).
- монтируем нужную файловую систему (с атрибутом ro).
- строим таблицу inode'ов:
build_it <точка монтирования нужной фс> /tmp/<файл inodов>
- запускаем реставрацию файлов:
anysurrect -i <файл inodов> -t archieve_RAR -p tmp-RAR /dev/<устройство файловой системы, например sda1> <выходной файл inodeов>
- монтируем /dev/<устройство файловой системы, например sda1> используя файловую систему any и сгенерированный на предыдущем этапе <выходной файл inodeов>
anyfuse <выходной файл inodeов> /dev/<устройство файловой системы, например sda1> /tmp/1/
- в каталоге /tmp/1/tmp-RARarchieves/RAR/ получаем восстановленные rar'ы (имена их - что-то вроде inode_2312431_block_231321).
- далее простеньким скриптиком выцепляем "живые" rar'ы (используя rar t <имя файла архива>, если $? == 0 - то архив в порядке)
- а вот дальше надо скопировать и переименовать "живые" rar'ы. разработчики anyfs-tools рекомендуют переодически собирать статистику файловой системы в виде:
<имя файла> <контрольная сумма>
при наличии файла с такой статистикой проблем с переименованием вообще не возникает.
у меня такого файла статистики не было, но по файлам в архиве можно было безошибочно вычислить имя каталога, в котором лежал архив, так что мне повезло :)
Вот собственно и всё :)