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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1




złodziej wirków ]:->
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)
d /home/kontaftp/login1 d /home/kontaftp/login2 d /home/kontaftp/login3 d /home/kontaftp/system d /home/kontaftp/zamowienie
Struktura pojedynczego konta
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
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:
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)
Offline




złodziej wirków ]:->
Sorry za post pod postem ale nie chce żeby uciekło ;]
znalazłem takie rozwiązanie ale jeszcze mi się coś nie zgrywa
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
doneZ 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)
Offline




złodziej wirków ]:->
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:
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
donePrzy czym:
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"Offline
Strony: 1