Как запускать Windows программы под Mac

Если вы хотите запустить win-приложение в Mac, а устанавливать в качестве второй системы Windows через BootCamp не охота, как и заморачиваться с виртуальными машинами (Virtual Box, VmWare, etc) можно попробовать запустить windows-программу, используя одну из ниже описанных утилит.

Бесплатные:

DARWINE - http://darwine.sourceforge.net/
Winebottle - http://www.kronenberg.org/
Платные
Crossover - http://www.codeweavers.com/products/crossover/
Установленные windows приложения на вашем Mac будут работать на основе wine, портированного под Darwin-архитектуру.

Нечеткий поиск и сравнение – свалка ссылок

В случае, если необходимо сравнить две строки не строго, с совпадением один в один символ, а по принципу похожести, можно почитать примеры алгоритмов:

здесь достаточно фундаментально:

http://itman.narod.ru/

http://algolist.manual.ru/search/fsearch/

здесь непроверенные примеры для разобрать:

http://ms.by.ru/HTML/37.htm

http://www.rusdoc.ru/articles/9888/

http://forum.chertenok.ru/viewtopic.php?p=11748

http://www.prog.org.ru/topic_12509_0.html

Как обрабатывать нажатия hardware-кнопок на java в android

Добавляем этот сниппет в нашу activity и наше приложение для android сможет обрабатывать нажатия hardware-кнопок так как мы того пожелаем. В данном примере используется обработчик для нажатия кнопки “вызова” (KeyEvent.KEYCODE_HEADSETHOOK) на handsfree гарнитуре.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
        super.onKeyUp(keyCode, event);
        if (keyCode == KeyEvent.KEYCODE_HEADSETHOOK)
        {
                // ADD HERE YOUR CODE TO PROCESS PARTICULAR KEY-PRESS EVENT
                return true; //because you handle this event
        }
        return false; // allow to system handle it
}

Если вы не знаете кода кнопки для которой хотите написать обработчик – переопределите функцию onKeyDown таким образом чтобы она выводила код нажатой кнопки и всегда возвращала false:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
        super.onKeyUp(keyCode, event);
        Log.i("KEY CODE ","PRESSED KEY - "+keyCode);
        return false; // allow to system handle it
}

Как изменить размер диска в виртуальной машине VirtualBox

Если при создании очередной виртуалки для VirtualBox вы совершили преступную халатность и позабыли учесть размер всего добра, что жизненно необходимо в нее запихать и теперь катастрафически не хватает места –  воспользуйтесь вот этой командной:

VBoxManage modifyhd MyVirtualBoxImage.vdi –resize new-size-in-megabytes

общий формат команды:

VBoxManage modifyhd <uuid>|<filename>
 [--type normal|writethrough|immutable|shareable|
 readonly|multiattach]
 [--autoreset on|off]
 [--compact]
 [--resize <megabytes>|--resizebyte <bytes>]

Как конвертировать образ vmdk в vdi

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

1. Используя утилиту qemu-img из пакета эмулятора qemu. Данная команда конвертирует образ виртуальной машины, созданной в VirtualBox, в VmWare-образ.

  • qemu-img convert -f  vdi -O vmdk VirtualBoxImage.vdi VmWareImage.wmdk
    • -f – определяет формат образа виртуальной машины для преобразования
    • -O – определяет формат образа виртуальной машины в который будет преобразован текущий образ

Список поддерживаемых форматов можно посмотреть так:

qemu-img -O

Общий формат команды:

qemu-img convert [-c] [-f fmt] [-O output_fmt] [-o options] filename [filename2 […]] output_filename

2. Для преобразования виртуальной машины из одного формата в другой также можно воспользоваться встроенными средствами Virtual Box VBoxManage clonehd:

Преобразовать vmdk в vdi:
VBoxManage clonehd VmWare_Image.vmdk VirtualBox_Image.vdi –format VDI

и наоборот, виртуальную машину формата vdi в vdmk:
VBoxManage clonehd VirtualBox_Image.vdi VmWare_Image.vmdk –format VMDK

Общий формат команды: 

VBoxManage clonehd <uuid>|<filename> <uuid>|<outputfile> [–format VDI|VMDK|VHD|RAW|<other>] [–variant Standard,Fixed,Split2G,Stream,ESX] [–existing]

3. Если не охота заморачиваься с командной строкой – можно конвертировать *.vdi образы через графический интерфейс VirtualBox:

Файл->Управление виртуальными образами->Копировать
Выбираем какую *.vdi машину преобразовывать и желаемый формат (vdmk/vdi/vhd) нового образа.

4. Альтернативной всем вышеизложенным способам служит приложение VMWare vCenter Converter В добавок к возможности преобразования виртуальных машин из одного формата в другой, Converter от VmWare может клонировать систему реальной физической машины в виртуальный образ. На момент написания статьи распространяется бесплатно.

Как порезать PDF на картинки

Порою бывает необходимо “порезать” pdf-ку на картинки, так чтобы каждая страница была преобразована в JPEG-картинку. В линуксе для этого есть две полезные утилиты: pdftoppm и ppmtojpeg.

pdftoppm – обрабатывая pdf файл генерирует для каждой его страницы соответствующую картинку. Поддерживаются следующие форматы: ppm, pgm или pbm. По умолчанию используется ppm. При конвертировании можно указать диапазон страниц (флаги -f, -l), которые необходимо перевести в отдельные изображения, и даже задать координаты области на странице для преобразования (флаги -x, -y, -W, -H).

pnmtojpeg – одна из многочисленного семейства утилит pnmto* используемых для конвертации файлов формата ppm, pgm pbm во что только душе угодно.

Вот простенький bash скрипт который конвертирует pdf-файл в набор JPEG-картинок. Первый аргумент – pdf файл для конвертации, второй – папка в которую будут сложены jpeg-страницы. Если указанной директории не существовало – она будет создана. Если директория не указана – файлы будут складироваться в текущую папку.

#!/bin/bash
SUBDIR="."

usage ()
{
    echo "usage: pdf-file-name [folder-for-jpeg-page]"
    echo "splitting pdf-file to jpeg pages set"
    echo " "
    echo $errmsg
}

if [ $# -lt 1 ]
then
    errmsg="You should provide pdf file name!"
    usage
    exit
fi

if [ ! -f "$1" ]
then
    errmsg=${1}":File Not Found"
    usage
    exit
fi

if [ $# -eq 2 ]
then
    SUBDIR="$2"
    if [ ! -d "$2" ]
    then
        mkdir "$2"
        if [ ! -d "$2"]
        then
            errmsg=${1}":Can't create folder, check pemissions"
            usage
            exit
        fi
    fi
fi

echo 'starting for "' $1 '" to "' $SUBDIR '" folder'

pdftoppm "$1" "$SUBDIR"/tmp.ppm

for file in "$SUBDIR"/*.ppm
do
    echo $file
    pnmtojpeg $file &gt; ${file/%.ppm/.jpg}
    rm -f $file
done

Как звонить из java-приложения на android

Добавляем в файл-манифест приложения, разрешения на выполнение звонков

<uses-permission android:name=”android.permission.CALL_PHONE”/>

И далее используем сниппет для стандартного диалога вызова. Contacts_Phone – строка-номер вызываемого абонента.

Intent myIntent = new Intent(Intent.ACTION_CALL, Uri.parse(“tel:” + Contacts_Phone)); 
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(myIntent);

Как получить список контактов с номерами телефонов на android в java

Не забудьте добавить в файл-манифест соответствующие права для доступа к спискам контактов:

<uses-permission android:name=”android.permission.READ_CONTACTS” />

Снипет java кода для получения списка контактов из телефонной книжки с номерами телефонов.

Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[] {Phone._ID, Phone.DISPLAY_NAME, Phone.NUMBER}, null, null, null);
startManagingCursor(cursor);

if (cursor.getCount() > 0)
{
    while (cursor.moveToNext())
    {
        // process them as you want
        Log.i("DATA"," ID "+cursor.getString(0)+" NAME"+cursor.getString(1)+" PHONE "+cursor.getString(2));
    }
}

Анализ и восстановление данных с винчестера

Полетел винт. В BIOSе винчестер определяется. Но не видятся логические диски или Windows радушно предлагает их отформатировать? А данные ой как нужны. Что делать?

Подключаем его к другому компьютеру как дополнительный винчестер – вполне возможно что у вас капризничает материнка или ОС. В примерах ниже, если это не оговорено, в качестве операционной системы используется линукс. Подключаем, если это возможно, не через usb, а напрямую к материнской плате, через sata/ide  разъемы. Если есть несколько шлейфов sata/ide – попробуйте каждый – иногда проблема бывает именно в некачественном шлейфе.

Встречал рекомендации переворачивать винчестер и ставить на него дополнительный кулер. Возможно, в иных случаях, это действительно может помочь успешно подмонтировать винчестер, а вам – сохранить данные без необходимости прибегать к специальным средствам.

Если винчестер внешний и подключается только через USB – подключайте его сзади системника. Если не хватает напряжения – передние usb-порты страдают от этого первыми, в такой ситуации, например, флешки, могут примонтироваться только в read-mode.

Подключили? Проблема все та же? Данные все так же нужны?

Тогда действуем прям по списку:

1. Определяем идентификатор винчестера

Для дальнейшей работы с проблемным винчестером необходимо узнать его идентификатор в системе (это название вида /dev/sd*, где * – буква a-z). Цифры после третьей буквы – номер обнаруженного раздела. Таким образом /dev/sdg – идентификатор винчестера, а /dev/sdg5 – один из его разделов. Определить идентификатор винчестера в системе можно несколькоми способами:

Если разделы винчестера корректно определяются системой – можно воспользоваться утилитой fdisk:

sudo fdisk -l|grep NTFS

/dev/sda1   *           1        1030     8271872    7  HPFS/NTFS
/dev/sda2            1030        6130    40962045    7  HPFS/NTFS
/dev/sda5            6130       91202   683336704    7  HPFS/NTFS
/dev/sdb5               1      807237  1953511424    7  HPFS/NTFS
/dev/sdd1               1      182402  1465135104    7  HPFS/NTFS

Данная команда выведет информацию по всем NTFS разделам всех жестких дисков и вам останется только выбрать диск с проблемным разделом.

Если же система не может распознать что за файловая система расположена на винчестере можно воспользоваться утилитой lshw, выводящей детальную информацию о любой железке:

lshw -C disk -short

H/W path                 Device       Class       Description
=============================================================
/0/100/1c.4/0/0.0.0      /dev/sdc     disk        320GB ST3320620A
/0/100/1f.2/0.0.0        /dev/cdrom1  disk        DVD RW AD-7260S
/0/100/1f.2/0.1.0        /dev/sda     disk        750GB WDC WD7501AALS-0
/0/100/1f.5/0.0.0        /dev/sdb     disk        2TB WDC WD20EARS-00S
/0/1/0.0.0               /dev/sdd     disk        2TB SCSI Disk
/0/2/0.0.0               /dev/sde     disk        32GB SCSI Disk

Вывод данной команды будет содержать краткую информацию по всем винчестерам, вам необходимо выбрать  идентификатор жесткого диска, данные с которого необходимо восстановить.

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

Если ничего из вышеописанного в системе нет и установить по каким-то причинам невозможно – идем “в лоб”:

cat /proc/partitions и cat /proc/mount

и сравнивая списки успешно примонтированных разделов со списком всех обнаруженных разделов – выбираем идентификатор винчестера при работе с которым возникли трудности.

Зная идентификатор винчестера – мы можем его продиагностировать – какого рода болезнь его одолела – софтверного или хардверного толку.

2. Проверяем винчестер на bad-blocks

Во всех примерах ниже, используемый идентификатор жесткого диска – /dev/sda необходимо заменить на идентификатор вашего винчестера, полученный на предыдущем этапе. Учтите – все подробные проверки могут выполняться долго, конкретное время зависит от объема вашего жесткого диска, оставлять его на ночь – обычная практика и то, не все проверки успевают завершиться.

1) с помощью утилиты badblocks пакета e2fsprogs:

badblocks -nvs /dev/sda

или использовать флаг -e 1 – тогда программа закончить проверку при первом же найденном поврежденном секторе. Проверка осуществляется независимо от SMART. Важно указать флаг -n – в таком случае проверка будет производиться в “мягком” режиме не разрушая данные. флаги -s и -v служат для подробного отображения хода проверки.

2) С помощью утилит пакета smartmontools. Применима только для устройств поддерживающих SMART – т. е. для подавляющего большинства современных жестких дисков.

Быстрая проверка:

smartctl -H /dev/sda
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

К сожалению даже благополучный диагноз PASSED еще не значит, что винчестер механически здоров, потому проверим, были ли ошибки во время работы:

smartctl -l error /dev/sda
=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
No Errors Logged

Показать общую информацию о жестком диске:

smartctl –all /dev/sda

Атрибуты SMART на которые необходимо обратить внимание. Чем меньше их значение (столбец RAW_VALUE) – тем лучше здоровье нашего винчестера.

Raw Read Error Rate – частота аппаратных ошибок при чтении данных с диска.
Spin Up Time – время раскрутки пакета дисков из состояния покоя до рабочей скорости.
Spin Up Retry Count – число повторных попыток раскрутки дисков до рабочей скорости, в случае если первая попытка провалилась.
Seek Error Rate – частота ошибок при позиционировании блока головок.
Reallocated Sector Count – число операций переназначения секторов.
Reallocated Event Count – число операций переназначения
Current Pending Sector – число подозрительных секторов, кандидатов на переназначение.

В частности, если при выполнении команды

sudo smartctl -a /dev/sda|grep -i reallocated
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       –       0

последняя цифра не равна нулю – у нас на лицо проблемы аппаратного характера.

Перед тем как провести детальное тестирование, полезно знать сколько оно будет продолжаться:

smartctl -c /dev/sda

Вывод будет длинный. Важные для нас строчки:

Short self-test routine
recommended polling time:        (   2) minutes.
Extended self-test routine
recommended polling time:        ( 185) minutes.

Если smartctl не выводит нужную нам информацию и не запускает проверки – проверьте – быть может именно у вас тот винчестер что не поддерживате SMART? Проверьте, что в выводе команды smartctl -c /dev/sda в разделе “Offline data collection capabilities” есть отметка о “Self-test supported” – это подтверждает, что проверяемый винчестер поддерживает SMART. Если smartctl не понимает какой у вас винчестер можно ей помочь указав через флаг -d (–device=) его тип. Наиболее распространенные: ata/scsi/sat, полный список в man smartctl.

Запуск краткого тестирования:
smartctl -t short /dev/sda
Запуск подробного тестирования:
smartctl -t long /dev/sda
Вывод результатов тестирования:
smartctl -l selftest /dev/sda

Вот там разобраны некоторые интересные моменты по смарт-технологии:
http://sourceforge.net/apps/trac/smartmontools/wiki/FAQ

3) Программы сканирующие жесткий диск на наличие bad-блоков для Windows:
MHDD, Victoria, Vivard

3.1 Если на винчестере не обнаружено bad-секторов, но файловая система повреждена и ее необходимо восстановить.

То есть нам нужны не только данные, но и их названия, системные файлы, программы, дерево папок и т.п.

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

1) для NTFS-разделов запустить из под Windows

chkdsk /f DRIVE-LETTER: (chkdsk /f C:)

/f  – этот флаг указывает, что необходимо исправлять ошибки на жестком диске
DRIVE-LETTER – буква диска

2) Под линуксом для NTFS разделов есть утилита ntfsfix из пакета ntfsprogs. Запускать как:

ntfsfix /dev/sda

По моему опыту – родная проверка из под Windows в большинстве случаев оказывается более эффективной.

3) Под линуксом, если файловая система линукс-специфичная, можно попробовать запустить e2fsck с флагом -c (или -cc) будет проведена проверка всего диска. Все найденные поврежденные сектора будут занесены в специальный список и не будут доступны для работы.

4) Под линуксом для других типов разделов необходимо использовать утилиту fsck. Она самостоятельно пробует определить тип файловой системы и соответствующим образом проводит проверку и восстановление структуры файловой системы.

5) Если все вышеописанное не помогло – обратимся к тяжелой “артелерии” – утилите testdisk:

  1. Запускаете програму testdisk (testdisk.exe под Windows)
  2. Выбираете создать новый лог-файл (при перезапуске выбирайте пункт “Добавлять к существующему”, это позволит возобновлять остановленные проверки не с начала)
  3. Выбираете диск для анализа
  4. Выбираете тип раздела (для обычных бытовых винчестеров скорее всего обычный Intel)
  5. Выбираем первый пункт – Analyse
  6. Далее вам будем отображена текущая разметка диска – если вас не устраивает, что вы видете – выбирайте пункт “quick search” при выборе которого запускается быстрая проверка винчестера на предмет поврежденных разделов
  7. Как правило быстрый поиск ничего не дает и приходится прибегать к deeper search, который занимает существенно больше времени однако, если на винчестере нет механических повреждений способен эффективно восстанавливать структуру файловой системы.
  8. После завершения поиска полезно проверить содержимое разделов – нажимаем кнопку P и изучаем список обнаруженных на разделе файлов.
  9. Если результаты нас устраивают – найденным разделам, которые нам нужны, с помощью стрелок “влево-вправо”, необходимо присвоить соответствующий статус. L – логический, * – загрузочный и т.д. Некорректные разделы – помечаем как D – deleted – удаленные.
  10. Важно после этого записать все изменения разметки диска – выбираем пункт write
  11. Перезагружаемся
  12. Если же результаты нас не устраивают – придется вручную указывать характеристики диска – число цилиндров, тип файловой системы и после этого вновь запускать глубокий поиск.

В том случае, если NTFS раздел не определяется после восстановления структуры с помощьюtestdisk, необходимо, после перезагрузки в Windows, запустить “родную”  проверку диска – chkdsk.

Вот там прекрасное описание (на английскомй) со скриншотами: http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step

Платные утилиты:
Acronis Disk Director, Active Partition Recovery

3.2 Если винчестер без bad-секторов, файловая система повреждена, но нам нужны только данные и необходимости восстанавливать сам раздел нужды нет.

Для восстановления данных из разделов мы можем использовать следующие утилиты:

Photorec, foremostscalpel, scrounge-ntfs – детальное описание в разделе 5: Как восстановить данные с жесткого диска или образа диска применительно к созданному образу винчестера. Для восстановления данных непосредственно с устройства, порядок действий тот же, просто вместо файла содержащего побайтовую копию накопителя, необходимо указывать идентификатор устройства.

под Windows:
Recuva

Платные:
Get data back, R-studio

4. Что делать если на винчестере обнаружены bad-блоки?

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

Копируем жесткий диск:

1 вариант – с помощью dd:

dd if=/dev/sdg of=/dev/sda bs=8K conv=noerror,sync

/dev/sdg – ЧТО будем зеркалить
/dev/sda – КУДА будем зеркалить
bs=8K – указываем размер блоков данных для считывания/записи.
noerror  – флаг указывает что не смотря на ошибки копирование должно быть завершено
sync – флаг указывает, что в проблемные блоки можно понавтыкать нулей, чтоб не возникло смещений на приемнике.

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

В общем случае, достаточно такой последовательности команд:

Копируем свободные от ошибок блоки данных:

ddrescue –no-split /dev/sdg /path/to/image-file/image-file /path/to/log-file/log-file

Далее пробуем считывать проблемные сектора добавляя вычитанные данные к существующему образу и используя созданный на предыдущем шаге лог-файл.

ddrescue –direct –max-retries=3 /dev/sdg /path/to/image-file/image-file /path/to/log-file/log-file
ddrescue –direct –retrim –max-retries=3 /dev/sdg /path/to/image-file/image-file /path/to/log-file/log-file

–no-split – указываем заполнять не считанные области нулями (в расчет на то, что при последующей попытке удастся часть данных считать)
–max-retries – максимальное число попыток считывания
–direct -считываем напрямую с устройства, не используя данные считанные на предыдущих этапах из кеша
–retrim – помечаем все битые блоки

Там достаточно подробно описаны детали использования утилиты ddrescue в зависимости от ядра линукс системы, которые вы используете: http://www.forensicswiki.org/wiki/Ddrescue

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

5. Как восстановить данные с жесткого диска или образа диска.

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

Итак, у нас есть:

/user/home/badhdd.img – копия винчестера, которую мы побайтово считали на предыдущем (линк) этапе (можно использовать и идентификатор проблемного жесткого диска – /dev/sdw).
/dev/sdz – чистый диск, на который мы будем записывать всю информацию найденную на копии жесткого диска.

Очищаем диск-приемник:

dd if=/dev/zero of=/dev/sdz bs=8K (аккуратней – эта команда удаляет ВСЕ данные на вашем винчестере)

Теперь пришла пора искать данные:

1). Используя утилиту foremost – мощный инструмент для поиска скрытых данных на шифрованных разделах. Общий формат команды:

sudo foremost -i (address of corrupted hard drive) -o (address of external drive) -T -v

в нашем случае будет:

sudo foremost -i /user/home/badhdd.img -o /dev/sdz -T -v

-T – временная метка будет добавлена к имени выходного каталога, что исключает возможность перезатирания восстановленных данных при повторном перезапуске
-v – verbose mode –  при работе будет выводиться подробная информация

Можно указать искать файлы определенного типа (флаг -t), указать искать заголовки файлов, пропустив заданное число блоков в начале устройства (флаг -s), для ускорения процесса можно указать флаг -k размер блока данных считываемый в память. Перед началом анализа полезно запускать foremost с флагом -w – будет выведен список обнаруженных файлов, которые foremost может попытаться восстановить.

2) scalpel – аналог foremost, ориентированный на слабые машины.

3) Программа photorec, ее интерфейс очень похож на testdisk:

  1. Запускаем photorec (photorec.exe под windows)
  2. Выбираем интересующий нас диск
  3. Выбираем тип раздела (в большинстве случаев, для бытовых винчестеров – Intel)
  4. Выбираем раздел диска в котором хотим искать данные
  5. В разделе FileOpt мы можем выбрать какие типы файлов мы хотим восстанавливать
  6. Далее мы выбираем в какой файловой системе на выбранном ранее разделе хранятся наши данные
  7. Выбираем где искать данные – во всем разделе или только в области помеченной как нераспределенная
  8. Наконец выбираем куда сохранять найденные данные

Подробное описание со скриншотами на английском – там – http://www.cgsecurity.org/wiki/PhotoRec_Step_By_Step

Photorec может быть запущена для анализа образа диска как:

photorec /path/to/my-image/image.dd

6. Ссылки по теме восстановление данных с винчестера

Список утилит для восстановления данных – http://www.forensicswiki.org/wiki/Tools:Data_Recovery

Подробная статья про восстановление данных используя Ubuntu:  https://help.ubuntu.com/community/DataRecovery

Неплохие статьи про восстановление информации:

http://www.howtogeek.com/howto/15761/recover-data-like-a-forensics-expert-using-an-ubuntu-live-cd/

http://geekyprojects.com/storage/how-to-recover-data-even-when-hard-drive-is-damaged/

Здесь подробно расписано про восстановление данных с файловых систем ext2/ext3/ReiserFS: http://smartmontools.sourceforge.net/badblockhowto.html

Любопытный пример описания того, как извлечь скрытые данные с помощью foremosthttp://mydebianblog.blogspot.com/2007/01/1-foremost.html

В интернетах бродят сборки всяческих средств для восстанавления данных – можно искать по этим словам:
alkid live cd
rescue cd – http://www.sysresccd.org/Main_Page

Записки ремонтника:

http://nnm.ru/blogs/X-Hunter777/zapiski-remontnika-iz-rabochego-zhurnala/
http://nnm.ru/blogs/X-Hunter777/zapiski-remontnika-iz-rabochego-zhurnala-chast-2/

SCP – удаленное копирование через SSH

Как копировать файлы с удаленного компьютера если есть только ssh?

В Линуксе для этого есть специальная утилита – приемница cp, – scp или secure cp.

Команда:
scp file-name your-user@where-ip:/my/cosy/directory

скопирует файл file-name из текущей директории вашего ПК на машину с айпи-адресом where-ip в директорию /my/cosy/directory под тем же именем file-name.

При указании относительных путей – помните, что для удаленноо компьютера, текущей директорией (./) будет домашняя директория пользователя, под которым осуществляется соединение (в примере выше – your-user).

Если необходимо использовать не стандартный порт для ssh (не 443) – указываем его после флага -P (да, P заглавная). Маленькая -p используется для указания сохранять время изменения всех файлов.
Если необходимо скопировать директорию со всем содержимым – указываем флаг -r.

Как скопировать директорию со всем содержимым на удаленный компьютер:
        scp -P port-number -r <your-local-folder> your-user@where-ip:<where-remote-desired-path>

Как скопировать директорию со всем содержимым с удаленного компьютера на локальный:
        scp -P port-number -r your-user@where-ip:<your-remote-folder> <where-local-desired-path>