Ссылки на файлы, относительно устройства хранения. [Решено]
Здравствуйте!
Проблема не столько связана с Gentoo, сколько с Линуксом вообще.
Есть файл-сервер (NAS QNAP TS-101 с Линуксом на борту) подключенный по сети к компьютеру. Работает по протоколу NFS v3.
На сервере есть отдельная папка для обмена (BitTorrent). В ней полный хаос.
Хочется сделать библиотеку с вменяемыми названиями и т.д. вне этой папке, но на том же сервере.
Если создавать символические ссылки, то в них прописывается абсолютный путь к файлу, что накладывает ограничения на то, как монтировать файл-сервер к компьютеру.
Если использовать жесткие ссылки, то это воспринимается, как новый файл, занимающий место (по результатам df). Это недопустимо.
В идеале, хотелось бы создать ссылки, относительно точки монтирования, в то же время, не зависимой от нее.
Иначе, ссылки вида "../../../имя файла".
Подскажите пожалуйста, можно ли сделать что-то подобное?
- Для комментирования войдите или зарегистрируйтесь
Жесткие ссылки не занимают
Жесткие ссылки не занимают место. Это как бы несколько имен для одного блока данных. Файл не удалиться пока у него не удалено хотя бы одно имя.
Они бы вам вполне подошли.
Симлинки скорее всего будут указывать не туда куда надо при монтировании по нфс.
Опишите подробнее структуру папок в торентах.
можно смнтировать более высокий уровень иерархии и можно использовать mount -o bind или unionfs
..................................................................
Unix - дружественная система, но своих друзей она хорошо выбирает.
(Про жесткие ссылки.) Меня не
(Про жесткие ссылки.) Меня не устраивает неверное отображение свободного места. А так же, не получится ли так, что при достижении предельного значения занимаемого места (из-за жестких ссылок), новые файлы откажутся записываться?
Структура монтируемого диска: Папки, файлы и, в том числе, расшаренная папка Торрентов. В ней - хаос. Нет никакой структурной упорядоченности.
Хочу создать структуру библиотеки вне расшаренной папки (на уровень выше, то есть, в корне монтируемого диска). Точную структуру пока не придумал, но, при неоходимости, количество вложенных папок может быть уравнено (для ссылок, вида ../../).
(Про mount -o bind) К сожалению, не подойдет, так как должно быть применено к папке (если я ошибаюсь, буду очень рад, если поправите). Но. Во-первых, не все файлы внутри расшаренной папки находятся в поддиректориях. Есть те, что паходятся непосредственно в расшаренной папке. Во-вторых, в библиотеке требуется изменение названий самих файлов.
(Про unionfs) Пока не понял, что это такое. Разбираться буду завтра вечером. Но большое спасибо за предложение!
Цитата: (Про жесткие ссылки.)
Нет конечно ). Ссылки не занимают свободное место на диске для хранения данных, но занимают одну запись inode, равно как и любой файл.
emacs — отличная операционка которой не хватает только хорошего текстового редактора.
Хм. Хорошо. Допустим. Скажите
Хм. Хорошо. Допустим.
Скажите пожалуйста, а есть ли способ узать истинное значение свободного места?
df у меня не показывает
df у меня не показывает уменьшение свободного места при создании хардлинков
ссылки (мягкие или жесткие)
ссылки (мягкие или жесткие) через NFS не передадутся (вернее останутся ссылками, но относительно новой системы)
вам нужно использовать монтирование на стороне файл-сервера через bind
что-то добрый я сегодня ....
Я ошибаюсь, или всё таки не
Я ошибаюсь, или всё таки не я?
Жёсткие ссылки являются синонимами файлов. По сути это ещё одно имя, привязанное к inode. И утверждение, что жесткие ссылки не передадутся через NFS неверно. В отличие от мягких, конечно.
после выполнения этой последовательности команд в системе будет один файл с двумя именами (./original ./original.hardlink), содержащий текст "original", и еще два других с "a" и "b" соответственно.
Этим "тестом" я обращаю внимание на то, что жесткие ссылки ведут себя при копировании как обычные файлы.
То есть высказывание о том, что жесткие ссылки как-то там не передадутся, а останутся ссылками ошибочно.
Может быть я неправильно понял и имелось ввиду, что жесткие ссылки нельзя создать на другой файловой системе (nfs)? Тогда да, правда Ваша.
emacs — отличная операционка которой не хватает только хорошего текстового редактора.
А в чем проблема?
Такое вполне возможно и даже работает.
Единственный минус. Помочь в создании таких ссылок некому. Командеры и файл-менеджеры обычно строят абсолютные ссылки. Далее их надо править или руками или специально обученным скриптом.
С проверкой всё проще. Можно смонтировать "не туда", а далее скриптом (он достаточно простой и где-то попадался в книгах или инете) произвести поиск брошенных ссылок.
чушь Kevol написал(а): Такое
чушь
ключевое слово - nfs
что-то добрый я сегодня ....
Какой вы безопеляционый!
А самому попробовать? Может чушью окажется Ваше мнение?
Всё завист от того куда ведут ссылки.
для примера.
/mnt/drive
монтируем туда наше устройство.
на устройстве имеем
catalog/packet_a -> ../thema1/my-packet
thema1/my_packet
thema1/my_packet/file1.txt
cat /mnt/drive/catalog/packet_a/file1.txt
работает?
теперь монтируем в /home/DRIVE
cat /home/DRIVE/catalog/packet_a/file1.txt
Неужели не работает?
И какая разница - nfs оно или нет?
ЗЫ. А ключевым словом было не nfs, а жесткие ссылки. Следовательно каталог размещен на том же разделе.
А один из быстрых вариантов
А один из быстрых вариантов реализации этой идейки, вижу таким:
В результате получится:
Благодаря тому, что в SRC_DIR будут только симлинки, всегда можно будет: отличить свежескаченные файлы от уже присутствующих и "обработать" их по той же схеме - переброс в NEW_DIR, создание ссылки в SRC_DIR
emacs — отличная операционка которой не хватает только хорошего текстового редактора.
Именно это (в моем понимании)
Именно это (в моем понимании) и вопрошал топикастер.
И не понятно - что его смущало, и что вызвало волну отрицания у отвечавших.
PS. Жесткие ссылки возможны только если иноды из одного раздела. Поэтому все относительные ссылки останутся валидными при любом монтировании раздела.
Этот прием помню издревле. Еще в ранних версиях Линукс.
PPS. Такой прием с организацей данных - именно то что мне не хватало Виндовс. Когда данные имеют множественное представление, каждое из которых удобно в условиях решения конкретной задачи. И в тот же самый момент легко определить их истинный источник.
Наличие же жестких ссылок часто играло злую шутку. Помню, как пару дней потратил выискивая проблему при настройке RedHat-7, из-за того, что им понравилось размещать конфигурацинные файлы в etc c использованием жестких ссылок.
Kevol написал(а): Помню, как
эт вы о чем? )))) поподробнее пожалуйста!
самое доступное описание символических и жестких ссылок есть в книге Робачевского "Операционная система Unix". Всем, у кого есть хоть какие-то сомнения в своих познаниях советую прочитать (всего 2 страницы) ;)
Theli написал(а): Kevol
Да-да, подтверждаю, натыкался на такое, в том числе на каких-то ранних ASPLinux-ах, клон редхата.
Где-то в районе /etc/sysconfig/nerwork-script
Ух, как я рад что забыл этот redhell :) и есть Gentoo!
Agressor написал(а): Да-да,
На какое? В чём суть проблемы-то? ))
emacs — отличная операционка которой не хватает только хорошего текстового редактора.
Там настройки сети
Там настройки сети размещались в более-менее внятном месте /etc , где их можно было редактором изменить. А читался при загрузке файл из другого места в /etc. Этот файл был жесткой ссылкой на первый.
Не трудно догадаться, к чему приводило восстановление методом копирования из архива первого файла. ;)
Подробности местоположения и названия забыл. Да и вспоминать не охота. Но суть проблемы передал полностью.
Kevol написал(а): Не трудно
мне почему-то трудно :( ну да ладно...
Жесткую ссылку затирало и
Жесткую ссылку затирало и получалось два разных файла - один который правишь, и он типа нормальный, а второй который читается - он не менялся в результате, посему от изменений толку ноль, а непонятно почему.
аааа.... ну да... у команды
аааа.... ну да...
у команды cp например есть такой параметр -d
man cp:
просто при перезаписи исходного файа он сначала удаляется!, а потом воздается новый и данные пишутся в него, т.е. inode как раз и меняется... так сделано для уменьшения фрагментации файлов! чет я об этом не подумал совсем :)
для tar вроде подобные опции были...
--------------------------------------
к стати, тут вот все спорили будут ли символические ссылки работать после монтирования через сетевую файловую систему... если не ошибаюсь, то во многих инструментах должны быть опции, который позволяют отображать ссылки уже разыменованными...
Более того, при работе с
Более того, при работе с архивами необходимо знать, учитывать, что объекты могут быть ссылками, что и сделано в tar по умолчанию. Можно, конечно же раскрывать ссылки, но для этого требуется указать соответствующие опции --dereference --hard-dereference. Кроме того надо сохранять и права доступа -p.
Но решение красношапки, реально странное. Софт-ссылки были бы уместнее и нагляднее. А "беда" вовсе не в жестких ссылках — в неумелом обращении с ними.
emacs — отличная операционка которой не хватает только хорошего текстового редактора.
kstati написал(а): А "беда"
+1
Хорошо сказали ;)
kstati написал(а): в неумелом
Умения приходят с опытом.
Жесткие ссылки атавизм. Много кто сталкивался с ними в поледнее время?
Резонный вопрос - почему?
Мой ответ. Это специальная технология позволяющаяя сократить объем информации на носителе в рамках одного раздела.
Цитата: Мой ответ. Это
Этот ответ — заблуждение. Ибо жесткие ссылки предназначены не для сокращения занимаемого объема информации, но для множественного представления одной и той же информации.
emacs — отличная операционка которой не хватает только хорошего текстового редактора.
но для множественного
вполне уместны софтлинки: ибо - работают по дефолту в пределах 1 компа, а не 1-й файловой системы ( ну а не по дефолту есть системы отслеживания связей между ссылками и их объектами )
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Цитата: Мой ответ. Это
Вот, например-с. Есть задачка.
Один пользователь создает файл в своём домашнем каталоге и хочет им поделиться. Мягкая ссылка не даст такой возможности ибо нет доступа на чтение к каталогу. А жесткая - да пожалуйста!
Вот примерчик-тест, чтобы понятно было "зачем нужны".
При этом скрипт лежит как в общедоступном месте, так и в папке root, доступной далеко не каждому.
То есть жесткие ссылки иногда-таки нужны.
emacs — отличная операционка которой не хватает только хорошего текстового редактора.
Не хватает mkdir -p
Не хватает
chmod 1766 /tmp/test/root/good_script.sh
не несет смысловой нагрузки, ибо тогда в обоих случаях получается access denied - прав на запуск хардлинк не даст.А может быть просто запустить
upd.
понял очепяточку ) 1755. Я это и собирался сделать, но допустил ошибку.
emacs — отличная операционка которой не хватает только хорошего текстового редактора.
Это всё равно ответы на свой вопрос.
Много кто сталкивался за последнее время с жесткими ссылками?
PS. (Не для ответа). Представленные примеры рассыпаются в прах в случае, когда файл требуется представить файл не в том же разделе (файловой системе).
Символические ссылки
Ребят, всем большое спасибо! Разобрался с относительными сивмолическими ссылками (второрой из приведенных вариантов), так что буду делать на их основе.
Хотя, остается интересным, можно ли ссылке указать путь так, чтобы он отсчитывался от точки монтирования (неапример, спецсимволы, указывающие на точку монтирования)?
ln -s
emacs — отличная операционка которой не хватает только хорошего текстового редактора.