Каталогизация дискохранилища

Идея каталогера, который бы сохранял на диске содержимое моей библиотеки (медиатеки? информатеки? дискохранилища?) dvd не отпускала меня с тех самых пор, как я перебрался на убунту. Конечно, Cathy прекрасно работала под wine-ом, и вполне справлялась с теми задачами, которые на нее были возложены еще в старой системе. Некоторое время у меня крутилась в голове идея обобщенного скрипта на Питоне, однако в конце-концов на Хабре появился пост, который расставил все по своим местам. Главной оказалась идея о том, что файловую структуру диска без особых хлопот можно получить через find.

11го марта я написал на базе того, что было описано на Хабре свой вариант скрипта. Главное отличие в том, что мне хотелось большего автоматизма. Свои диски при записи я как правило называю вполне внятными именами (чего по моим наблюдениям многие не делают), которые пишу маркером на дисках же. Т.е. диск с именем video20100327 будет подписан соответствующе и вполне однозначно привязан к системе обозначений (другое дело что кроме video20100327 на него можно дописать всякой пояснительной информации).

Вот что получилось в моем варианте:

#! /bin/bash

# получаем название диска и путь куда сохранить каталог
# в моем случае - это будет ~/hive/cat

A=$(isoinfo -i /dev/cdrom -d | grep "Volume id" | sed "s/^.*: //g") && \
h=$'/home/vik/hive/cat/' && \

# информируем пользователя о том что и куда пишем
echo $A
echo $h$A

# создаем файл-каталог текущего dvd
# туда складываем заголовок: название диска, дату создания
# и линейку-разделитель

touch $h$A.kat && \
echo 'disk: '$A > $h$A.kat
date +%Y-%m-%d' '%H:%M >> $h$A.kat
echo '=============================================================' >> $h$A.kat

# получаем содержимое диска, сортируем его по порядку,
# обрабатываем его sed'ом - убираем лишнюю информацию
# и лишний кусок пути после чего сливаем содержание в файл-каталог

find /media/cdrom0 | sort | \
                            sed -e '1d' -e 's=/media/cdrom0/==g' \
                                >> $h$A.kat && \

# извлекаем диск - очень удобно когда каталогизируется множество дисков
# если мешает - можно закомментировать.
eject

В принципе вот и все. Таким макаром подбираются файлы название которых соответствует названию диска, а содержимое — файловому дереву диска. Так же появилась (в отличие от Cathy) возможность разложить «файлы-диски» по «папкам-бандлам», где каждой папке соответствует реальный пластиковый футляр с дисками — сразу становится понятно где и что искать.

Каталогизация идет примитивно — на панель GNOME уже описанным методом вытащена кнопка. Диск вставляется. Я жду пока система смонтирует его, кликаю по кнопке, пауза… диск сам извлекается обратно. После чего файл перекладывается в нужную папку.

К сожалению не все человеки разделяют мою манию ставить на дисках информативные имена (особенно этим грешит сэр Хайвей — как только не называются его диски). Но файл диска всегда можно переименовать вручную.

Искать можно, например, способом описанном в статье на хабре. Лично я просто пользуюсь grep’ом. Эта система очень хорошо описана в статье про греп и словари — кстати, очень рекомендую.

В приложении к дискам это может выглядеть например так. Мне хочется вспомнить где у меня лежат Карпатские фотографии 2008-го года.

vik@firefly:~/hive/cat$ grep -R 2008.*Карпаты *

(-R означает «искать рекурсивно во всех подкаталогах»)

Получаем:

gifs20050403trave/FOTO20080620.kat:20080425 - 0503 - Поход в Карпаты
gifs20050403trave/FOTO20080620.kat:20080425 - 0503 - Поход в Карпаты/DSC08224.JPG
...
gifs20050403trave/FOTO20080620.kat:20080425 - 0503 - Поход в Карпаты/MOV08356.MPG
gifs20050403trave/FOTO20080620.kat:20080425 - 0503 - Поход в Карпаты/MOV08356.THM
gifs20050403trave/FOTO20080620.kat:20080425 - 0503 - Поход в Карпаты/Фото Антона
gifs20050403trave/FOTO20080620.kat:20080425 - 0503 - Поход в Карпаты/Фото Антона/DSC03273.JPG
...
gifs20050403trave/FOTO20080620.kat:20080425 - 0503 - Поход в Карпаты/Фото Антона/MOV03416.MPG
gifs20050403trave/FOTO20080620.kat:20080425 - 0503 - Поход в Карпаты/Фото Антона/MOV03416.THM
gifs20050403trave/TRAVE20080711.kat:accounts/20080426 Карпаты Абордажная Команда Boarding Party
gifs20050403trave/TRAVE20080711.kat:accounts/20080426 Карпаты Абордажная Команда Boarding Party/01.JPG
gifs20050403trave/TRAVE20080711.kat:accounts/20080426 Карпаты Абордажная Команда Boarding Party/02.JPG
gifs20050403trave/TRAVE20080711.kat:accounts/20080426 Карпаты Абордажная Команда Boarding Party/03.JPG
...
sper20060105_20081209/SPER20081208.kat:ferbot2/accounts/20080426 Карпаты Абордажная Команда Boarding Party
...

То есть фотографии (и отчеты, которые попутно нашлись) лежат в бандлах с наклейками «gifs20050403trave» и «sper20060105_20081209» соответственно и называются «FOTO20080620.kat», «TRAVE20080711.kat» и «SPER20081208.kat». Спером у меня называются бэкапы по давней традиции. Снимаем с полки нужные бандлы и достаем соответствующие диски.

Приятная особенность, которая выяснилась по ходу дела. Неделю назад я поставил себе MetaTracker — настольную поисковую систему, вроде GoogleDesktop сотоварищи. Когда понадобилось найти книгу — выяснилось, что он просканировал и мою библиотеку на дисках и искал название в том числе и по ней. В итоге я не покидая из трекера получил все координаты нужного мне источника — поскольку название файла и папка где он лежит прямо указывали на нужный dvd. Plain text традиционно рулит и педалит.

Реклама

9 Responses to Каталогизация дискохранилища

  1. Да, тема сама по себе интересная и стоящая остро. У меня в частности тоже.

    Хотя на самом деле у меня оно стоит острее несколько в иной плоскости: основная часть дисков у меня — это фильмы. С фото все просто: на дисках подписаны года и месяцы записанные на них и все они лежат в отдельном чехле и по порядку. :) Так что тут искать особо проблем нет. А вот фильмы… С ними все сложнее. Большинство из них — это dvd, сканировать на содержание их методом, описанным тут — не вижу смысла. Гораздо интереснее знать где сейчас этот диск: отдан кому-то и где лежит. С отданными еще как-то можно решить проблему, главное отмечать всегда что и кому отдал. А вот с физическим местоположением пока проблема не решаема. :( Видел на инете медиатеки для дисков, с управлением от компа. Но стоят они — я молчу сколько. :( Да и емкость оставляет желать лучшего: что такое сейчас 30-60 дисков? :( В общем даже была мысль сделать такого робота самому, но пока это только на уровне мыслей…

  2. Я под них выделил бывшую книжную полку. Теперь все что есть тусуется там :) с другой стороны все зависит от разных параметров — сколько дисков, в коробках ли они или сами по себе.

    А у меня основная проблема была в электронных библиотеках — много книг на dvd и не хочется терять :) Поэтому и такой подход получился.

  3. Я сейчас в основном в банках их держу, не шпинделях. И может было бы все как и у тебя, но у меня есть дома еще как минимум 2 «пользователя», которые распихивают диски как попало. :)))

  4. Упс… Хотел сюда ответить, а вышло общим комментом. :)

  5. Аааа, это знакомая ситуация :)) У меня был приятель у которого было несколько длинных шпинделей и можно было прийти, перебрать и что-нибудь утащить «на посмотреть».

    Пользователи это здорово :)))

    (задумался о том, что может быть из фильмов на дисках) При современных интернетах даже у нас в провинции я задумываюсь о том что в принципе много видео для счастья и не нужно :) Или это что-то редкостное? :)

  6. сам еще не привык к системе комментов :)

  7. Ну я сохраняю на диски только то, что буду еще пересматривать не раз. Например старые советские фильмы. Редко, но встречаются иностранные фильмы, как например «Моя прекрасная леди», «Амели» или «Вспомнить все». :) Куча мультфильмов сыну. В общем как это не странно, но дисков довольно много. Точно не пересчитывал, но думаю несколько сотен.

  8. […] те мелочи, которых мне не хватало – чайный таймер, быстрый каталоггер дисков, я научился работать с djvu (что было очень критично для […]

  9. […] – наши лучшие друзья. Что самое приятное – мой каталоггер вообще может работать с такой системой напрямую, но […]

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: