The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"скрипт копирования шары в шару с переимнованием каталогов"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Языки программирования)
Изначальное сообщение [ Отслеживать ]

"скрипт копирования шары в шару с переимнованием каталогов"  +/
Сообщение от StopHam on 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.

и так по каждому найденному каталогу...

вот примерно так как-то....
Буду рад за любую полезную информацию как создать скрипт именно данный скрипт...буду рад за пример!

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "скрипт копирования шары в шару с переимнованием каталогов"  +/
Сообщение от pavlinux (ok) on 20-Ноя-12, 01:11 
> Запускаем скрипт:

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 ....

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "скрипт копирования шары в шару с переимнованием каталогов"  +/
Сообщение от StopHam on 20-Ноя-12, 03:09 
команды фундаментальные-то я линуха знаю))
просто не знаю как их в чистом виде можно использовать в скриптах...
опыт скриптонаписания очень мал((
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "скрипт копирования шары в шару с переимнованием каталогов"  +/
Сообщение от pavlinux (ok) on 20-Ноя-12, 22:37 
> просто не знаю как их в чистом виде можно использовать в скриптах...

Всё очень просто:

Одна команда - одна строка!
Строка может состоять из команд!
Команда может состоять из строк!

:)

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/

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "скрипт копирования шары в шару с переимнованием каталогов"  +/
Сообщение от StopHam on 21-Ноя-12, 03:16 
>> просто не знаю как их в чистом виде можно использовать в скриптах...
> Всё очень просто:
> Одна команда - одна строка!
> Строка может состоять из команд!
> Команда может состоять из строк!
> :)
> 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


Но он не работает((

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "скрипт копирования шары в шару с переимнованием каталогов"  –1 +/
Сообщение от pavlinux (ok) on 22-Ноя-12, 00:51 
Хрен какую-то написал... Нарисуй как выглядят каталоги на шаре1 и как должны выглядить на шаре2.
Только в человеческом виде, а не  8с_658hy_13kk и 6р_hgl13_y1


Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "скрипт копирования шары в шару с переимнованием каталогов"  +/
Сообщение от StopHam on 22-Ноя-12, 07:44 
> Хрен какую-то написал... Нарисуй как выглядят каталоги на шаре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, но то что ранее было уже записано-не перезаписывать, т.е. добавлять лишь обновления(новое).
примерно как-то так попытался визуализировать процесс


Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "скрипт копирования шары в шару с переимнованием каталогов"  +1 +/
Сообщение от pavlinux (ok) on 22-Ноя-12, 18:02 

#!/бын/башш

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;


Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "скрипт копирования шары в шару с переимнованием каталогов"  +/
Сообщение от StopHam on 23-Ноя-12, 04:05 
>[оверквотинг удален]
> 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=не знаю как(((рекурентными выражениями,но как их применить...вообщем затрудняюсь((

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "скрипт копирования шары в шару с переимнованием каталогов"  +/
Сообщение от StopHam on 23-Ноя-12, 05:42 
>[оверквотинг удален]
> 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, а нужно не сам каталог поместить, а его содержание с сохранением иерархии хранения(т.е. подкаталоги и т.п.)

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "скрипт копирования шары в шару с переимнованием каталогов"  +/
Сообщение от pavlinux (ok) on 23-Ноя-12, 14:37 

#!/bin/bash

SRC="/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


Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру