URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6603
[ Назад ]

Исходное сообщение
"Помощь в написании скрипта"

Отправлено zick , 12-Июл-07 17:19 
Всем здрасте !
Есть такая вот задача: есть сервер, на него по нфс монтируються диски с фильмами (например /share/Video/hdd*/папки_с_фильмами ), надо написать такой скрипт, чтоб он через некоторый промежуток времени сканировал директории и создавал симлинк в определённую папку ( /ftp/cinema/имя_папки_с_фильмом ). Тоесть чтоб просто  забрасывали фильмы на монтируемые диски и скрипт сканировал через определённый промежуток и создавал симлинк на папку с фильмом (имеено на папку, а не на фильм). Кто знает помогите пожалуйста, так как с програмированием в оболочке вобще не дружу ! Заранее спасибо.

Содержание

Сообщения в этом обсуждении
"Помощь в написании скрипта"
Отправлено vic , 12-Июл-07 19:22 
Ну например сделать вот такой скрипт и запихать его запуск в cron (man crontab):
#!/bin/bash
for i in /share/Video/hdd*
do
  find $i -mindepth 1 -maxdepth 1 -type d -exec ln -s {} /ftp/cinema \;
done

На уже существующие одинаковые каталоги будет ругаться, но это можно слить в /dev/null..

Если в каталоге /share/Video только подкаталоги hdd*, то можно обойтись find без for, хотя и в данном случае тоже можно обойтись, но лень думать :)

p.s. папки - это только в вин, в никсах каталоги.
p.s.s. подружитесь с bash или ksh, это не сложно, но приятно :)


"Помощь в написании скрипта"
Отправлено zick , 14-Июл-07 12:23 
>Ну например сделать вот такой скрипт и запихать его запуск в cron
>(man crontab):
>#!/bin/bash
>for i in /share/Video/hdd*
>do
>  find $i -mindepth 1 -maxdepth 1 -type d -exec ln
>-s {} /ftp/cinema \;
>done
>
>На уже существующие одинаковые каталоги будет ругаться, но это можно слить в
>/dev/null..
>
>Если в каталоге /share/Video только подкаталоги hdd*, то можно обойтись find без
>for, хотя и в данном случае тоже можно обойтись, но лень
>думать :)
>
>p.s. папки - это только в вин, в никсах каталоги.
>p.s.s. подружитесь с bash или ksh, это не сложно, но приятно :)
>


Да уже пополной начинаю дружить =) Дружба потихоньку крепнет ) Вот мой скрипт, знаю что криво и неполноценно, но работает ...

#!/usr/local/bin/bash
# write by zik (c)

cd /share/Video/ ;

for i in $(ls);
do
    #pwd;
    cd /share/Video/$i/Movie/ ;
    if [ $(pwd) = "/share/Video/$i/Movie"  ];
    then
        for a in $(ls);
        do
            ln -s /share/Video/$i/Movie/$a /ftp/kino/films/ ;
            cd ../../ ;
        done;
    
    fi
done;


"Помощь в написании скрипта"
Отправлено zick , 26-Июл-07 23:02 
Блин новая запара случилась :( Добавили ещё диски с фильмами, а там в названии файлов пробелы и симлинки нормально не создаються ... Подкскажите кто знает, как это решить, буду очень признателен !

"Помощь в написании скрипта"
Отправлено phpcoder , 27-Июл-07 10:49 
>Блин новая запара случилась :( Добавили ещё диски с фильмами, а там
>в названии файлов пробелы и симлинки нормально не создаються ... Подкскажите
>кто знает, как это решить, буду очень признателен !

Заключай имена переменных, воторые содержат пробелы, в двойные кавычки. (Вместо $i пиши "$i")