Rsync (vzdálená synchronizace) je nástroj pro kopírování a synchronizaci souborů a složek na stejném serveru nebo mezi různými počítači v systému Linux.
To, co odlišuje Rsync od klasického „kopírovat a vložit“, je to, že tento nástroj automaticky rozpozná, které dokumenty se mezi dvěma složkami liší, aby se urychlil proces kopírování ze zdrojové složky do cíle.
P>V tomto článku se dozvíte, jak nainstalovat, nakonfigurovat a používat Rsync na Linuxu Ubuntu 18.04, abyste mohli synchronizovat soubory a složky a naplánovat pravidelné zálohování vašeho serveru.
Instalace
Balíčky rsync jsou již přítomny v oficiálním úložišti Ubuntu. Chcete-li jej nainstalovat, zadejte:
$ sudo apt install rsync
Syntaxe
$ rsync options /path/source/ /path/destination/
Dostupné možnosti jsou:
-
-v:zkopírované soubory a složky se zobrazí v shellu
-r:kopírování složek a jejich obsahu
-h:místo zobrazení velikosti zkopírovaných souborů v bajtech se zobrazí snadno čitelný formát (namísto 14 167 396 bajtů , bude vidět 14,17 Mb)
-z:ke kompresi přenesených dat
-a:zobrazuje původní informace o souboru, jako je časové razítko, oprávnění, vlastník atd.
-u:při kopírování,
--delete:rsync odstraní soubory v cílové složce, které se nenacházejí ve zdrojové složce.
--exclude:určité soubory nebo složky budou při kopírování ignorovány.
--progress:zobrazuje procento procesu kopírování a zbývající čas.
--existující:budou zkopírovány pouze soubory, které již v cílové složce existují.
Synchronizace dvou složek na stejném počítači
Kopírování z jedné složky do druhé se provádí příkazem "rsync" následovaným zdrojovou složkou (ze které se položky kopírují) a cílovou složkou. Bez ohledu na to, že složka ke kopírování obsahuje složky uvnitř , je vhodné přidat značku ke značce "-r":
$ rsync -r path/source path/destination
Celá "zdrojová" složka se zkopíruje do "cílové" složky.
$ rsync -r ~/source/ ~/destination
Obsah "zdrojové" složky se zkopíruje do "cílové" složky.
Pozor na rozdíl mezi těmito dvěma příkazy:napsáním "/" za zdrojovou složku je systému řečeno, aby zkopíroval soubory obsažené ve složce.
Nezadání „/“ znamená výběr celé složky a následně vytvoření kopie zdrojové složky v cílové složce.
Kopírování souborů jednoho formátu
Rsync také umožňuje kopírování pouze určitých typů souborů zadáním formátu nebo názvu.
Za předpokladu, že soubory jsou ve formátu „txt“, lze všechny soubory v tomto formátu zkopírovat zadáním:
$ rsync path/source_folder/*.txt path/destination_folder
S "* .txt" jste výslovně požádali o kopii "všech souborů .pdf".
Kopírování souborů na protokolu SSH mezi dvěma počítači
Protokol SSH můžete také použít ke kopírování souborů a složek z počítače do jiného. Použití tohoto protokolu zaručuje, že během přenosu jsou všechny soubory zašifrovány, a proto je nikdo nebude moci číst.
Příkaz vyžaduje volbu "-e ssh" následovanou zdrojem a cílem kopie.
$ rsync -r ssh path/source/ [email protected]_machine:/path/destination/
Bude vyžadováno heslo uživatele přistupujícího k cílovému počítači.
Kopírování souborů podle velikosti
Rsync filtruje soubory ke kopírování také podle velikosti, kterou zabírají na disku.
$ rsync --max-size=15k path/source_folder/*.* path/destination_folder/*.*
Budou zkopírovány pouze soubory menší než 15 kB.
Větší soubory budou ignorovány.
$ rsync --min-size=20k ~/source_folder/*.* ~/destination_folder/*.*
Budou zkopírovány pouze soubory větší než 20 kb.
Menší soubory budou ignorovány.
Vyloučení souborů z kopírování na základě přípony
Pokud nechcete kopírovat některé typy souborů, můžete pomocí značky „--exclude“ vyloučit některé soubory z kopírování na základě přípony.
V níže uvedeném příkladu nebudou soubory ve formátu .PDF zkopírovány ze složky „source“ do složky „destination“.
$ rsync -r --exclude="*.pdf" path/source_folder/ path/destination_folder
Odebrání obsahu ze zdrojové složky po přenosu
Podobně koncept "vyjmout a vložit", pomocí rsync lze soubory přesunout ze zdrojové složky do cílové složky. V tomto případě jsou soubory zkopírovány do cílové složky a poté odstraněny ze zdrojové složky.
$ rsync -r --remove-source-files path/source_folder path/destination_folder
Nastavení limitu přenosové rychlosti
V případě kopírování přes síť bude možná nutné nastavit limit rychlosti odesílání souborů. V tomto případě použijte značku "--bwlimit =KBPS" a nahraďte "KBPS" požadovanou přenosovou rychlostí.
$ rsync --bwlimit=KBPS -r ssh source_path/folder [email protected]_receiver:/destination_path
Nahraďte "KBPS" hodnotou maximální přenosové rychlosti vyjádřenou v KB/s (2048 KB/s =2MB/s)
Vytváření pravidelných a automatických kopií
V případě, že používáte rsync k vytvoření zálohy, ale nechcete pokaždé zadávat příkazy, je tu pro vás ideální nástroj:Cron.
Tato služba, která je již k dispozici v Ubuntu 18.04, umožňuje nastavit některá "pravidla" pro periodické opakování některých příkazů.
Chcete-li začít vytvářet pravidla a poté nastavit proces automatického kopírování, zadejte:
$ crontab -e
Otevře se textový editor, ve kterém určíte, který příkaz se má pravidelně opakovat. Jakmile nastavíte pravidla, uložte je a zavřete.
Jak nakonfigurovat crontab
Psaní crontab se musí řídit přesnou syntaxí s uvedením 6 uspořádaných parametrů:
m h dom mon dow command
m:minuty (0–59)
h:hodiny (0–23)
dom:den v měsíci (1-31)
pon:měsíc (1-12)
dow:den v týdnu (0:neděle – 6:sobota)
příkaz:příkaz k provedení
Příklady možných konfigurací:
30 * * * * rsync path/source/*.pdf path/destination
(každý měsíc, každý den a každou hodinu po 30 minutách budou všechny soubory „.pdf“ ve složce „source“ zkopírovány do složky „destination“)
*/2 * * * * rsync cesta/zdroj/*.pdf cesta/cíl (všechny soubory .pdf přítomné ve složce „source“ ve složce „destination“ jsou kopírovány každý den v měsíci, každé 2 minuty)
50 8 * * 1,3 rsync cesta/zdroj/*.pdf cesta/cíl (příkaz pro zkopírování souborů .pdf ve složce „source“ v „destination“ složka se spouští od pondělí do středy v 8:50)
Po uložení a zavření editoru zobrazíte seznam crontabů typu:
$ crontab -l