V předchozím článku s názvem Nástroje Sysadmin:Použití rsync ke správě zálohování, obnovy a synchronizace souborů jsem pojednával o cp
a sftp
a podívali se na základy rsync
pro přesouvání souborů. Je zde také několik dalších skvělých článků o aktivaci Sysadmin na tar a SSH, na které byste se měli podívat. Kopírování souborů do a ze vzdálených systémů a snadný způsob, jak spustit zálohu něčeho, na čem pracujete (nebo, když na to přijdete, důležitých firemních dat), jsou základní, užitečné nástroje v sadě sysadmin toolbox, které používám znovu a znovu. Někdy však možná budete chtít udělat něco trochu sofistikovanějšího, například přesunout data přes méně důvěryhodný nebo pomalejší odkaz. Rsync
může poskytnout šifrování pro ochranu při přenosu, kompresi pro lepší tok a kontrolní součty, které zajistí, že dostanete to, co jste očekávali.
[ Čtenářům se také líbilo: Jak bezpečně kopírovat soubory mezi hostiteli Linuxu pomocí SCP a SFTP ]
Údržba webových stránek
Nejprve jsem začal používat rsync
synchronizovat místní verzi webové stránky, kterou jsem spravoval v době temna, kdy CI/CD bylo jen záblesk v očích jejího otce. Mohl bych si ponechat místní kopii pro práci a také mít zálohu nejnovější verze webu. Použiji tento scénář jako svůj příklad. Můžete použít rsync
pro synchronizaci libovolného vzdáleného souborového systému pro zálohování nebo jako rychlý způsob vytvoření kanálu od testování k produkci. Také jsem jej použil k synchronizaci adresáře a poté použil tar
vytvořit místní zálohy:
skipworthy ~ enable websync ls -al
total 8
drwxrwxr-x 2 skipworthy skipworthy 4096 Dec 16 13:57 .
drwxrwxr-x 5 skipworthy skipworthy 4096 Dec 16 14:01 ..
skipworthy ~ enable websync rsync -aruv 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list
enable/
enable/bar
enable/foo
enable/index
sent 85 bytes received 229 bytes 209.33 bytes/sec
total size is 0 speedup is 0.00
skipworthy ~ enable websync ls -l
total 4
dr-xr-xr-x 2 skipworthy skipworthy 4096 Dec 16 13:49 enable
Stejně jako předtím s místním rsync
, běžíme v archivním režimu a zachováváme mtime a atributy souborů, přesouvat se do podadresářů a aktualizovat pouze data, která jsou nová nebo změněná.
Poznámka :-v
téměř vždy znamená podrobné , odesílání výstupu do konzole.
Řekněme, že jsem chtěl přidat stránku na web a nahrát ji:
skipworthy ~ enable websync rsync -aruv ./* 192.168.11.111:/usr/share/httpd/enable
sending incremental file list
pagetwo
rsync: recv_generator: mkdir "/usr/share/httpd/enable/enable" failed: Permission denied (13)
Nyní je vhodný čas poznamenat, že při používání rsync
musíte myslet na několik věcí push soubory. Rsync
potřebuje oprávnění k celému stromu adresářů, nejen k cílovému adresáři. Toho můžete dosáhnout několika způsoby. Za prvé je možné zadat uid a gid z rsync
démon v /etc/rsyncd.conf
. Dalším způsobem je spustit rsync
jako uživatel s požadovanými oprávněními. Obojí může být v zabezpečeném prostředí problematické, proto zde postupujte opatrně.
Pamatujte také, že ve výchozím nastavení, když používáte rsync
vzdáleně se připojujete přímo k rsync
služba na portu 873 . Na to je potřeba myslet při nastavování pravidel a oprávnění brány firewall. Kromě toho existují oprávnění SELinux, která jsou zcela jinou diskuzí a nespadají do rozsahu tohoto článku. Jedním z řešení problému s oprávněními k adresářům a bezpečnostních problémů obecně je použití SSH (toto by vám nyní mělo znít povědomě). SSH nastaví šifrovaný tunel a lze jej nastavit tak, aby naslouchal na libovolném portu, nemluvě o tom, že můžete zadat klíč SSH pro další zabezpečení připojení a učinit vzdálená připojení o něco jednodušší pro automatizaci.
Pokročilé funkce
Pro tento další příklad vložím tyto změny jako root. Prosím, nebuďte jako já:
rsync -aruv -e ssh ./* [email protected]:/usr/share/httpd/enable
[email protected]'s password:
sending incremental file list
pagetwo
sent 246 bytes received 36 bytes 43.38 bytes/sec
total size is 31 speedup is 0.11
Znovu si všimněte, že pro připojení jsou k dispozici obvyklé možnosti SSH, včetně zadání portu a umístění klíče. Rsync
také vám umožňuje vybrat možnost vzdáleného prostředí, pokud je nainstalována na obou koncích a nakonfigurována v .ssh/config
.
Kontrolní součty
Kontrolní součty jsem zmínil dříve a jsou zde dvě potenciálně užitečné věci. Nejprve rsync
ve výchozím nastavení spustí kontrolní součet a poté jej ověří na cíli, což vás upozorní na možnost ztráty nebo poškození dat během letu.
Za druhé, můžete také použít kontrolní součty k určení, které soubory se mají přenést (tj. které soubory jsou ve skutečnosti různé mezi zdrojem a cílem), což je užitečné, pokud si nejste jisti, zda mtime /čas představuje skutečnou verzi požadovaného souboru. Měl jsem souborové systémy, které jsem se pokoušel synchronizovat a které se dotýkaly jinou aplikací, takže časy byly nesprávné.
skipworthy ~ enable websync rsync -aruv -e ssh --checksum 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list
sent 26 bytes received 364 bytes 780.00 bytes/sec
Poznámka :To přináší další režii při zpracování a přenosu, protože pro každý soubor na každé straně je generován kontrolní součet a poté porovnáván.
Komprese
Dalším užitečným trikem je komprese. -z
volba zkomprimuje stream, --zc
nastaví typ komprese a --zl
nastaví úroveň:
skipworthy ~ enable websync rsync -aruv -e ssh --zc=zlib --zl=6 192.168.11.111:/usr/share/httpd/enable ./
receiving incremental file list
sent 26 bytes received 248 bytes 548.00 bytes/sec
total size is 31 speedup is 0.11
Pokud neurčíte typ nebo úroveň, rsync
používá seznam uvedený v RSYNC_COMPRESS_LIST proměnná prostředí pro vyjednávání o společném typu a úrovni komprese.
[ Hledáte více o automatizaci systému? Začněte s The Automated Enterprise, bezplatnou knihou od Red Hat. ]
Sbalit
Takže tady to máte:rsync
je dalším z těch nástrojů, které jsou stále užitečné a relevantní pro administraci linuxových systémů – nástroj, který jsem ve své kariéře mnohokrát rád měl. Můžete s tím dělat mnohem, mnohem více věcí, které jsme zde neměli prostor prozkoumat – jako vždy se podívejte na manuálové stránky!