Отформатировал как-то раз мой коллега свой внешний USB-HDD, а потом оказалось, что на нем до этого хранился семейный видео- и фото-архив за несколько лет. В единственном экземпляре. С такой проблемой этот коллега обратился ко мне. Погуглив на тему восстановления данных в Linux, я нашел Testdisk, но как-то не сложилось у меня с ним — то ли вопросов в его настройках перед собственно восстановлением много было, то ли мне лень было на них отвечать, в общем не пошло. Но параллельно с Testdisk я узнал о существовании еще одного программного обеспечения по восстановлению данных от этого же производителя — Photorec. Он то мне и помог, и, хотя есть подробнейшее руководство по его использованию, опишу шаг за шагом, что же сделал я и как в итоге у меня получилось не просто восстановить данные, но и довольно удобно рассортировать полученное, отделив мусор от нужных данных.
Итак,
Подключаем наш USB-HDD или USB-флеш, или любой другой носитель, с которого нужно восстановить потерянные данные.
1. Устанавливаем Testdisk из Центра приложений Убунту, или в терминале:
sudo apt-get install testdisk
Вместе с testdisk установится и photorec.
2. Запускаем photorec из терминала:
sudo photorec
В окне терминала появится информация о запущенной программе и список обнаруженных носителей информации, переход между которыми осуществляется стрелками вверх\вниз, выбор — «Proceed», отмена — «Quit» :
Выбираем нужный нам носитель и нажимаем «Enter».
3. Далее появится окно с выбором обнаруженных разделов носителя:
Если их несколько — то стрелками выбираем нужный и нажимаем «Enter», и тем самым переходим к выбору типа файловой системы на нужном разделе:
4. Если файловая система носителя — ext* (Линукс-подобная система) — выбираем пункт [ext2/ext3], иначе выбираем пункт [Other…], нажимаем Enter. Я выбрал пункт 2, т.к. мой носитель был отформатирован в Windows и файловая система его — Fat.
5. Далее попадаем в окно выбора пространства для поиска: — либо произвести поиск в пространстве не занятом файловой системой — пункт [Free], либо искать на всем разделе — пункт [Whole]:
Я выбрал второй пункт, затем открыл свой файловый менеджер и на разделе другого носителя, не того, с которого восстанавливаем данные, создал каталог для вывода результатов восстановления. Свободного места на этом носителе должно быть НЕ МЕНЬШЕ, чем объем раздела, с которого восстанавливаем данные, затем вернулся к окну с photorec и нажал «Enter».
6. В следующем окне Photorec вывел для выбора список каталогов, куда будут сохранены результаты восстановления. Стрелками вверх\вниз выбираем каталог, созданный в предыдущем пункте:
И нажимаем клавишу «C».
Процесс восстановления запустится и в окне начнет выводиться отчет о найденных, восстановленных файлах, их тип и количество:
Маленький раздел (8 Гигабайт) восстанавливался несколько минут, внешний USB-HDD на 500 Гигабайт восстанавливался около 8 часов на моем HP 4530s c 64-битной Ubuntu 12.04.
В результате «Восстановительной работы» Photorec я получил 350 Гигабайт файлов с названиями типа «f0185280.*» где «*» — расширение файла, сложенных примерно по 500 или 1000 штук в каталоги с названием типа recup_dir.1, recup_dir.2. Мне нужно было отобрать среди них фотографии и видеофайлы.
Воспользовавшись программой Krename (установить можно из Центра приложений Убунту), я переместил все найденные Photorec-ом файлы в один каталог, попутно переименовав их по дате их создания:
1. открываем Krename:
2. Нажимаем на ссылку по середине окна «Add some files» или на кнопку «Добавить» в меню справа.
3. Выбираем в окне открывшегося файлового менеджера один или несколько (с нажатой клавишей Shift или CTRL) каталогов, файлы из которых необходимо переименовать и переместить:
3. Переходим на вкладку «Destination» сверху, выбираем радиокнопку «Copy files to destination directory», и прописываем или выбираем каталог для сохранения файлов (у меня это /home/alex/1):
4. Переходим на вкладку «Filename», на подвкладке «Advanced filename» в поле «Шаблон» ставим курсор перед значком доллара, нажимаем в конце строки с этим полем кнопку «Функции»:
5. Среди огромного количества возможных шаблонов переименования в правой колонке выбираем пункт «Date and system functions» а в левой «[creationdate;yyyy-MM-dd]»:
нажимаем «Insert» и в основном окне программы в нижней части появляется список предварительных вариантов переименованных файлов типа «2012-10-05f2326902.mp3»:
Нажимаем «Готово» и ждем пока программа переименует и переместит все файлы в каталог /home/alex/1.
Стоит отметить, что Krename может извлечь все доступные данные о файле (дату и место создания, разрешение, частоту и т.п.) и поместить их в название файла.
Все восстановленные Photorec-ом файлы я переименовал и собрал в один каталог, теперь нужно отделить фото и видео от остальных, ненужных мне файлов, для чего я воспользовался найденным на просторах интернета и немного модифицированным мной скриптом:
#!/bin/sh
ARCHIVE=/home/alex/sorted
# Путь, где складывать результаты сортировки
for f in "$@"; do
# Для всех файлов, каталога, откуда запущен скрипт
DT=$(exiftool -s -DateTimeOriginal "$f")
# Извлечь в переменную DT дату съемки видео или фото
YEAR=$(echo $DT|awk '{print $3;}'|awk -F: '{print $1;}')
# Извлечь в переменную YEAR год съемки
MONTH=$(echo $DT|awk '{print $3;}'|awk -F: '{print $2;}')
# Извлечь в переменную MONTH месяц съемки
TARGET="$ARCHIVE/$YEAR/$MONTH"
install -d "$TARGET" && \
install "$f" "$TARGET"
# Создать каталог для файла
echo "$f -> $TARGET"
# Скопировать файл
done
Приведенный выше код нужно скопировать в текстовый файл, сохранить в каталог с нашими восстановленными и переименованными данными как, например, файл sorting.sh, дать ему права на исполнение либо из терминала:
sudo chmod "+x" /home/alex/1/sorting.sh
либо в свойствах файла в файловом менеджере на вкладке «Права доступа» поставить галочку «Сделать исполняемым»:
Далее в терминале переходим в каталог с данными и скриптом:
cd /home/alex/1
И запускаем скрипт:
sh /home/alex/1/sorting.sh *
В результате его работы в каталоге «/home/alex/sorted» (первая переменная в скрипте — подставьте сюда свое значение) появятся подкаталоги с названиями ..2009, 2010.., внутри которых будут созданы подкаталоги 01,02,03..12 , внутри которых будут помещены фото и видео, сделанные в соответствующий период времени.
Все остальные файлы, которые не имеют параметра «exiftool DateTimeOriginal» — т.е. те, которые были созданы не камерой или фотоаппаратом, а каким-то другим путем — поместятся в корень каталога /home/alex/sorted.
Фото и видео могут быть помещены в неправильные каталоги по годам типа 2036 и т.п. — если на камерах, с которых производилась съемка была неправильно выставлена дата.
Снимки и видео не содержащие exif мета-данных — тоже сочтутся мусором и будут помещены вне каталогов сортировки.
Да, описанный выше метод перенасыщен излишними телодвижениями и может, скорее всего, быть заменен всего одним скриптом, но, как я с самого начала упомянул, в скриптописании я не силен, поэтому пришлось вот так вот долго, через гору костылей восстанавливать данные. Не рационально, зато результативно. Все фотки и видео были восстановлены и возвращены владельцу) а я в процессе познакомился и поработал с мощными и полезными инструментами.
doors.txt;10;15