скрипт копирования шары в шару с переимнованием каталогов, StopHam, 19-Ноя-12, 16:39 [смотреть все]Нужен "скелет" скрипта на любом скриптовом языке 1)есть шара на одном компе сетки(допустим с адресом 163.131.10.1/shara1) и шара на другом компе в сетке 163.131.10.2/shara2)...шары смонтированы на линуксовая машину с адресом 163.131.10.3 2)в shara1 хранятся каталоги(папки),которые именуются сл образом хх-ххххх-хх, где х-символ или цифра. Каждый из этих овкатолог имеет подкаталоги,которые именуются сл образом yy_yy_yyyy, где y-символ или число. 3)задача скрипта скопировать содержание каталогов xx-xxxxx-xx в shara2 таким образом, чтобы во-первых,иерархия каталогов сохранилась, а во-вторых, вместо хх-ххххх-хх создать допустим каталог 18-ххххх-хх, т.е. в наименовании каталогов изменить 2 символа и туда все содержимое скопировать. Например, если есть у нас в каталоге shara1 есть к3-loggo-1g подкаталоги 8с_658hy_13kk и 6р_hgl13_y1. Данные подкаталоги имеют ряд файлов в первом:1.log, 2.log. второй: 44.log, 12.log. Запускаем скрипт: создаёт список каталогов... далее работает по каждому найденному в шаре1 каталогу... доходим до каталога к3-loggo-1g создаётся в шаре2 каталог 18-loggo-1g. создаются соответсвенно подкаталоги с именами 8с_658hy_13kk и 6р_hgl13_y1. в подкаталог 8с_658hy_13kk копируются файлы 1.log, 2.log. в подкаталог 6р_hgl13_y1 копируются файлы 44.log, 12.log. и так по каждому найденному каталогу... вот примерно так как-то.... Буду рад за любую полезную информацию как создать скрипт именно данный скрипт...буду рад за пример!
|
- скрипт копирования шары в шару с переимнованием каталогов, pavlinux, 01:11 , 20-Ноя-12 (1)
> Запускаем скрипт: man bash > создаёт список каталогов... man mkdir > далее работает по каждому найденному в шаре1 каталогу... man find > доходим до каталога к3-loggo-1g man cd > создаётся в шаре2 каталог 18-loggo-1g. man mkdir > создаются соответсвенно подкаталоги с именами 8с_658hy_13kk и 6р_hgl13_y1. mkdir -p > в подкаталог 8с_658hy_13kk копируются файлы 1.log, 2.log. в подкаталог 6р_hgl13_y1 копируются > файлы 44.log, 12.log. man cp > и так по каждому найденному каталогу... for i in ....
- скрипт копирования шары в шару с переимнованием каталогов, StopHam, 03:09 , 20-Ноя-12 (2)
команды фундаментальные-то я линуха знаю)) просто не знаю как их в чистом виде можно использовать в скриптах... опыт скриптонаписания очень мал((
- скрипт копирования шары в шару с переимнованием каталогов, pavlinux, 22:37 , 20-Ноя-12 (3)
- скрипт копирования шары в шару с переимнованием каталогов, StopHam, 03:16 , 21-Ноя-12 (4)
>> просто не знаю как их в чистом виде можно использовать в скриптах... > Всё очень просто: > Одна команда - одна строка! > Строка может состоять из команд! > Команда может состоять из строк! > :) > http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.htm... > http://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html > http://tldp.org/LDP/abs/html/ Ну вот на пыхе как скрипт будет выглядить примерно?Просьба без смеха))я просто начинающий в этом... вот так? назовём скрипт kopir.php <?php $dirs = mkdir(163.131.10.1/shara1) //создаём список каталогов в шаре1 for i in dirs: //проходимся по каждому найденному каталогу в шаре1 $poddirs = find(i) //создаём список подкаталогов каждого каталога в шаре1 dirshcp=mkdir(163.131.10.2/shara2/18-%s%s%s%%s%%s%-%s%s)%i //вот здесь я вообще в затрудненнии как создать на шаре2 грубо гоовря папку(каталог) с именем такой же как в шаре1, но первые 2 символа заменить на символы 18 for j in poddirs: //проходимся по каждому подкаталогу найденного каталога в шаре1 recipient = mkdir(163.131.10.2/shara2/dirshcp/%s)%j //запоминаем в переменную путь куда скопировать source = '%s/%s'%i%j //запоминаем в переменную путь откуда скопировать cp(source,recipient) //копируем откуда куда файлы с сохранением иерархии и переименованием первых 2-х символов в имени верхнего каталога...далее переходим к сл каталогу в шаре1 ?> запускаем скрипт на линуховой машине: #php kopir.php Но он не работает((
- скрипт копирования шары в шару с переимнованием каталогов, pavlinux, 00:51 , 22-Ноя-12 (5) –1
Хрен какую-то написал... Нарисуй как выглядят каталоги на шаре1 и как должны выглядить на шаре2. Только в человеческом виде, а не 8с_658hy_13kk и 6р_hgl13_y1
- скрипт копирования шары в шару с переимнованием каталогов, StopHam, 07:44 , 22-Ноя-12 (6)
> Хрен какую-то написал... Нарисуй как выглядят каталоги на шаре1 и как должны > выглядить на шаре2. > Только в человеческом виде, а не 8с_658hy_13kk и 6р_hgl13_y1 Нужно получить следующую картину в итоге: в шаре1 всё оставить без изменений: -------------------------------------------------------- 163.131.10.1/shara1| |_ c1-speed-2012| |_ 11_ma_12ye | |_1.log |_2.log |_ 01_de_12ye | |_51.log |_22.log |_ 04_ap_12ye | |_17.log |_22.log |_ c2-speed-2011| |_ 16_ye_12ye | |_68.log |_12.log |_ 04_yi_12ye | |_15.log |_77.log |_ 08_av_12ye | |_33.log |_24.log ----------------------------------------------------------- после запуска скрипта в шаре2: ------------------------------------------------------------ 163.131.10.2/shara2| |_ 18-speed-2012| |_ 11_ma_12ye | |_1.log |_2.log |_ 01_de_12ye | |_51.log |_22.log |_ 04_ap_12ye | |_17.log |_22.log |_ 18-speed-2011| |_ 16_ye_12ye | |_68.log |_12.log |_ 04_yi_12ye | |_15.log |_77.log |_ 08_av_12ye | |_33.log |_24.log ----------------------------------------------------------------- на линуксовой тачке с адресом 163.131.10.3, где планируется запуск скрипта шары примантирвоаны сл образом: 163.131.10.1/shara1 в директорию /mnt/source 163.131.10.2/shara2в директорию /mnt/ recipient в шаре1 появляются периодически обновления и их нужно как указано выше скопировать в шару2, но то что ранее было уже записано-не перезаписывать, т.е. добавлять лишь обновления(новое). примерно как-то так попытался визуализировать процесс
- скрипт копирования шары в шару с переимнованием каталогов, pavlinux, 18:02 , 22-Ноя-12 (7) +1
#!/бын/башшsrc=(c1-speed-2012 c2-speed-2011) dst=(18-speed-2012 18-speed-2011) for ((i=0; i < ${#src[*]}; i++ )) do mkdir -p /mnt/recipient/${dst[i]}; rsync -au /mnt/source/${src[i]} /mnt/recipient/${dst[i]}; done;
- скрипт копирования шары в шару с переимнованием каталогов, StopHam, 04:05 , 23-Ноя-12 (8)
>[оверквотинг удален] > src=(c1-speed-2012 c2-speed-2011) > dst=(18-speed-2012 18-speed-2011) > for ((i=0; i < ${#src[*]}; i++ )) > do > mkdir > -p /mnt/recipient/${dst[i]}; > rsync > -au /mnt/source/${src[i]} /mnt/recipient/${dst[i]}; > done; > У меня немного не так... у меня в /mnt/source создаются каталоги внезапно...т.е. я не могу заранее сказать какие имена каталоги будут..мне единственное,что нужно-это составить список этих каталогов и скопировать их в /mnt/recipient изменяя наименование каталогов(точнее первых 2-х символов-на 18 заменить). А из этого примера мы замыкаемся исключительно на статические(заранее известные) имена каталогов... как будет выглядить тогда формирование переменной src и самое главное переменной dst так? src=mkdir('/mnt/source') dst=не знаю как(((рекурентными выражениями,но как их применить...вообщем затрудняюсь((
- скрипт копирования шары в шару с переимнованием каталогов, StopHam, 05:42 , 23-Ноя-12 (9)
>[оверквотинг удален] > src=(c1-speed-2012 c2-speed-2011) > dst=(18-speed-2012 18-speed-2011) > for ((i=0; i < ${#src[*]}; i++ )) > do > mkdir > -p /mnt/recipient/${dst[i]}; > rsync > -au /mnt/source/${src[i]} /mnt/recipient/${dst[i]}; > done; > результат получился не совсем такой который ожидался.... вообщем да копирование произошло,но в итоге получили такую кртинку в /mnt/recipient ---------------------------------- /mnt/recipient| |_18-speed-2012| |_c1-speed-2012| |_ 11_ma_12ye | |_1.log |_2.log |_ 01_de_12ye | |_51.log |_22.log |_ 04_ap_12ye | |_17.log |_22.log |_18-speed-2011| |_ c2-speed-2011| |_ 16_ye_12ye | |_68.log |_12.log |_ 04_yi_12ye | |_15.log |_77.log |_ 08_av_12ye | |_33.log |_24.log ----------------------------------------------------------------------------- т.е. в каталоге допустим 18-speed-2012 образовалася каталог c1-speed-2012, а нужно не сам каталог поместить, а его содержание с сохранением иерархии хранения(т.е. подкаталоги и т.п.)
- скрипт копирования шары в шару с переимнованием каталогов, pavlinux, 14:37 , 23-Ноя-12 (10)
#!/bin/bashSRC="/mnt/source" DST="/mnt/recipient" PREFIX="18" SIZEOF_PREFIX=$(echo -ne $PREFIX | wc -c) cd $SRC; for i in `ls`; do j=$(echo $PREFIX-`echo $i | cut -d"-" -f "$SIZEOF_PREFIX"-`); # Гы mkdir -p $DST/$j; rsync -au $SRC/$i/ $DST/$j; done
|