March 18th, 2010

404

(no subject)

Внезапно всплыл косяк с mailman. При переносе mailman с bsd на linux, переносились и архивы. (/var/lib/mailman/archive).

При этом сохранялись права (циферки!) для архивов. Итог - mailman молча обламывался с записью в архив (он хочет писать от пользователя www-data, а права у пользователя '81'). Новые архивы создавались как положено, а в старые не писалось.


Алсо, как найти все файлы, у которых пользователи не существуют? (т.е. id в цифровой форме)
404

Как пропатчить #anime под FreeBSD

Итак, вторая часть. Первая вот.

Как аниме хранится?

Как я уже сказал, для скачивания есть отдельный раздел - /srv/deluge. Для скачанного же, и многих терабайт неразобранного, есть раздел /srv/anime. Который представляет из себя LVM на 4 винта, с свободным хвостом (не выданным ни одному разделу) примерно в 200Гб (на этом же LVM у меня и /home, кстати, находится).

На каталог anime сделан линк из /pub. Все операции идут с /pub.

Итак, структура каталогов:

/pub/anime/in - сюда сваливается всё входящее из описанного ранее автоматического скачивания.
/pub/anime/ongoing - каталоги с онгоингом.
/pub/anime/stalled - онгоинг второй свежести.
/pub/anime/drop-samples - разные особо хорошо пахнущие отрывки даба, дропнутых (до состояния, когда их даже не холдят) вещей и т.д. Обычно оставляется 1-2 файла для примерного представления что это такое.
/pub/anime/uncomplete - неполные вещи (которые в природе есть комплитами).
/pub/anime/sort - сюда попадает то, что слишком долго лежит в in.
/pub/anime/sort_hard - сюда попадает то, что не удалось разобрать по названию. Например, овашки, слеенные в одну серию с непонятным годом выхода, или названия, которых не знает анидб и т.д.
/pub/anime/write - то, что ждёт записи на HDDLib.

Есть ещё пара служебных каталогов (типа, write-old-names для криво названных сериалов или openings для коллекции).

Основной принцип для каталогов ручной раскладки - это anidb titles. Т.е. в in он может называться как угодно - но как только он попадает в ongoing, то называется СТРОГО в соответствии с названием на anidb. Дополнительно могут дописываться опознавательные признаки (например, год, количество серий, иногда даже что-то вида [33 of 140] (число эпизодов)).

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

(001-266) One Piece [KF]
(266-293) One Piece [ADC-elites]
(294-331) One Piece [Vegapunk]
(332-336) One Piece [INP]
(337-340) One Piece [Vegapunk]
(341-374) One Piece [INP]
(375-393) One Piece [Nakama-Fansubs]
(394) One Piece [IMP]
(395-427) One Piece [yibis]
(428-429) One Piece [GLFS]
(430-439) One Piece [yibis]

Делается это для возможности быстрого нахождения серии по номеру и оценки того, "кого больше". Например, в вышеприведённом примере, 394ая серия от IMP'ов так и просится на замену. Так же как и 428-429 от GLFS.

Исторически, есть трудноразбираемые дебри, например, гандамы. Для них сделан каталог /pub/anime/collection. Там же, кстати, лежит Миядзаки, короткометражки от 4c и Лупан (пока я его не соберу целиком).

Ключевой же "фишкой" коллекции является HDDLib. О том, как он работает позже, а пока о том, как он индексируется. Это делает скрипт (напишу чуть позже), который в каталоге /pub/HDDLib делает каталоги с названиями томов и с полной копией файловой системы каждого тома. Но, с файлами нулевого размера.

Есть простенький скрипт, al, который делает find по каталогам /pub/anime и /pub/HDDLib.

Поиск тайтла обычно выглядит так:

al Sora

(после чего умираем в километрах найденного).

Так что реальный поиск выглядит так:

al Sora|grep -i kakeru

Благодаря явной структурированности, можно легко находить по критериям. Например

al Sora|grep -i kakeru |grep -v HDDLib|grep -v write

даст нам все файлы сериала, не находящиеся в упорядоченных комплитах.

А дальше, я уже писал чуть раньше, есть два простых алиаса:

alias xmv='xargs -d "\\n" mv -t'
alias xrm='xargs -d "\\n" rm -r'


Которые позволяют делать так:

al Sora|grep -i kakeru |grep -v HDDLib|grep -v write|xrm

(убивает все дапы, не находящиеся в комплитах)

Или вот так:

al Sora|grep -i woto|grep -v HDD|xmv /pub/anime/ongoing/Sora\ no\ Oto/


Вот в этом месте есть элемент несовершенства: выбирать автоматом файлы в получившихся 180 файлах компьютер не умеет (однако, у меня есть наброски, как это делать, см по тегу gattai).

Собственно, всё. Опыт показывает, что на разбор примерно 300Гб онгоинга уходит около получаса (это включает в себя поиск по тайтлу на анидб с выяснением "а что это такое, вообще, сколько было овашек этого и как они различаются?").

В следующей части: HDDLib под микроскопом.