rsync - usuwanie plików

Konfiguracja serwerów, usług, itp.
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

rsync - usuwanie plików

Post autor: sethiel »

Mam rsyncd na systemie_1 i tam wystawiony katalog
Na systemie_2 jest w cronie rsync który zbiera dane wystawione przez system_1.

Chciałbym aby w trakcie wykonywania kopii rsync usuwał pliki (ale tylko pliki a nie katalogi) które kopiuje - czyli innymi słowy aby nie kopiował plików a je przenosił.
Ale jak nadmieniłem ma nie ruszać struktury katalogów.

W podręczniku odnalazłem opcję --delete (before/after), ale nie bardzo o to mi chodzi.
I tak czytam i czytam te strony mam i jakoś nie widzę.
Awatar użytkownika
Unit
Beginner
Posty: 356
Rejestracja: 27 marca 2007, 09:39

Post autor: Unit »

Przykładowo: masz katalog_1 i katalog_2, do którego robisz rsync-ki.
Teraz masz pliki w katalogu_1 o nazwach: plik1 plik2 plik3. Robisz rsync do katalogu_2 i masz dokładnie te same dane w obu katalogach.
Usuwasz z katalogu_1 plik2 i utworzysz plik4. Robisz rsync do katalogu_2 i zawartość tego katalogu będzie wyglądała: plik1 plik2 plik3 plik4 (tak plik2 nie został usunięty). Jeżeli użyjesz rsync-a z opcją --delete zostaną usunięte pliki z katalogu_2, które usunąłeś w katalogu_1.
Dlatego jeżeli dalej usuniesz plik1 i utworzysz plik5, a następnie zrobisz rsync --delete z katalogu_1 do katalogu_2, zawartośc katalogu_2 będzie miała dane: plik3 plik4 plik5 (pliki1 i plik2 zostały wcześniej usunięte)
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

No i właśnie niedobrze. Więc na pewno opcja --delete w grę nie wchodzi.
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

No ale zaraz...jeżeli uzyjesz rsync'a bez opcji --delete, a po operacji rsyncowania usuniesz co chcesz z katalogu_1 to będziesz miał w katalogu_2 to co usunąłeś w katalogu_1. Zatem: tworzysz plik_nowy w katalogu1, następnie rsync, plik_nowy pojawia sie w katalogu_2, usuwasz plik_nowy z katalogu_1. Masz twój efekt. Po tej operacji na pliku_nowy będzie wykonana operacja kopiuj&usun == przenies.

Czyz nie?
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

No nie bardzo, nawet podczas rsync może się tam coś pojawić - więc to rsync musi usuwać, a jako że jest tam gazylion podkatalogów to ręcznie tego nie zrobię, oczywiście można zrobić "usuń pliki starsze niż jeden dzień" ale i tak ten skrypt musiałby się uruchamiać po sukcesie rsynca - bo zdarza się że maszynka wykonująca rsync ma problemy.
Awatar użytkownika
Bastian
Member
Posty: 1424
Rejestracja: 30 marca 2008, 16:09
Lokalizacja: Poznañ

Post autor: Bastian »

No ok, zmusiles mnie zebym odpalił mana rsync'a:

--remove-source-files sender removes synchronized files (non-dir)
sethiel
Junior Member
Posty: 762
Rejestracja: 28 stycznia 2008, 11:50
Lokalizacja: Wrocław

Post autor: sethiel »

No nie wierzę, patrzyłem i nie widziałem. Muszę kupić lepsze szkła.
Zaraz wypróbuję - tym razem na testowym organizmie, ostatnio wypróbowałem super skrypt na działającym i się zdziwiłem jak wszystkie pliki zniknęły bez powrotu.
A jeszcze bardziej niż ja zdziwiłem zmartwił się właściciel plików.

[edycja]
Doskonale - to to o co chodziło, dziekuję.
ODPOWIEDZ