GNU/Linux >> Znalost Linux >  >> Linux

Jak vyloučit soubory a adresáře pomocí Rsync

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.txt
file1.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 v src_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.


Linux
  1. Jak vyloučit konkrétní adresáře z kopírování v Linuxu

  2. Jak archivovat soubory a adresáře v Linuxu [část 2]

  3. Zkopírujte soubory pomocí SCP a Rsync

  1. 6 rsync Příklady k vyloučení více souborů a adresářů pomocí exclude-from

  2. Jak kopírovat / přesouvat soubory a adresáře v Linuxu pomocí příkazů „cp“ a „mv“.

  3. Jak mohu vyloučit soubory ve výchozím nastavení pomocí rsync?

  1. Jak kopírovat soubory a adresáře v Linuxu

  2. Jak komprimovat soubory a adresáře v systému Linux (s příklady)

  3. Jak přenášet soubory v Linuxu pomocí SCP a Rsync