Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2010-07-16 01:17:50

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

[SOLVED] rsync (lub niekoniecznie...) - problem z include/exclude

Dawno Was publicznie nie gnębiłem ;) No ale wszystko co piękne kiedyś się kończy...
Ma 2 maszyny nazwijmy je A i B. Maszyna A to serwer główny, maszyna B coś a'la serwer backupowy. No i muszę zrobić synchronizację plików, jednak nie jest to takie proste... ślęczę już nad tym sporo i wymiękam. Nie ogarniam regexpów rsynca...

Maszyna A - struktura katalogów (d - katalog, f - plik)

Kod:

d /home/kontaftp/login1
d /home/kontaftp/login2
d /home/kontaftp/login3
d /home/kontaftp/system
d /home/kontaftp/zamowienie

Struktura pojedynczego konta

Kod:

d /home/kontaftp/loginX/nazwa_zamówienia
d /home/kontaftp/loginX/nazwa_zamówienia/min
d /home/kontaftp/loginX/nazwa_zamówienia/pliki
f /home/kontaftp/loginX/nazwa_zamówienia/pliki/obrazek1.jpg
f /home/kontaftp/loginX/nazwa_zamówienia/pliki/__obrazek2.jpg
f /home/kontaftp/loginX/nazwa_zamówienia/min/tumbinal1.jpg
f /home/kontaftp/loginX/nazwa_zamówienia/min/tumbinal2.jpg
d /home/kontaftp/loginX/nazwa_zamówienia2
d /home/kontaftp/loginX/nazwa_zamówienia2/min
d /home/kontaftp/loginX/nazwa_zamówienia2/pliki
f /home/kontaftp/loginX/nazwa_zamówienia2/pliki/obrazek1.jpg
f /home/kontaftp/loginX/nazwa_zamówienia2/pliki/__obrazek2.jpg
f /home/kontaftp/loginX/nazwa_zamówienia2/min/tumbinal1.jpg
f /home/kontaftp/loginX/nazwa_zamówienia2/min/tumbinal2.jpg

I teraz najważniejsze
Wszystkie pliki , z wykluczeniem katalogu min, to co jest w katalogach /home/kontaftp/system lub /home/kontaftp/zamowienia ma być przegrywane na zewnętrzną maszynę więc robię to tak

Kod:

rsync -ruvz --exclude="min" /home/kontaftp/system user@maszyna:/home/kontaftp/system
rsync -ruvz --exclude="min" /home/kontaftp/zamowienia user@maszyna:/home/kontaftp/zamowienia

Działa idealnie.
Schodki zaczynają się przy poszczególnych kontach/zamówieniach w /home/kontaftp. Mają się przegrywać wszystkie pliki, których nazwa zaczyna się od podwójnego podkreślenia (czyli np __obrazek2.jpg) z pominięciem katalogu min
Próbuję to robić w ten sposób:

Kod:

ls /home/kontaftp |while read KONTO
do
 if [[ "$KONTO" = "system" ]] || [[ "$KONTO" = "zamowienia" ]]
 then
  continue
 else
  rsync -ruvz --exclude="min" --include="__*" /home/kontaftp/"$KONTO" user@maszyna:/home/kontaftp
done

Ale synchronizuje mi wszystko... Nie ważne jak kombinuje nie mogę tego ugryźć ;/ Wiem mogę findem znaleźć wszystkie pliki pasujące do wzorca i je pojedynczo rsync'kiem lub scp traktować ale to nie o to chodzi... Zastanawiam się czy rekurencyjne przechodzenie do katalogów nie byłoby rozwiązaniem ale jakoś nie mam na to sensownego pomysłu...

Będę wdzięczny za każdą radę, wskazówkę, pomoc.

Z góry wielkie dzięki!

P.S.
Zapomniałem nadmienić - nie musi to być rozwiązanie oparte o rsync. Może być cokolwiek innego byle działo tak jak ma działać ;)

Ostatnio edytowany przez winnetou (2010-07-16 16:39:37)


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#2  2010-07-16 02:17:32

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: [SOLVED] rsync (lub niekoniecznie...) - problem z include/exclude

Sorry za post pod postem ale nie chce żeby uciekło ;]

znalazłem takie rozwiązanie ale jeszcze mi się coś nie zgrywa

Kod:

SRC="/home/kontaftp" #źródło czyli wszystko co w /home/kontaftp
DEST="/home/kontaftp" #cel czyli katalog na docelowej maszynie...
KTO="user" #użytkownik "wykorzystywany" do zdalnego połączenia
HOST="IP.IP.IP.IP" #wiadomo ;)

ls ${SRC} |while read KATALOG
do
 if [[ ${KATALOG} = "system" ]] || [[ ${KATALOG} = "zamowienia" ]]
 then 
  continue
 else
  find ${SRC} -name "__*" | rsync -ruzv --files-from=- . ${USER}@${HOST}:${DEST}
 fi
done

Z tym że znów jest pewne "ale". Po synchronizacji mam burdel bo robi się coś takiego:
/katalog_z_którego_uruchomiłem_synchronizację/${SRC}/synchronizowany_katalog
a w ${DEST} powinien być po prostu katalog użytkonika i podkatalogi bez wcześniejszych ścieżek... ehhh

Ostatnio edytowany przez winnetou (2010-07-16 02:39:29)


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#3  2010-07-16 16:42:23

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: [SOLVED] rsync (lub niekoniecznie...) - problem z include/exclude

Jeszcze jeden post pod postem :) W końcu po 3 bezsennych nocach udało mi się zmusić rsynca do działania tak jak powinien. Co prawda nie jest to najwydajniejsze rozwiązanie i przy dużych ilościach plików może przypchać dysk ale działa. Oto odpowiedni fragment kodu:

Kod:

 rsync ${OPTS} ${SRC}/system ${DEST}
 rsync ${OPTS} ${SRC}/programnfzlecen
 ls ${SRC}|while read DIR
 do
  if [[ ${DIR} = "system" ]] || [[ ${DIR} = "programnfzlecenia" ]]
  then
   continue
  else
   cd ${SRC}/${DIR}
   find . -name "__*" |rsync ${OPTS_UNDER} . ${DEST}/${DIR}
  fi
 done

Przy czym:

Kod:

OPTS="-ruzv --exclude=${THUMBS} -4 --log-file=${LOG} --size-only ${BANDWIDTH_LIMIT}"
OPTS_UNDER="-ruzv --files-from=- -4 --log-file=${LOG_UNDER} --size-only ${BANDWIDTH_LIMIT}"
SRC="/home/kontaftp"
DEST="${USER}@${HOST}:/home/kontaftp"

LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)