GNU/Linux >> Znalost Linux >  >> Linux

Udržování linuxových souborů a adresářů synchronizovaných s rsync

Správci (nebo normální uživatelé) často potřebují zálohovat soubory nebo je udržovat synchronizované mezi více místy (včetně místních a vzdálených), aniž by pokaždé přenášeli a přepisovali všechny soubory v cíli. Jedním z nejužitečnějších nástrojů systémového administrátora pro tento druh úkolů je rsync .

rsync nástroj může rekurzivně procházet adresářovou strukturou a aktualizovat druhé umístění novými/změněnými/odebranými soubory. Před odesláním zkontroluje, zda v cílovém umístění existují soubory, čímž šetří šířku pásma a čas pro vše, co vynechá. Také rsync poskytuje možnost synchronizovat adresářovou strukturu (nebo dokonce jeden soubor) s jiným cílem, místním nebo vzdáleným. Aby toho bylo dosaženo efektivně, ve výchozím nastavení bude kontrolovat časy úprav souborů. Může také provést rychlou hašovací kontrolu souborů ve zdroji a cíli, aby zjistil, zda je potřeba přenést novou kopii či nikoli, což může ušetřit značný čas a šířku pásma.

[ Také by se vám mohlo líbit: 5 pokročilých tipů pro rsync pro správce systému Linux ]

Protože je standardně dodáván s většinou distribucí Linuxu, mělo by být snadné začít. To je také případ macOS, *BSD a dalších operačních systémů podobných Unixu. Práce s rsync je snadné a lze jej použít na příkazovém řádku, ve skriptech a některé nástroje jej zabalí do pěkného uživatelského rozhraní pro správu úloh.

Na příkazovém řádku rsync se obecně vyvolává pomocí několika parametrů, které definují, jak se má chovat, protože jde o flexibilní nástroj. Ve své nejjednodušší podobě rsync lze říci, aby zajistil, že soubor v jednom umístění by měl být stejný v druhém umístění v souborovém systému.

Příklad:

# rsync file1.txt file2.txt

Obvykle je žádoucí předat rsync několik parametrů, které zajistí, že se věci budou chovat tak, jak by je člověk očekával. Předávání parametrů, jako je -a protože „archiv“ je docela běžné, protože jde o „metaparametr“, který za vás automaticky vyvolá několik dalších. -a je ekvivalentní -rlptgoD , který se dělí na:

  • -r :Rekurze přes adresáře (na rozdíl od práce pouze se soubory v aktuálním adresáři)
  • -l :Kopírovat symbolické odkazy jako nové symbolické odkazy
  • -p :Zachovat oprávnění
  • -t :Zachovat časy úprav
  • -g :Zachování vlastnictví skupiny
  • -o :Zachování vlastnictví uživatele (které je omezeno pouze na superuživatele při práci se soubory jiných uživatelů)
  • -D :Kopírování souborů zařízení

Často to funguje tak, jak si uživatel přeje, a není nutné žádné významné změny. Některé z nich však mohou být v rozporu s tím, co uživatel potřebuje, takže jejich rozdělení na konkrétní funkce může být tou správnou odpovědí.

Mezi další pozoruhodné možnosti patří:

  • -n :Spusťte příkaz nasucho bez přenosu souborů
  • --list-only :Zobrazí pouze seznam souborů, které se rsync by přenesl
  • -P :Zobrazit průběh na soubor
  • -v :Zobrazuje celkový průběh s výstupem informací o každém souboru po jeho dokončení
  • -u :Přeskočte aktualizaci cílových souborů, pokud jsou novější než zdrojové
  • -q :Tichý režim. Užitečné pro zahrnutí do skriptování, když není vyžadován výstup terminálu
  • -c :K určení, které soubory se mají přeskočit, použijte hodnotu kontrolního součtu, nikoli čas a velikost úpravy
  • --existing :Aktualizujte pouze soubory, ale nevytvářejte nové, které chybí
  • --files-from=FILE :Čtení zdrojových souborů seznamu z textového souboru
  • --exclude=PATTERN :Použijte PATTERN k vyloučení souborů ze synchronizace
  • --exclude-from=FILE :Stejné jako výše, ale čtení ze souboru
  • --include=PATTERN :Používá se také k negaci pravidel vyloučení
  • --include-from=FILE :Stejné jako výše, ale čtení ze souboru

Moje osobní výchozí sada parametrů pro rsync nakonec to bude -avuP (archivujte, podrobný výstup, aktualizujte pouze nové soubory a ukažte postup prováděné práce).

Zdroj a cíle

Zdrojem a cílem synchronizace jsou soubory a adresáře. Také rsync poskytuje funkcionalitu pro interakci se vzdálenými systémy přes SSH, což zabraňuje uživateli nastavit síťové sdílení, aby bylo možné synchronizovat soubory z jednoho místa na druhé. To znamená, že můžete snadno skriptovat rsync úlohy po konfiguraci klíčů SSH na obou koncích, čímž odpadá nutnost ručního přihlašování pro vzdálenou synchronizaci souborů.

Příklad:

Rozdělení syntaxe zde:

  • Spuštění rsync příkaz
  • Pomocí -avuP parametry popsané výše
  • Kopírování místního adresáře Dokumenty
  • Pomocí steve jako uživatel na vzdáleném systému
  • Kde se vzdálený systém nazývá fileserver a lze k nim zasáhnout pod tímto jménem
  • A relativní cesta ze steveova domova je uvedena za : - a v tomto případě to znamená umístit to do samotného steveova domovského adresáře

Tím se zkopíruje vše ze steveovy složky Dokumenty do adresáře Dokumenty na vzdáleném systému, pouze se aktualizují soubory, které se změnily nebo jsou nové. Stačí spustit toto jednou (dokud nebudou nové změny). Jeho opětovné spuštění ihned poté by mělo produkovat relativně stejné množství výstupu, ale být mnohem rychlejší, protože přeskakuje všechny soubory.

[ Uživatelská příručka API:7 osvědčených postupů účinných programů API ] 

Sbalit

Existuje mnoho užitečných způsobů, jak využít sílu rsync . Často je to tak jednoduché, jako jednorázové spuštění z příkazového řádku a zkopírování sady souborů, aniž byste se museli starat o ztrátu času kopírováním věcí, které již v cílovém umístění existují. Skriptování, přidání do cron úlohy a experimentování s různými parametry pomáhá průměrnému správci systému dosáhnout ještě více cílů.


Linux
  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Najděte soubory a adresáře v Linuxu jako profík

  3. Najděte největší soubory a adresáře v Linuxu

  1. Linux – standardní a/nebo společné adresáře na operačních systémech Unix/linux?

  2. Synchronizace adresářů v obou směrech pomocí Rsync?

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

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

  2. Zkopírujte soubory pomocí SCP a Rsync

  3. Linuxový příkaz rsync s praktickými příklady