*nix запустить процесс с заданным именем
XXX
а -s не нужно после ln ?
пенартур делает жоско!
да уж, да здравствует больше мусора на винте
Да в общем-то без разницы ;0
Ты ln от cp не отличаешь?
а ты мусор от места?
Вообще-то, хардлинк - не больший (а мб даже и меньший) мусор, чем симлиник
имеется ввиду не физически (как это делает операционка понятно а с точки зрения удобства/возможностей работы с созданным линком
пока один плюс в пользу симлинков: вроде бы ls -al не показывает хардлинки, хотя может я ошибаюсь
вроде бы ls -al не показывает хардлинки
fe:hamilton[3] ~$ ln a.txt a2.txt
fe:hamilton[4] ~$ ls -l a2.txt
-rw-r--r-- 2 fe fe 119 29 июл 2006 a2.txt
fe:hamilton[6] ~$ rm a.txt
fe:hamilton[8] ~$ ls -l a2.txt
-rw-r--r-- 1 fe fe 119 29 июл 2006 a2.txt
Видишь число после режимов доступа — это и есть число ссылок на данный inode. После создания ссылки стало 2, когда удалили один из ссылаемых файлов, стало 1.
Плюс в пользу симлинков немного другой — симлинк может ссылаться на другую файловую систему.
Видишь число после режимов доступа — это и есть число ссылок на данный inode. После создания ссылки стало 2, когда удалили один из ссылаемых файлов, стало 1.речь не про это была
в случае симлинков мне явно показывается что это симлинк и явно показывается на что он ссылается
в случае хардлинка я не знаю изначальный это файл или линк и мне стоит некого труда узнать какие еще есть линки на этот файл, тоесть чьим линком я могу быть
а с точки зрения удобства/возможностей работы с созданным линкомМожно ссылаться на папку, можно ссылаться на другой раздел, у симлинка свои метаданные (если я не ошибаюсь).
Ещё (хотя тут нельзя сказать однозначно, симлинк или хардлинк лучше) - если ты переименовываешь исходный файл, а другой копируешь на его старое место - в хардлинке будет старый файл, в симлинке - новый.
Ещё (но это уже скорее минус симлинка) если удалишь исходный файл, хардлинк работать будет, а симлинк - нет. Но тут есть и преимущество симлинка - если тебе этот файл действительно не нужен, то, если пользуешься симлинками, место на разделе освободится, а если хардлинками - придётся искать все эти хардлинки и удалять.
Хардлинк быстрее.
Есть место на диске и есть несколько ссылок на это место, они все равноправны между собой.
Иными словами, ссылку ты делаешь не на имя файла, а на его содержимое.
в случае хардлинка я не знаю изначальный это файл или линкВ случае хардлинка нет понятия "изначальный файл".
Грубо говоря, все файлы - линки на своё содержимое; содержимое не знает, кому оно принадлежит; а хардлинк - это когда ты делаешь ещё один линк на чьё-то содержимое.
А в случае хардлинка у тебя просто нет такого понятия, как изначальный файл.я это для кого писал?
Есть место на диске и есть несколько ссылок на это место, они все равноправны между собой.
Иными словами, ссылку ты делаешь не на имя файла, а на его содержимое.
имеется ввиду не физически (как это делает операционка понятно)
как найти все ссылки на этот файл?
и хард и сим?
в случае сим оно может быть и не нужно
а в случае хард явно нужно при удалении
а в случае хард явно нужно при удаленииА с другой стороны - нужен тебе файл в одном месте и в другом. Потом он в первом месте перестаёт быть нужным и ты его удаляешь.
Так вот, при использовании хардлинков всё будет отлично, а при использовании симлинков ты либо во втором месте внезапно потеряешь этот файл, либо тебе придётся хранить файл в каком-то третьем месте, а в этих двух - симлинки на него (и тогда опять появляется проблема с освобождением места - в одном месте файл перестал быть нужным, удалил; во втором мемсте файл перестал быть нужным - удалил; а сам файл-то никуда не делся, место на винте занимает).
В общем, оба хороши в своей области применения.
как найти все хард ссылки на этот файл?
никак?
В любом случае, навряд ли это сильно тяжелее (или легче чем найти все симлинки на заданный файл.
Наверняка можно поиском, как и по обычным файлам.ну вот я имею два файла
у обоих одинаковая цифра в соотв. столбце ls
как понять что эти файлы - хардлинки одного и того же
ls -i
$ echo >test1
$ echo >test2
$ ln test1 test1_hardlink
$ ln -s test1 test1_symlink
$ ls -li
total 4
5135 -rw-r--r-- 2 penartur ╬ЄёєЄёЄтєхЄ 1 Jul 25 16:24 test1
5135 -rw-r--r-- 2 penartur ╬ЄёєЄёЄтєхЄ 1 Jul 25 16:24 test1_hardlink
5137 lr--r--r-- 1 penartur ╬ЄёєЄёЄтєхЄ 5 Jul 25 16:24 test1_symlink -> test1
5136 -rw-r--r-- 1 penartur ╬ЄёєЄёЄтєхЄ 1 Jul 25 16:24 test2
$
что это?╬ЄёєЄёЄтєхЄ
Кодировка
как понять что эти файлы - хардлинки одного и того жеэтот вопрос остался без ответа...
Я же сказал - с помощью ls -i получаем inode файлов, сравниваем их.
если надо решить обратную задачу: по имени файла понять какие еще ссылки ссылаются на этот файл, то браузим все дерево текущей файловой системы?
если надо решить обратную задачу: по имени файла понять какие еще ссылки ссылаются на этот файл, то браузим все дерево текущей файловой системы?Видимо, да. (Я не знаю, возможно, в некоторых ОС на некоторых ФС есть более простые способы решения этой задачи).
В общем-то, если по имени файла надо понять, какие ещё симлинки на него ссылаются, задача остаётся тако
если надо решить обратную задачу: по имени файла понять какие еще ссылки ссылаются на этот файл, то браузим все дерево текущей файловой системы?ну дык для симлинков аналогично
для симлинков понятно, что другого решения нет.
я удивлен, что нет нормального решения для hardlink-ов, данные-то все у файловой системы есть...
данные-то все у файловой системы есть...Данных, в общем-то, в нормальном виде нет.
То есть, все файлы знают, какие у них inode, но inode не знают, какие файлы на них ссылаются - знают только количество.
Если inode будут знать, кто на них ссылается - это какое-то излишнее дублирование данных, чреватое ещё и нарушением целостности данных.
данные-то все у файловой системы есть...не у всех ФФС эти данные есть
в большинстве случаев видимо нету
в файле прописана ссылка на инод
но в иноде ссылки на файл то не прописано
вот и занимаемся перебором всех файлов чтобы найти тот у которого ссылка на наш инод
аперидил на несколько секунд
в существующем решении: как раз есть дублирование данных, потому что в одном месте (в дереве файлов) хранятся сами ссылки на файлы, а в другом месте(inode-ы) - хранится кол-во ссылок.
соответственно легко получить невалидное состояние файловой системы: допустим реальных ссылки 3, а в inode записано число ссылок 2 или 4.
соответственно легко получить невалидное состояние файловой системы: допустим реальных ссылки 3, а в inode записано число ссылок 2 или 4.Да, это косяк. Но более прилично тут никак не сделать, чтобы inode удалялись, когда ссылок становится 0, поэтому для ФС без транзакций было придёмано шаманство - сначала удаляем ссылку, а потом уменьшаем счётчик; если между этими двумя действиями что-то случится (отключат свет худшее, что произойдёт - будет занято лишнее место на винчестере; и можно написать специальную очищалку, которая как раз и будет проверять целостность данных, и удалять inode, на которые никто не ссылается.
find -inum
Оставить комментарий
zya369
как, скажем, vi запустить чтобы он в ps отображался как XXX ?можно кроме "exec -a" это как-нить сделать?
и чтоб как минимум на AIX'е работало...