Announcement

Collapse
No announcement yet.

howto: batch creation of symlinks

Collapse

Forum Topic List

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • howto: batch creation of symlinks

    howto: batch creation of symlinks

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

    Code:
    target='/www_root/public_html'
    find /storage -type d -maxdepth 1 |
      while read d
    do
      ln -s $d $target
    done
    в данном случае считаем что:
    /storage - место хранения директорий с файлами
    /www_root/public_html - целевая директория

    p.s. часто считают, что при смене source символьный линк достаточно просто отредактировать. Однако на самом деле процесс редактирования символьного линка всегда сводится сначала к его удалению, а затем к созданию нового. Так что нас не должно вводить в заблуждение то, как выполняют эту процедуру некоторые программы, такие, как к примеру - Midnight Commander. При попытке найти способ массового редактирования символьных ссылок я наконец-то узнал, как этот процесс реализуется на "элементарном" уровне.

  • #2
    Ответ: howto: batch creation of symlinks

    А зачем делать симлинки на аудио книжки?

    Comment


    • #3
      Re: Ответ: howto: batch creation of symlinks

      Originally posted by veey View Post
      А зачем делать симлинки на аудио книжки?
      На том сервере 5 дисков - один системный и четыре "несущих", не которых, собственно и хранятся книжки и кино.

      1. к системным дискам гораздо больше обращений и вероятность ошибки или сбоя системного диска значительно выше. Если "вылетел" системный диск, его просто можно заменить на новый с новой же, чистой системой. Данные при этом не затронуты.

      2. web_root директории расположены на системном диске и именно потому нужны symlinks от original data source в рабочие директории, с которыми работает web server. Размер любого из symlinks всего несколько байт, но ссылается он на мега и гигабайты, то есть на маленький, но шустрый системный диск можно залинковать практически неограниченное количество данных.

      Comment


      • #4
        Re: Ответ: howto: batch creation of symlinks

        Originally posted by MikeS
        Я предпочитаю использовать "for" циклы.
        Да, у вас несколько лаконичнее получается, можно в одну строку вообще:
        Code:
        for file in `ls /source`; do ln -s /source/$file /dest/$file; done
        хотя в использовании find тот плюс, что можно явно указать с файлами или с директориями работаем

        Comment


        • #5
          Ответ: howto: batch creation of symlinks

          Originally posted by Ulitka View Post

          Code:
          target='/www_root/public_html'
          find /storage -type d -maxdepth 1 |
            while read d
          do
            ln -s $d $target
          done
          один из многих вариантов

          под csh можно просто
          find /storage -type d -maxdepth 1 -exec ln -s {} /www_root/public_html/{} \;

          Comment

          Working...
          X