Перейти к основному контенту

Свобода! Равенство! Упячка!

Про то, как я храню фотографии

Требования

  • Полная, стопроцентная платформенная и программная независимость. Любые продукты, хранящие фототеку в своем внутреннем формате, однозначно не подходят;
  • Группировка фотографий по альбомам;
  • Привязка альбомов к датам, сортировка альбомов по датам;
  • Возможность понять по имени альбома, что в нем содержится;
  • Наличие как минимум двух физических копий фототеки на двух независимых носителях;
  • Наличие онлайновой копии фототеки с возможностью просмотра членами семьи;
  • Инкрементальная синхронизация фототеки с онлайн-копией;
  • Возможность алгоритмически простой миграции с одной онлайн-копии на другую в случае ее закрытия/нежелательного обновления.

Реализация

Нейминг и структура локального хранилища фототеки

  • Каждый альбом представляет из себя папку с именем YYYY-MM-DD (Описание);
  • YYYY-MM-DD — дата создания альбома;
  • В скобках — краткое описание альбома из нескольких слов;
  • Альбомы разложены по годовым папкам.

Пример полного пути к папке: 2014/2014-10-10 (Вася и Лена в зоопарке)

Хранилища фотографий

  • Временный буфер — Dropbox (про него ниже);
  • Основное локальное хранилище — подключенный как сетевой диск raid-массив на дисковой станции;
  • Дополнительное локальное хранилище — usb-диск, подсоединенный к дисковой станции;
  • Онлайновое хранилище — Flickr.

Сбор и систематизация фотографий

  • Каждая очередная порция фотографий с телефона/фотокамеры сливается в Dropbox;
  • Раз в несколько недель накопившиеся фотографии систематизируются локально на одном из компьютеров и раскладываются по папкам альбомам;
  • На выходе получаем инкремент фототеки в виде N альбомов.

Инкрементальное обновление фототеки

  • Ранее полученные новые альбомы заливаются на сетевой диск;
  • Бегающий на дисковой станции по крону rsync синхронизирует добавленные альбомы с дополнительным локальным хранилищем (то есть по-просту сливает их на примонтированный usb-диск);
  • Самописный ruby-скрипт, используя Flickr-api:
    • заливает новые фотографии на Flickr;
    • объединяет их в set-ы (так Flickr называет альбомы) с именем, совпадающим с именем папки;
    • проставляет всем фотографиям дату, взятую из имени альбома;
    • навешивает на альбом теги (разбитое на слова описание в имени альбома).