Strona 1 z 1

[+] Tworzenie katalogów na dysku synchronicznie z wpisami w MySQL

: 31 marca 2011, 14:03
autor: cooleq
Witam.
Generalnie chcę żeby wpisując dane w tabeli firmy na dysku pojawiał się folder z nazwą = firmy.nazwa i odpowiednimi uprawnieniami.
Proszę o pomoc bo męczę się już 2 dni, a nie bardzo wiem jak to zmajstrować a pewnie jest jakiś prosty sposób.
W pierwszej kolejności chciałem napisać trigger:

Kod: Zaznacz cały

DELIMITER $$

USE `ansee`$$

CREATE
DEFINER=`ansee`@`localhost`
TRIGGER `ansee`.`folder`
AFTER INSERT ON `ansee`.`firmy`
FOR EACH ROW
BEGIN
        SYSTEM cd /home/projekty_kopia;
        SYSTEM mkdir NEW.nazwa;
    END$$
Tylko, że po słowie SYSTEM zawszę dostaję syntax error.

Drugim pomysłem było napisanie skryptu do crona, który powiedzmy co minutę by synchronizował katalogi z wpisami. Jednak wydaje mi się, że to jest raczej niestosowne rozwiązanie i mocno będzie obciążać system zwłaszcza jeśli będzie sporo katalogów.
Tu skrypt, który niestety nie działa tak jakbym chciał.

Kod: Zaznacz cały

#!/bin/bash

max=`echo "SELECT MAX(idFirmy) AS '' FROM firmy;" | mysql -u ansee -pXXX ansee`
echo $max

for((i=0;i<=$max;i++))
do
dane=`echo "select nazwa as '' from firmy WHERE idFirmy=$i;" | mysql -u ansee -pXXX ansee`
mkdir "/home/projekty_kopia/${dane//\ /_}"
echo ${dane//\ /_}
done
,,echo'' zwraca ładnie nazwy tylko bez polskich znaków, i jak wpiszę do pliku to też wszystko jest w porządku, za to polecenie mkdir kompletnie tworzy jakieś cuda. W Linuksie jeszcze jako tako:

Kod: Zaznacz cały

ls -l

Kod: Zaznacz cały

...
drwxr-xr-x 2 root root 4096 mar 30 14:14 ?WOJTECH_-_Wojciech_Paradiuk
drwxr-xr-x 2 root root 4096 mar 30 14:14 ?WSB_Parki_Wiatrowe_Sp._z_o.o.
Tylko te znaki zapytania. Jednak jeśli otworzę ten katalog jako udział samby to same krzaki się wyświetlają.

Kod: Zaznacz cały

 Wolumin w stacji U to testProjekty
 Numer seryjny woluminu: 250C-8C57

 Katalog: U:\

2011-03-30  13:51    <DIR>          .
2011-03-29  12:27    <DIR>          ..
2011-03-30  14:14    <DIR>          _IDDED~A
2011-03-30  14:14    <DIR>          _4SOS9~0
2011-03-30  14:14    <DIR>          _TQK3X~S
2011-03-30  14:14    <DIR>          _A5SGX~E
2011-03-30  14:14    <DIR>          _DT929~L
2011-03-30  14:14    <DIR>          _P9D0L~E
...
Dodane:
Dobrze, to sobie sam odpowiem.
Ten skrypt

Kod: Zaznacz cały

#!/bin/bash

max=`echo "SELECT MAX(idFirmy) AS '' FROM firmy;" | mysql -u ansee -pXXX ansee`
echo $max
rm /home/tomasz/skrypty/log.txt
for((i=0;i<=$max;i++))
do
dane=`echo "select nazwa as '' from firmy WHERE idFirmy=$i;" | mysql -u ansee -pXXX ansee`
#mkdir -p "/home/projekty_kopia/${dane//\ /_}"
#echo ${dane//\ /_}
echo ${dane//\ /_} >> /home/tomasz/skrypty/log.txt
done
echo Etap drugi.
while read LINE
do
        echo ${LINE}
        mkdir /home/projekty_kopia/${LINE}
done </home/tomasz/skrypty/log.txt
Działa nieźle pod warunkiem, że w nazwach firm nie ma na końcu kropki. Jakoś Windows sobie z nią nie radzi przez co straciłem półtora dnia. Teraz tylko trzeba edytować plik log.txt żeby nie było na końcu kropek. I może jeszcze pousuwać puste linie, może jakiś log ładny się z tego zrobi.