Rsync kopírujte a synchronizujte soubory se vzdáleným serverem

Nástroj Rsync lze použít ke kopírování a synchronizaci souborů a složek z místního serveru Linux na vzdálený a naopak. Rsync umožňuje kopírovat data mezi servery uvnitř zabezpečeného připojení SSH. Také, rsync, Podporuje kompresi dat za chodu, což zlepšuje výkon systému.

Chcete-li zabránit ztrátě informací při odesílání souborů, rsync nejprve zkopíruje všechny přenesené informace do dočasného souboru. Další důležitou vlastností rsync je to, že soubory jsou přenášeny do jednoho proudu, pro každý soubor není vytvořen samostatný tok (což způsobuje problém při přenosu velkého počtu malých souborů do jiných utilit).

V tomto článku se budeme zabývat případy použití. rsync synchronizovat a kopírovat adresáře a soubory a uvést příklady pokročilých nastavení.

Obsah:

  • Instalace a základní volba rsync
  • Rsync: kopírování / synchronizace místního adresáře
  • Rsync: konfigurace synchronizace se vzdáleným serverem
  • Další příklady použití rsync
  • Zálohujte na Linuxu pomocí rsync

Instalace a základní volba rsync

Instalace rsync neliší se od instalace, jakýkoli jiný balíček. Na CentOS je balíček rsync přítomen v základním úložišti a je nainstalován pomocí yum (nebo dnf na CentOS 8):

# yum install rsync -y

Syntaxe příkazu je následující:

# rsync možnosti přijímače zdroje

Jako zdroj a příjemce můžete určit místní nebo vzdálený adresář na jiném serveru.

Možnosti:

  • -v - zobrazí podrobné informace o procesu
  • -c - zkontrolujte kontrolní součty souborů
  • -q - minimální informace
  • -a - režim archivace
  • -R - relativní cesty
  • -y - nepřepisujte novější soubory
  • -b - záloha
  • -l - kopírování symbolických odkazů
  • -L - zkopírujte obsah odkazu
  • -H - kopírovat pevné odkazy
  • -g - uložit skupinu
  • -p - uložit oprávnění pro soubory
  • -t - uložit čas na změnu
  • -x - pracovat pouze v tomto FS
  • -e - použijte jiný transportní protokol (např. ssh)
  • -z - před přenosem komprimujte soubory
  • -smazat - smaže soubory, které nejsou ve zdroji
  • -vyloučit - vyloučit soubory
  • -rekurzivní - opakuje se přes adresáře rekurzivně
  • -no-rekurzivní - zakáže rekurzi
  • -progress - zobrazení průběhu přenosu souborů
  • -statistika - statistika přenosu
  • -max-size - maximální velikost souboru pro přenos
  • -bwlimit - rychlostní limit pro přenos souborů
  • -version - užitečná verze

Rsync: kopírování / synchronizace místního adresáře

Rsync lze použít ke kopírování souborů mezi adresáři místního serveru. Pokud potřebujete kopírovat soubory z jednoho adresáře do druhého, spusťte příkaz:

# rsync /var/www/html/package.zip / var / www / tmp /

V tomto případě byl soubor package.zip jednoduše zkopírován do adresáře / var / www / tmp /.

Pro kopírování můžete přidat několik možností. Například předkomprimujte soubor před kopírováním, zobrazte podrobné informace a postup kopírování souboru, proveďte následující kroky:

# rsync -vz - postup /var/www/html/package.zip / var / www / tmp /

K synchronizaci obsahu místních adresářů můžete použít rsync. Například rsync je vhodné použít, když potřebujete kopírovat soubory z pracovního adresáře do úložiště připojeného k oddílu. Několik příkladů příkazů:

# rsync -zvr / var / www / site / backup /

Adresář / var / www / site jsme zkopírovali do záložního adresáře, volba -r povoleno rekurzivně kopírovat všechny vnořené adresáře a soubory.

Chcete-li při kopírování uložit všechny atributy souborů, například datum změny a datum vytvoření souborů, přidejte klíč -a:

# rsync -zvra / var / www / site / backup /

Pokud chcete kopírovat pouze upravené soubory, přidejte možnost -c:

# rsync -zvrac / var / www / site / backup /

Změnil jsem pouze jeden soubor a spustil příkaz. V důsledku toho byl do cílového adresáře zkopírován pouze upravený soubor..

Je velmi vhodné použít tuto možnost, pokud se soubory často nemění. Úspora času při kopírování / synchronizaci adresáře.

Aby se nepřeplnilo záložní adresář, můžete přidat možnost -odstranit, to vám umožní porovnat soubory se zdrojem a pokud je soubor v cílovém adresáři a jeho nepřítomnost ve zdrojovém adresáři, smažte jej automaticky. Vyzývám vás však, abyste tuto možnost používali opatrně, protože pokud nakonfigurujete adresář, který má být zkopírován do koruny, v případě selhání nebo rušení z vnějšku do pracovního adresáře a následného vymazání pracovních souborů, získáte také informace v zálohách, které vám neumožní obnovit vaše data. . Příklad:

# rsync -zvrac --delete / var / www / site / backup /

Rsync: konfigurace synchronizace se vzdáleným serverem

Nejčastěji kopírujte / synchronizujte rsync se vzdáleným serverem se používá k zálohování nebo synchronizaci konfigurace uzlu clusteru. Můžete automaticky synchronizovat data z produkčního serveru se záložním serverem a v případě problémů na produktivním severu vše rychle přenést na záložní server. Toto je poměrně pohodlná a snadno konfigurovatelná varianta..

V moderních verzích rsync se protokol SSH standardně používá k přenosu souborů. Můžete však také použít démona rsyncd. Chcete-li to provést, musí být klient rsync nainstalován ve vzdáleném počítači a jeho démon je přidán ke spuštění:

# Systemctl povolit rsyncd

Konfigurační soubor rsync je /etc/rsyncd.conf. V tomto souboru můžete konfigurovat nastavení rsync a nastavení pro synchronizaci pro různé zdroje.

Pro synchronizaci pomocí démona rsync je adresa vzdáleného serveru zadána jako rsync: //. Například:

# rsync -av /var/www/site/package.zip rsync: //192.168.1.32/backup

Chcete-li zkopírovat soubor na vzdálený server, použijte příkaz:

# rsync -az /var/www/site/package.zip root @ IP: / backup /

Kde IP je adresa vzdáleného serveru. Po spuštění příkazu si vzdálený server vyžádá heslo uživatele (pokud je povoleno ověřování hesla). Pro automatickou autorizaci musíte nakonfigurovat klíče SSH.

Zkopírujte adresář z místního serveru na vzdálené:

# rsync -zvra / var / www / root root @ IP: / backup /

To znamená, že vše je stejné jako u místních adresářů, pouze zadáme adresu vzdáleného serveru.

Můžete také synchronizovat soubory ze vzdáleného serveru na lokální, příkaz pro tento se trochu změní:

# rsync -zvra root @ IP: / backup / / backup

Chcete-li vynutit použití protokolu SSH pro kopírování souborů, zadejte to ve svém příkazu (volba -e se používá pro výběr transportního protokolu pro kopírování souborů):

# rsync -zvrae ssh root @ IP: / backup / / backup

Pokud má vzdálený server SSH jiný port než standardní, můžete jej také zadat:

# rsync -zvrae "ssh -p 2222" root @ IP: / backup / / backup

Další příklady použití rsync

Pokud přenášíte hodně informací v rámci synchronizační relace a je důležité omezit přenosovou rychlost, nastavte tuto možnost pomocí doplňkové volby -bwlimit (uveďte rychlost v KB / s):

# rsync -zvra - bwlimit = 100 / var / www / kořen webu @ IP: / backup /

Při přenosu souborů na vzdálený server můžete omezit maximální velikost souborů, které mají být kopírovány. Například chcete zkopírovat všechny soubory kromě souborů větších než 1 MB:

# rsync -zvra --max-size = '1m' / var / www / kořen webu @ IP: / backup /

Potřebujete-li na serveru jednosměrnou synchronizaci a po přenosu souborů na vzdálený server je třeba odstranit soubory ze zdrojového serveru, použijte volbu --remove-source-files:

# rsync -zvra - odstranit zdrojové soubory - postup /var/www/site/package.zip root @ IP: / backup /

Po provedení příkazu byl soubor zkopírován na vzdálený server a odstraněn na zdroji:

Také velmi výhodné možnosti -včetně a -vyloučit, pomocí těchto voleb můžete udělit výjimky pro kopírování adresářů nebo souborů:

# rsync -zvra - exclude = administrator / / var / www / root root @ IP: / backup /

V tomto případě jsme při kopírování na vzdálený server vyloučili adresář „administrator“.

# rsync -zvra --include = '*. php' --exclude = '*' / var / www / site / administrator / root @ IP: / backup /

Přidáním možnosti -včetně dokázali jsme nastavit filtr podle souborů, zkopírovali jsme pouze soubory s příponou php.

Zálohujte na Linuxu pomocí rsync

Ve svém otroku používám část rsync pro úlohy automatického zálohování v systému Linux. Můžete psát jednoduché bash skripty nebo jednoduše přidat příkaz rsync do cronu a spustit podle plánu.

Můžete například přidat příkaz do cron:

01 30 * * * rsync -zvra root @ IP: / backup / / backup

Výsledkem bude, že každý den v 1-30 nocích budou synchronizovány adresáře místních a vzdálených serverů.

To stojí za zvážení, aby se provedl příkaz rsync na vzdáleném serveru pomocí cronu je vhodné nakonfigurovat autentizaci serveru pomocí klíče SSH. Příklady skriptů pro zálohování jsme uvedli v článku „Skripty pro zálohování souborů z Linuxu do cloudu“, tam se používá rsync ke kopírování souborů do připojených cloudových úložišť.