Strona 1 z 1

rsync - usuwanie plików

: 07 sierpnia 2012, 15:09
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ę.

: 07 sierpnia 2012, 15:41
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)

: 07 sierpnia 2012, 15:51
autor: sethiel
No i właśnie niedobrze. Więc na pewno opcja --delete w grę nie wchodzi.

: 07 sierpnia 2012, 22:30
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?

: 08 sierpnia 2012, 09:28
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.

: 08 sierpnia 2012, 11:31
autor: Bastian
No ok, zmusiles mnie zebym odpalił mana rsync'a:

--remove-source-files sender removes synchronized files (non-dir)

: 08 sierpnia 2012, 11:41
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ę.