LINUX.ORG.RU
решено ФорумAdmin

ln и каталоги


0

2

Избитая тема, на которую гугление отвечает банальным «просто нельзя этого делать», а более умные люди кидают в мануалы, гле речь идёт о риске появления «колец», которые могут убить систему. Это, конечно, логично: «mkdir 0 && ln ./0/ /» убивает систему, но иногда бывают случаи, когда НАДО. И вот один из них:

В наличии большая, сортированая галерея картинок (>28 000).

Задача: дополнить пути жёсткими ссылками.

Пример: в исходной галерее по поти "./ххх/хх/хххх/хх/ххх/хххх/3/" лежит небольшое деревце (глубиной до 7-ми каталогов) и в каждом каталоге N=%RANDOM% картинок. Всё это деревце без изменений нужно хардлинковать в "./ххх/хх/хххх/хх/ххх/хххх/${tag}_3_8734/".

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

Заранее прошу не писать [скрипты/конструкции]-обработчики деревьев, так как меня интересует только хардлинк (ln -s не предлагать). В конце обработки галерею целиком нужно будет записать на DVD-диск (очевидно, 8.5 GB) с сохранением хардлинков. Так что если нет вариантов с хардликами директорий - пишите про хардлинк на диске.

★★

Последнее исправление: zzdnx (всего исправлений: 1)

В конце обработки галерею целиком нужно будет записать на DVD-диск (очевидно, 8.5 GB) с сохранением хардлинков.

iso9660 умеет хардлинки?

lazyklimm ★★★★★
()

Заранее прошу не писать [скрипты/конструкции]-обработчики деревьев, так как меня интересует только хардлинк (ln -s не предлагать).

Патчить ln?

sin_a ★★★★★
()

Зачем тратить время на этого [censored] чудака на букву «М»?

anonymous
()
Ответ на: комментарий от sin_a

Так что если нет вариантов с хардликами директорий - пишите про хардлинк на диске

ты просто пессимист

zolden ★★★★★
()

А что тебе мешает сделать требуемую структуру каталогов, а файлы копировать хардлинками? Или вообще делать простые копии, а потом пройтись дедупликатором типа fdupes?

i-rinat ★★★★★
()
Ответ на: комментарий от sin_a

Патчить ln?

Скорее VFS в ядре. ИМХО.

Deleted
()

В каком-то старом юниксе видел работающий ln на каталог.
Кажется, это был Solaris 2.6.
Можешь поискать эту версию :)

bigbit ★★★★★
()
Ответ на: комментарий от i-rinat

А что тебе мешает сделать требуемую структуру каталогов, а файлы копировать хардлинками?

Насколько я понял, большое количество постоянно меняющихся файлов.

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

sin_a ★★★★★
()

Я не совсем понял задачу (а точнее цель), так что выбирай из способов:

ибо сложно учитывать непостоянную структуру деревца под интересующим каталогом

Ничего не понял. Дерево меняется? Нет? Тогда вот:

$ cp -rl ./ххх/хх/хххх/хх/ххх/хххх/3/ ./ххх/хх/хххх/хх/ххх/хххх/${tag}_3_8734/

Если меняется - либо то же с отслеживанием через incron, либо mount --bind, что, работает как хардлинк на каталог.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

Цель такова: весь пак графики имеет такой размер, который делает возможной запись всей галереи на dvd9-диск, однако галерея не полная - в ней не хватает некоторых каталогов с вырастающими из них деревцами (файлы в этих деревцах не новые, а хардлинки на уже имеющиеся в галерее). Если решать задачу простым копированием, то размер галереи умножится раза в три (ибо «нехватающих» каталогов реально много) и это убьёт нафиг возможность сделать один dvd9 со всей галереей. Монтирование, как я понимаю, не поможет при создании образа, хотя нужный эффект в виде появления недостающих каталогов на винте будет достигнут. Большое спасибо за параметр «l» в cp! В моём случае дерево в каталоге который дожен подвергаться линкованию не меняется, и такое решение вполне прокатит! Извиняюсь за невнимательность...

zzdnx ★★
() автор топика
Ответ на: комментарий от bigbit

видел работающий ln на каталог.

Я как-то тоже видел в убунче, но не в очевидном контексте. Помню что точно прочитал где-то мимоходом такой текст: «разрешить суперпользователю создавать жёсткие ссылки на каталог». А теперь найти не могу, где это было... Но так как в моём случае хватит и «cp -rl», то успокоюсь.

zzdnx ★★
() автор топика
Ответ на: комментарий от Skolotovich

Большое спасибо за уточнение про UDF и его поддержку хардлинков на файлы. Я до этого не сталкивался с той задачей, которая есть сейчас и не знаю конкретных программ. Теперь вопрос: есть-ли какая-нибудь концольная утиль для создния образа с хардлинками (типа mkisofs)? Или гуёвая... Но лучше консоль ^_^

zzdnx ★★
() автор топика
Ответ на: комментарий от zzdnx

Помню что точно прочитал где-то мимоходом такой текст: «разрешить суперпользователю создавать жёсткие ссылки на каталог». А теперь найти не могу, где это было..

В man ln?

Kindly_Cat
()
Ответ на: комментарий от Kindly_Cat

Нет. Это есть в стандартном хэлп-листе к ln:

  -d, -F, --directory      позволить суперпользователю создавать жесткие ссылки на каталоги (замечание: вероятно, это не получится из-за системных ограничений, даже у суперпользователя)
Проверка показала что даже после «sudo su» хардлинк директории невозможен. Слава «cp -rl»!

zzdnx ★★
() автор топика
Ответ на: комментарий от zzdnx

Проверка показала что даже после «sudo su» хардлинк директории невозможен.

потому что такую фичу должна уметь fs, а не ln

Skolotovich ★★★
()

В ядре в vfs_link есть явная проверка, что это директория и облом EPERM. Можешь это убрать, но это будет дыра в безопасности.

sergej ★★★★★
()
Ответ на: комментарий от sergej

Нет-нет, спасибо. Но за инфрмацию о том где править - большое спасибо ^_^.

zzdnx ★★
() автор топика
Ответ на: комментарий от Skolotovich

такую фичу должна уметь fs, а не ln

Странно, а я всегда думал что с точки зрения фс каталог - это особой структуры файл с атрибутом-пометкой, говорящей ОС о том что этот файл является именно директорией, а не рядовым файлом. То есть каталог для фс - это такой же как и все остальные файл, отличающийся только наличием атрибута «я директория». А хардлинк - это файл, с не уникальным айнодом (смысл которого именно в уникальности). Так что для ФС не должно быть ФИЗИЧЕСКОЙ разности между файлами и каталогами. Совсем другое дело хардлинк на каталог - это может быть реально ОПАСНО.

zzdnx ★★
() автор топика
Ответ на: комментарий от anonymous

«mount -o bind» - это тоже подойдёт, но мне ближе по духу в данной ситуации «cp -rl»

zzdnx ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.