Rsync je rychlý a všestranný nástroj příkazového řádku, který synchronizuje soubory a složky mezi dvěma umístěními přes vzdálený shell.
S Rsync můžete zrcadlit data, vytvářet přírůstkové zálohy a kopírovat soubory mezi systémy. Při kopírování dat možná budete chtít vyloučit jeden nebo více souborů nebo adresářů na základě jejich názvu nebo umístění.
V tomto tutoriálu vám ukážeme, jak vyloučit soubory a adresáře pomocí rsync.
Než začnete #
Měli byste mít základní znalosti o tom, jak rsync funguje.
V příkladech níže použijeme rsync s -a
, možnost. To říká rsync, aby rekurzivně synchronizoval adresáře, přenášel speciální a bloková zařízení a zachoval symbolické odkazy, časy úprav, skupinu, vlastnictví a oprávnění.
Při vyloučení souborů nebo adresářů musíte použít jejich relativní cesty ke zdrojovému adresáři.
Existují dvě možnosti, jak určit soubory a adresáře, které chcete vyloučit:
- Z příkazového řádku pomocí
--exclude
možnost. - Ze souboru pomocí
--exclude-from
možnost.
Vyloučit konkrétní soubor #
Chcete-li vyloučit konkrétní soubor, předejte relativní cestu k souboru do --exclude
možnost.
V následujícím příkladu soubor src_directory/file.txt
nebudou převedeny:
rsync -a --exclude 'file.txt' src_directory/ dst_directory/
Vyloučit konkrétní adresář #
Vyloučení konkrétního adresáře je stejné jako vyloučení souboru, stačí předat relativní cestu k adresáři do --exclude
možnost, jak je uvedeno níže:
rsync -a --exclude 'dir1' src_directory/ dst_directory/
Pokud chcete vyloučit obsah adresáře, ale ne adresář samotný, použijte dir1/*
místo dir1
:
rsync -a --exclude 'dir1/*' src_directory/ dst_directory/
Vyloučit více souborů nebo adresářů #
Chcete-li vyloučit více souborů nebo adresářů, jednoduše zadejte více --exclude
možnosti:
rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/
Pokud dáváte přednost použití jediného --exclude
můžete vypsat soubory a adresáře, které chcete vyloučit, ve složených závorkách {}
oddělené čárkou, jak je uvedeno níže:
rsync -a --exclude={'file1.txt','dir1/*','dir2'} src_directory/ dst_directory/
Pokud je počet souborů a/nebo adresářů, které chcete vyloučit, velký, místo použití více --exclude
možnosti můžete zadat soubory a adresáře, které chcete ze souboru vyloučit, a předat soubor do --exclude-from
možnost.
Níže uvedený příkaz dělá přesně to samé jako ten výše:
rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/
vyloučit-soubor.txtfile1.txt
dir1/*
dir2
Vyloučit více souborů nebo adresářů podle vzoru #
Pomocí rsync můžete také vyloučit soubory a adresáře na základě vzoru, který odpovídá názvu souboru nebo adresáře.
Chcete-li například vyloučit všechny .jpg
soubory, které byste spustili:
rsync -a --exclude '*.jpg*' src_directory/ dst_directory/
Je trochu složitější vyloučit všechny ostatní soubory a adresáře kromě těch, které odpovídají určitému vzoru. Řekněme, že chcete vyloučit všechny ostatní soubory a adresáře kromě souborů končících na .jpg
.
Jednou z možností je použít následující příkaz:
rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/
Při použití více možností zahrnout/vyloučit se použije první pravidlo shody.
--include='*.jpg'
- Nejprve zahrneme všechny.jpg
soubory.--include='*/'
- Poté zahrneme všechny adresáře vsrc_directory
adresář. Bez tohoto rsync zkopíruje pouze*.jpg
soubory v adresáři nejvyšší úrovně.-m
- Odstraní prázdné adresáře.
Další možností by bylo nasměrovat výstup z find
commandto rsync:
find src_directory/ -name "*.jpg" -printf %P\\0\\n | rsync -a --files-from=- src_directory/ dst_directory/
-printf %P\\0\\n
- odstranísrc_directory/
z cesty k souboru.--files-from=-
- znamená zahrnout pouze soubory ze standardního vstupu (soubory předané příkazem find).
Závěr č.
V tomto tutoriálu jste se naučili, jak vyloučit soubory a adresáře při přenosu dat pomocí Rsync. Na stránce uživatelské příručky Rsync se můžete o Rsync dozvědět mnohem více.