LINUX.ORG.RU

Вопрос по команде ln. Что пропустил?


0

0

Необходимо создать жесткую ссылку с директории /var/log/ на /mailstorage/mailarchive/

Пишу: ln -d /var/log/ /mailstorage/mailarchive/

выдает Следующее: ln: creating hard link `/mailstorage/mailarchive/log' => `/var/log/': Invalid cross-device link

Директории находятся в разделах на разных жестких дисках...

Что я и где пропустил?

★☆
Ответ на: комментарий от delilen

жёсткие только на одном разделе

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

И если я правилно понимаю, то файлы будут писаться и туда и туда... а это не есть то, что нужно... просто на варе место закончилось...

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

файлы будут писаться туда куда ссылка символическая указывает :) в саму ссылку не будут :)

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

ага. то есть ситуация.

Надо: перенести /var/log/ на другой раздел (не перегружая комп) на другой раздел. Для этого:

1. переместить (mv) /var/log на другой раздел. 2. Создать ссылку из другого раздела на /var/log (ln -sd /mailstorage/mailarhive/log /var)

Все правильно?

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

А что у тебя в /var/log только логи почты?:)
Вообще я так понимаю, что примерно так:

init 1
rsync -a /var/log/ /other/path/log
rm -fr /var/log/
ln -s /other/path/log /var/log

или

mv /var/log/biglogfiles /other/path/
ln -s /other/path/biglogfile1 /var/log
ln -s /other/path/biglogfile2 /var/log

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

>А что у тебя в /var/log только логи почты?:)

нет есть еще немного, но в основном, да.. почта...

на файлы я думал ссылки сделать, но там еще старые логи идут ежедневно в архив... в итоге выходит log.file log.file.1 log.file.1.gz log.file.2.gz ..... и т.д. все это делает хитрожопый скрипт, в котором разбираться желания нет. итак что, имхо легче и быстрее дернуть всю директорию.

delilen ★☆
() автор топика

#cp /var/log/ /mailstorage/mailarchive/
#mv /var/log/ /var/log1
#ln -ds /mailstorage/mailarchive/log/ /var
#rm -rf /var/log1

В общем сделал так... надеюсь сработает...

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

> init 1
> ...

> rm -fr /var/log/


Лучше не удалять, а переименовать, или переместить куда-нибудь в /tmp, если он находится на одном разделе с /var/log. Тогда можно избежать init 1, ограничившись просто поочерёдным перезапуском демонов, пишущих в /var/log.

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

> В общем сделал так... надеюсь сработает...

Посмотри права в /mailstorage/mailarchive/log/

Lumi ★★★★★
()

Жесткие ссылки

Жесткие ссылки живут строго в пределах одного раздела. Нормальное объяснение есть в книжке по юниксу.

Краткое объяснение таково: данные о файле (права, флаги, размещение секторов на диске) хранятся в структуре, называемой inode. Директория -- таблица вида (номер inode, имя). Хардлинк -- это просто другое имя с тем же inode (убедитесь при помощи ls -i). Нумерация inode на каждом разделе своя. Номер устройства в директории не предусмотрен, ибо возникает слишком много головной боли (например, при монтировании/отмонтировании).

lodin ★★★★
()

Права проверил. Syslog перезапустил... Вроде все работает.

delilen ★☆
() автор топика

> Директории находятся в разделах на разных жестких дисках...

Да... Вы хотите угробить файловую систему? Мало того, что вообще категорически не рекомендуются hard links на каталоги, так еще и на разных файловых системах... POSIX, кстати, это вообще запрещает. Чем soft link не устраивает?

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

Учите матчасть :) Жёсткие ссылки это просто другие имена для тех же файлов (то есть два инода для одного файла). Поэтому бессмысленно говорить о жёсткой ссылке на файл в другом разделе.

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

> Учите матчасть :) Жёсткие ссылки это просто другие имена для тех же файлов (то есть два инода для одного файла).

Два инода? Учите матчасть :) Инод у файла всегда один.

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

> Два инода? Учите матчасть :) Инод у файла всегда один.

Эбм.. пошёл убиваться апстену.. а потом спать :) - ну конечно же инод один, имён несколько, а в иноде - количество имён, когда убивается последнее - файл считается удалённым.

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

>Жёсткие ссылки это просто другие имена для тех же файлов

ну и? знаю, просто думал что можно кинуть на другой раздел...

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

> ну и? знаю, просто думал что можно кинуть на другой раздел...

Ну просто когда инод один, то как вы представляете "кинуть на другой" раздел? Инод ведь может указывать на файл только в этом разделе..

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

.. а вообще, это был ответ на "что и где я пропустил" в вашем первом посте. :)

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

Да я понял уже. Просто недостаточно знал принцип работы команды. Да дурак был, осознал, исправился =)

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

Кстати, есть ещё такая хохма как mount --bind -- это если например в чрут нужно каталог засунуть. В качестве замены hard link вполне сойдет.

man mount

lodin ★★★★
()

Сами себе ответили:

> Вопрос по команде ln. Что пропустил?

> Директории находятся в разделах на разных жестких дисках...

Жесткие ссылки создаются только в пределах одного раздела. Это по сути второе имя для того же инода.

учим матчасть ;)

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

Пардон, что повторил уже сказанное. Был занят по работе, а когда дошли руки ответить, тут трэйд уже другой,,,, :)

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