Czy ktoś może mi powiedzieć, co to robi?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
To usunąć bkp01
i offbk2
i wysyła dziennik offbkp01.log
?
Czy ktoś może mi powiedzieć, co to robi?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
To usunąć bkp01
i offbk2
i wysyła dziennik offbkp01.log
?
Odpowiedzi:
Aby podzielić to na części, istnieją dwie główne sekcje, a następnie podsumowanie i uwagi:
rsync
Polecenie:rsync -uva --delete /srv/bkp01 /srv/offbk2/
rsync-command > ~/offbkp01.log
rsync
Komenda:rsync
- Zakładam, że nie wymaga to wyjaśnienia (ale dostarczy na żądanie).-uva
- Zestaw opcji pojedynczych znaków, (krótka, a następnie długa forma):
-u
--update
- Mówi rsync, że wszystkie modyfikacje powinny dotyczyć tylko plików w miejscu docelowym, które są w tym samym wieku (i różnych rozmiarach) lub starsze niż pliki w źródle. Oznacza to, że rsync powinien przekazywać tylko zmiany ze źródła, które zaktualizowałyby miejsce docelowe, ale nie powinien wprowadzać żadnych zmian, które spowodowałyby, że plik docelowy stałby się starszą wersją.
Jest kilka wyjątków. Różnice w typie (np. Jeden to plik, drugi to katalog) spowoduje aktualizację bez względu na daty. Dowiązania symboliczne i inne pliki specjalne ignorują tę opcję. Co ważne, nie wpływa to na to, które pliki zostaną usunięte.
-v
--verbose
- Zwiększa ilość informacji drukowanych przez rsync podczas wykonywania. Bez tego rsync nic nie wydrukuje (prawie?). Po wybraniu tej opcji rsync powie ci, które pliki są przesyłane, i umieści podsumowanie na końcu. Więcej v
zwiększa drukowane informacje, chociaż strona podręcznika mówi, że więcej niż dwa v
s powinny być używane tylko podczas debugowania. -a
--archive
- Jest to równoważne z kilkoma innymi opcjami ( -rlptgD
) spakowanymi razem. Jak sugeruje długa nazwa, jest to szybki sposób na ustawienie wielu typowych opcji archiwizacji plików i katalogów. To będzie:-r
--recursive
- Mówi rsync, aby rekurencyjnie kopiowało katalogi. Bez tej lub bardziej szczegółowej -d
--dirs
opcji rsync po prostu pominie wszystkie napotkane katalogi (i powie ci o tym w wynikach). -l
--links
- Gdy źródłem jest dowiązanie symboliczne, utwórz dowiązanie symboliczne w miejscu docelowym. W zależności od innych opcji, dowiązania symboliczne mogą zostać pominięte lub przekształcone w pełną oddzielną kopię (tj. Prawdziwy katalog z zawartością (lub inną kopią pliku) zamiast dowiązania symbolicznego). -p
--perms
- Ustawia uprawnienia plików docelowych na takie same jak pliki źródłowe. -t
--times
- Ustawia czasy modyfikacji plików docelowych na takie same jak pliki źródłowe. Ponieważ utrzymywanie tych czasów w synchronizacji sprawia, że algorytm rsync jest bardziej wydajny, zazwyczaj zawsze chcesz, aby był on używany, jawnie lub niejawnie. -g
--group
- Ustawia atrybut grupy miejsca docelowego na taki sam jak źródło. Domyślnie kojarzy się z nazwy, ale w niektórych okolicznościach wróci do numeru identyfikacyjnego grupy. Jeśli odbierający rsync nie jest uruchamiany jako superużytkownik (lub udaje go --fake-super
), można ustawić tylko grupy, których członkiem jest użytkownik, który wywołał rsync po stronie odbierającej . W przeciwnym razie grupa zostanie po prostu ustawiona na domyślną grupę tego samego użytkownika wspomnianego wcześniej. -D
- Odpowiednik opcji --devices
i --specials
razem. Oni mają na myśli:--devices
- Pliki urządzeń znakowych i blokowych są przesyłane. Nie ma wpływu, jeśli odbierający rsync nie jest uruchamiany jako superużytkownik (lub udaje go --fake-super
). --specials
- Przesyłane są pliki specjalne (takie jak gniazda) (inaczej nie byłyby). --delete
- Informuje rsync, aby usunął pliki znajdujące się w miejscu docelowym, ale nie w źródle. NIE ma na to wpływu powyższa opcja aktualizacji (w rzeczywistości, jak to możliwe, ponieważ większość systemów plików nie zachowa potrzebnych danych, aby zobaczyć, która akcja była nowsza?). Ta opcja działa na źródła po rozwinięciu symboli wieloznacznych / glob, więc katalog / * nie jest tym samym, co katalog /. Kilka ważnych uwag:--dry-run
najpierw wypróbować tę opcję, która spowoduje udany transfer, który pozwala upewnić się, że nie zostaną wprowadzone żadne niezamierzone zmiany. --ignore-errors
opcją, chociaż prawdopodobnie nie chcesz tego zrobić.--delete-during
algorytm jest używany. Jeśli odbiornik jest starszy, wówczas --delete-before
jest używany. Jeśli ważne jest, aby pliki zachowały pewną spójność w przypadku wystąpienia błędu (na przykład nie usuwając niczego, dopóki nie zostaną wprowadzone inne zmiany), należy użyć opcji bardziej szczegółowej niż domyślna./srv/bkp01
- Plik lub katalog źródłowy. Istnieją pewne szczegółowe zasady dotyczące tego, co oznacza, że na końcu katalogu znajduje się / nie jest ukośnikiem, a jeśli inny katalog istnieje. Możesz zobaczyć sekcję UŻYTKOWANIE strony podręcznika dla szczegółów, ale tutaj brak ukośnika końcowego oznacza, że ten katalog zostanie skopiowany do miejsca docelowego, a nie zawartość tego katalogu zostanie skopiowana do miejsca docelowego. To samo, jeśli jest to plik, a nie katalog./srv/offbk2/
- Katalog docelowy. Zasadniczo będzie to zawsze ostatni element wymieniony w sekcji polecenia rsync, chyba że zostanie użyta opcja określająca go w innym miejscu polecenia.>
- To przekierowuje standardowe wyjście (standardowe wyjście) z dowolnego pliku po lewej stronie do pliku po prawej, stając się jego zawartością i tworząc plik (jeśli to możliwe), jeśli jeszcze nie istnieje. Niektóre uwagi:2>&1
do samego końca powyższej komendy. Porządek jest ważny, więc bądź ostrożny uogólniając, gdzie to umieścić. Magiczna liczba 1
odnosi się do stdout, 2
odnosi się do stderr, &
jest (zasadniczo) „adresem”, a pełny fragment polecenia oznacza „przekierowanie wyjścia stderr do strumienia stdout”. >>
zamiast tego. Metoda przekierowania stderr w to samo miejsce pozostaje taka sama. 1> stdout_file 2> stderr_file
. Możesz również użyć >>
zamiast >
tego polecenia, aby to zrobić, dodając zamiast zastępując.~
- Jest to skrót od katalogu domowego bieżącego użytkownika i stanowi część następnego bitu.~/offbkp01.log
- plik offbkp01.log w katalogu osobistym bieżącego użytkownika. W tym miejscu zostaną umieszczone dane wyjściowe polecenia rsync z powodu przekierowania za pomocą >
.Podsumowując, polecenie to:
/srv/bkp01
, /srv/offbk2/bkp01
, i usunie wszystko, /srv/offbk2/
co nie jest w/srv/bkp01
, z następującymi warunkami:
/srv/offbk2/
który jest nowszy niż jego modyfikacji czasu /srv/bkp01
, to nie będą aktualizowane , jeśli oba elementy są jeszcze tego samego typu (zwykły plik, katalog lub dowiązanie (? )). Dodatkowo rsync wydrukuje pewne informacje o tym, co robi (w szczególności, które pliki są przesyłane, oraz końcowe podsumowanie ), które powłoka zapisze w pliku ~/offbkp01.log
. Ten plik dziennika zostanie utworzony od nowa, jeśli jeszcze nie istnieje, i zostanie zastąpiony, jeśli już istnieje.
NB: --fake-super
jest opcją używaną do spowodowania, aby rsync symulował działania superużytkownika. Robi to za pomocą rozszerzonych atrybutów plików do przechowywania atrybutów, których nie można ustawić bez większych uprawnień. Rzeczywista wersja każdego atrybutu jest ustawiona na cokolwiek sensownego, biorąc pod uwagę dostępne opcje i uprawnienia. Chociaż sprawia to, że wygodne jest tworzenie kopii zapasowych, nawet jeśli nie masz uprawnień superużytkownika, należy również pamiętać, że może to stwarzać ryzyko bezpieczeństwa większe niż użycie rsync w ogóle, ponieważ rzeczywiste atrybuty bezpieczeństwa mogą nie być ustawione właściwie, mimo że informacje na ich temat zostały zapisane.
Źródło: dużo czasu pracując z rsync i czytając jego stronę podręcznika .
Z instrukcji:
--kasować
To każe rsync usunąć niepotrzebne pliki ze strony odbierającej (te, które nie są po stronie wysyłającej), ale tylko dla synchronizowanych katalogów. Musisz wysłać rsync, aby wysłać cały katalog (np. „Katalog” lub „katalog /”) bez użycia znaku zastępczego dla zawartości katalogu (np. „Katalog / *”), ponieważ znak zastępczy jest rozszerzany przez powłokę, a zatem rsync otrzymuje żądanie do przesyłania pojedynczych plików, a nie katalogu macierzystego plików. Pliki wykluczone z transferu są również wykluczone z usunięcia, chyba że użyjesz opcji --delete-wykluczone lub zaznaczysz reguły jako pasujące tylko po stronie wysyłającej (zobacz modyfikatory włączania / wyłączania w sekcji ZASADY FILTRA).
Więc usunie pliki z miejsca docelowego, które nie są częścią oryginalnego katalogu, jeśli nie użyłeś symboli wieloznacznych.
Katalog źródłowy:
1.txt
2.txt
3.txt
Katalog docelowy:
4.txt
4.txt zniknie po tym, jak rsync i 1.txt, 2.txt i 3.txt będą w miejscu docelowym.
Jeśli chodzi o inne rzeczy:
uva
Nie, usuwa tylko niepotrzebne pliki z bkp01
katalogu.
Również:
-u
, --update
- pomiń pliki, które są nowsze w odbiorniku-v
, --verbose
- zwiększyć gadatliwość-a
, --archive
- tryb archiwizacji; równa się -rlptgoD (bez -H, -A, -X)Dane wyjściowe rsync -uva --delete /srv/bkp01 /srv/offbk2/
polecenia są wysyłane do ~/offbkp01.log
pliku za pomocą operatora przekierowania ( >
) zamiast tego do wydrukowania w twoim terminalu. Jeśli plik nie istnieje, zostanie utworzony. Jeśli plik istnieje, stara zawartość zostanie usunięta.
Zobacz man rsync
więcej informacji.
bkp01
. Po prostu usuwa zbędne pliki - tj. Te, które nie istnieją w źródle - z miejsca docelowego.
rsync
Zdalne kopiowanie plików - Synchronizuj drzewa plików na dyskach lokalnych, katalogach lub w sieci.
-u update
-v verbose
-a archive
--delete --> delete
Tutaj usunie pliki wewnątrz offbk2 .
Następnie wynik (sukces lub nie) zostanie przekierowany do tego pliku dziennika.