Android

Jak wykluczyć pliki i katalogi za pomocą rsync

rsync - Linux File Copying Tool

rsync - Linux File Copying Tool

Spisu treści:

Anonim

Rsync to szybkie i wszechstronne narzędzie wiersza poleceń, które synchronizuje pliki i foldery między dwiema lokalizacjami za pomocą zdalnej powłoki.

Rsync umożliwia tworzenie kopii lustrzanych danych, tworzenie przyrostowych kopii zapasowych i kopiowanie plików między systemami. Podczas kopiowania danych możesz wykluczyć jeden lub więcej plików lub katalogów na podstawie ich nazwy lub lokalizacji.

W tym samouczku pokażemy, jak wykluczyć pliki i katalogi za pomocą rsync.

Zanim zaczniesz

Powinieneś mieć podstawową wiedzę na temat działania rsync.

W poniższych przykładach użyjemy rsync z opcją -a Dzięki temu rsync synchronizuje katalogi rekurencyjnie, przenosi urządzenia specjalne i blokuje oraz zachowuje dowiązania symboliczne, czasy modyfikacji, grupę, własność i uprawnienia.

Wykluczając pliki lub katalogi, musisz użyć ich względnych ścieżek do katalogu źródłowego.

Istnieją dwie opcje określania plików i katalogów, które chcesz wykluczyć:

  • Z wiersza poleceń za pomocą opcji --exclude Z pliku za pomocą opcji --exclude-from .

Wyklucz określony plik

Aby wykluczyć określony plik, przekaż ścieżkę względną do pliku do opcji --exclude .

W poniższym przykładzie plik src_directory/file.txt nie zostanie przesłany:

rsync -a --exclude 'file.txt' src_directory/ dst_directory/

Wyklucz konkretny katalog

Wykluczenie określonego katalogu jest takie samo jak wykluczenie pliku, wystarczy przekazać ścieżkę względną do katalogu do opcji --exclude , jak pokazano poniżej:

rsync -a --exclude 'dir1' src_directory/ dst_directory/

rsync -a --exclude 'dir1/*' src_directory/ dst_directory/

Wyklucz wiele plików lub katalogów

Aby wykluczyć wiele plików lub katalogów, po prostu określ wiele opcji --exclude :

rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/

rsync -a --exclude={'file1.txt', 'dir1/*', 'dir2'} src_directory/ dst_directory/

Jeśli liczba plików i / lub katalogów, które chcesz wykluczyć, jest duża, zamiast korzystać z wielu opcji --exclude , możesz określić pliki i katalogi, które chcesz wykluczyć w pliku i przekazać plik do --exclude-from opcja.

Poniższe polecenie działa dokładnie tak samo jak powyższe:

rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/ exclude-file.txt

file1.txt dir1/* dir2

Wyklucz wiele plików lub katalogów na podstawie wzorca

Za pomocą rsync można również wykluczyć pliki i katalogi na podstawie wzorca pasującego do nazwy pliku lub katalogu.

Na przykład, aby wykluczyć wszystkie pliki .jpg , które uruchomisz:

rsync -a --exclude '*.jpg*' src_directory/ dst_directory/

Trochę trudniej jest wykluczyć wszystkie inne pliki i katalogi oprócz tych, które pasują do określonego wzorca. Załóżmy, że chcesz wykluczyć wszystkie inne pliki i katalogi oprócz plików z rozszerzeniem .jpg .

Jedną z opcji jest użycie następującego polecenia:

rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/

W przypadku korzystania z wielu opcji włączania / wyłączania obowiązuje pierwsza reguła dopasowania.

  • --include='*.jpg' - Najpierw uwzględniamy wszystkie pliki .jpg . --include='*/' - Następnie uwzględniamy wszystkie katalogi w katalogu src_directory . Bez tego rsync skopiuje tylko pliki *.jpg katalogu najwyższego poziomu. -m - Usuwa puste katalogi.

Inną opcją byłoby przesłanie danych wyjściowych polecenia find do rsync:

find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/

  • -printf %P\\0\\n - usunie src_directory/ ze ścieżki do pliku. --files-from=- - oznacza, że ​​zawierają tylko pliki ze standardowego wejścia (pliki przekazane z polecenia find).

Wniosek

W tym samouczku nauczyłeś się, jak wykluczać pliki i katalogi podczas przesyłania danych za pomocą Rsync. Jest wiele więcej informacji na temat Rsync na stronie Podręcznika użytkownika Rsync.

terminal rsync