Úvod
Rsync neboli Remote Sync je bezplatný nástroj příkazového řádku, který vám umožňuje přenášet soubory a adresáře do místních a vzdálených míst. Rsync se používá pro zrcadlení, provádění zálohování nebo migraci dat na jiné servery.
Tento nástroj je rychlý a efektivní, kopíruje pouze změny ze zdroje a nabízí možnosti přizpůsobení.
Podle tohoto návodu se dozvíte, jak používat rsync s 20 příkladů příkazů k pokrytí většiny případů použití v Linuxu.
Předpoklady
- Uživatel s sudo nebokořen privilegia
- Přístup k terminálu/příkazovému řádku
- Přístup SSH pro vzdálené příklady rsync
Syntaxe příkazu Rsync
Syntaxe pro rsync
příkaz se mění v závislosti na použití nástroje. Všechny scénáře pokryjeme v následujících příkladech. Syntaxe Rsync ve své nejzákladnější podobě vypadá takto:
rsync options SOURCE DESTINATION
Vzdálené přenosy dat vyžadují zadání adresy hostitele, ale o tom později.
Možnosti Rsync
Nástroj rsync přichází s mnoha možnostmi. Můžete zadat rsync
ve svém terminálu a získejte všechny podrobnosti. Uvedeme některé z nejběžnějších možností rsync.
Patří mezi ně:
-r | Umožňuje rekurzivně synchronizovat data, ale nezachovává vlastnictví pro uživatele a skupiny, oprávnění, časová razítka nebo symbolické odkazy. |
-a | Režim archivu se chová jako rekurzivní režim, ale zachovává všechna oprávnění k souborům, symbolické odkazy, vlastnictví souborů atd. |
-z | Používá se ke kompresi dat během přenosů za účelem úspory místa. |
-b | Během synchronizace dat provede zálohu. |
-h | Zobrazuje čísla ve výstupu ve formátu čitelném pro člověka. |
-n | Probíhá nasucho. Používá se pro testování před provedením skutečné synchronizace. |
-e | Instruuje rsync, aby používal protokol SSH pro vzdálené přenosy. |
-progress | Zobrazuje průběh přenosu během synchronizace. |
-v | Podrobný výstup. Zobrazí podrobnosti o převodu. |
-q | Používá se k potlačení výstupu pro příkaz a možnosti rsync. |
Příklady příkazů Rsync
Rsync je všestranný synchronizační nástroj, který si můžete přizpůsobit tak, aby vyhovoval vašemu konkrétnímu použití. V této příručce budeme používat archiv (-a
) a podrobné (-v
) možnosti v případě potřeby.
Prohlédněte si níže uvedené příklady rsync, které pokrývají většinu použití rsync.
1. Zkopírujte jeden soubor lokálně
Chcete-li zkopírovat jeden soubor do jiného adresáře na místním počítači, zadejte úplnou cestu ke zdrojovému souboru a poté cílový cíl.
Například:
rsync -v /home/test/Desktop/sample.txt /home/test/Desktop/rsync/
Příkaz přenese sample.txt soubor do rsync adresář. Pokud cílový adresář neexistuje, přidejte na konec lomítko a rsync jej vytvoří, jako je tomu v našem příkladu.
Pokud chcete zkopírovat soubor z aktuálního pracovního adresáře, můžete zadat název souboru, nikoli úplnou cestu.
2. Kopírovat více souborů lokálně
Chcete-li kopírovat více souborů pomocí rsync, přidejte úplné cesty ke zdrojovým souborům:
rsync -v /home/test/Desktop/sample.txt /home/test/Desktop/sample2rs.txt /home/test/Desktop/rsync
Tuto metodu byste měli použít pro malý počet souborů. Pokud je seznam větší, můžete se podívat na --exclude
možnost.
3. Zkopírujte adresář a všechny podadresáře lokálně (kopírujte soubory a adresáře rekurzivně)
Chcete-li zkopírovat adresář a jeho obsah do jiného umístění na vašem počítači, použijte -a
nebo -r
volba. Použili jsme archiv možnost :
rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync
Výše uvedený příklad ukazuje, jak zkopírovat Linux do adresáře rsync adresář. Všimněte si, že jsme nepoužili koncové lomítko za Linuxem . Nástroj rsync tedy vytvořil Linux adresář a jeho obsah v rsync adresář.
4. Zkopírujte soubor nebo adresář z místního do vzdáleného počítače
Chcete-li zkopírovat adresář /home/test/Desktop/Linux na /home/test/Desktop/rsync na vzdáleném počítači musíte zadat IP adresu cíle.
Přidejte IP adresu a cíl za zdrojový adresář. Nezapomeňte uvést dvojtečku (:
) za IP adresou vzdáleného hostitele, bez mezer před cílem.
Příkaz vypadá takto:
rsync -av /home/test/Desktop/Linux 192.168.56.100:/home/test/Desktop/rsync
Chcete-li pokračovat, zadejte heslo aktuálního uživatele. Pokud chcete pro vzdálené připojení použít jiný účet, zadejte jej před IP adresu:
rsync -a /home/test/Desktop/Linux [email protected]:/home/test/Desktop/rsync
Chcete-li zkopírovat jeden soubor do vzdáleného hostitele, zadejte úplnou cestu k souboru a cíl.
Například:
rsync -av /home/test/Desktop/sample_file.txt 192.168.56.100:/home/test/Desktop/rsync
5. Zkopírujte více souborů nebo adresářů z místního do vzdáleného počítače
Podobně jako při místním kopírování dat, uveďte více souborů nebo více cest k adresářům, které chcete zkopírovat na vzdálený server. Postupujte podle stejné syntaxe jako při kopírování jednoho souboru nebo adresáře.
Například:
rsync -av /home/test/Desktop/Linux/ /home/test/Music 192.168.56.100:/home/test/Desktop/rsync
6. Zadejte protokol rsync pro vzdálené přenosy
Nástroj rsync lze zadat pomocí -e
možnost pro použití specifického protokolu pro přenos souborů. Chcete-li použít Rsync přes SSH ke vzdálenému přenosu souborů, připojte -e ssh
na rsync
příkaz.
Například k přenosu souboru sample.txt z vaší plochy na plochu vzdáleného počítače:
rsync -e ssh /home/test/Desktop/sample.txt 192.168.56.100:/home/test/Desktop
7. Zkopírujte soubor nebo adresář ze vzdáleného do místního počítače
Rsync podporuje přenos souborů ze vzdáleného serveru na váš místní počítač.
Chcete-li stáhnout adresář ze serveru, zadejte jeho IP adresu před zdrojem.
Například:
rsync -av 192.168.56.100:/home/test/Desktop/DirM /home/test/Desktop
Tento příkaz zkopíroval DirM adresář z 192.168.56.100 do /home/test/Desktop na místním serveru.
Chcete-li zkopírovat konkrétní soubor ze vzdáleného hostitele, zadejte úplnou cestu ke zdrojovému souboru a cíl na místním počítači. Například:
rsync -v 192.168.56.100:/home/test/Desktop/testfile.txt /home/test/Desktop
8. Zkopírujte více souborů nebo adresářů z místního do vzdáleného počítače
Chcete-li přenést více souborů nebo více adresářů ze vzdáleného serveru, uveďte cesty pomocí složených závorek za IP adresou serveru. Cesty oddělte čárkou.
Například:
rsync -av 192.168.56.100:{/home/test/Desktop/DirM,/home/test/Desktop/Dir1} /home/test/rsync
Totéž platí pro soubory. Uveďte do složených závorek tolik souborů, kolik potřebujete.
9. Zobrazit průběh rsync během přenosu dat
Při provádění zálohování velkých dat můžete chtít zobrazit průběh přenosu.
Přidejte --progress
příznak do rsync
pro zobrazení množství přenesených dat, přenosové rychlosti a zbývajícího času.
Například pro zálohování Dir1 na vzdálený server a zobrazit průběh, zadejte:
rsync -av --progress /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync
10. Odstraňte neexistující zdrojový soubor nebo adresář z cíle
Použijte --delete
možnost synchronizovat zdroj a cíl.
Tato možnost říká rsync, aby odstranil jakýkoli soubor nebo adresář v cíli, pokud jej zdroj nemá.
rsync -av --delete /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync
11. Smazat zdrojové soubory po přenosu
V některých scénářích můžete chtít po přenosu odstranit zdrojové soubory. Můžete například přesouvat týdenní zálohu na nový server. Po dokončení přenosu již nepotřebujete zdrojové soubory na starém serveru.
V takovém případě použijte --remove-source-files
flag pro smazání vámi zadaného zdrojového souboru.
Tento příkaz například přenese záložní soubor weekly.zip a poté jej odstraní ze zdroje:
rsync -v --remove-source-files /home/test/backup/weekly.zip 192.168.56.100:/home/test/Desktop/rsync/
12. Rsync Dry Run
Rsync je výkonný synchronizační nástroj. Vzhledem k tomu, že tento nástroj umožňuje kopírovat a mazat data, doporučujeme vám nejprve provést zkušební provoz a vyzkoušet, zda rsync dělá to, co jste zamýšleli.
Možnost suchého běhu je zvláště užitečná, když chcete smazat soubory. Chcete-li provést suché spuštění, použijte --dry-run
a postupujte podle běžné syntaxe rsync.
Například:
rsync -av --dry-run --delete /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync
Výstup vypadá stejně, jako když skutečně synchronizujete soubory. Tato časová data však nebudou synchronizována. Aby se potvrdilo, že proběhl test, a nikoli skutečný přenos, terminál zobrazí ve spodní části (DRY RUN).
13. Nastavte maximální velikost souboru pro přenos
Chcete-li určit maximální velikost souboru, který rsync přenese, použijte --max-size=add_size
.
Chcete-li například přenést soubory ne větší než 500 kB, použijte tento příkaz:
rsync -av --max-size=500k /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync/
14. Nastavte minimální velikost souboru pro přenos
Použijte --min-size=add_size
s rsync, když nechcete přenášet soubory menší než zadaná velikost. Tato možnost je užitečná, například když chcete přeskočit malé soubory protokolu nebo miniatur.
Chcete-li přeskočit jakýkoli soubor menší než 10 kB, spusťte tento příkaz:
rsync -av --min-size=10k /home/test/Desktop/ 192.168.56.100:/home/test/Desktop/rsync/
15. Nastavte limit šířky pásma rsync
Pokud chcete určit limit šířky pásma během přenosu dat mezi počítači, použijte --bwlimit=KB/s
.
Tato možnost je užitečná, když nechcete zahlcovat propustnost sítě.
Chcete-li nastavit maximální přenosovou rychlost na 50 KB/s, zadejte:
rsync -av --bwlimit=50 --progress /home/test/Desktop/Dir1 192.168.56.100:/home/test/Desktop/rsync/
Použili jsme také --progress
možnost demonstrovat použití --bwlimit
.
16. Kopírovat konkrétní typ souboru
Pomocí rsync můžete zkopírovat pouze určitý typ souboru. Chcete-li to provést, použijte hvězdičku (*
) místo názvu souboru a přidejte příponu.
Chcete-li například zkopírovat pouze soubory .txt, zadejte:
rsync -v /home/test/Documents/*.txt /home/test/Desktop/rsync/
Tento rsync
příkaz přenese všechny textové soubory z Dokumentů do adresáře rsync adresář na ploše.
17. Kopírovat strukturu adresáře, ale přeskočit soubory
Rsync vám umožňuje přenést pouze adresářovou strukturu, pokud nepotřebujete soubory na jiném místě.
Chcete-li to provést, přidejte -f"+ */" -f"- *"
před zdrojovým adresářem.
Chcete-li například zkopírovat strukturu Linuxu do adresáře Dokumenty , zadejte:
rsync -av -f"+ */" -f"- *" /home/test/Desktop/Linux /home/test/Documents
18. Přidat datumové razítko k názvu adresáře
K názvu adresáře můžete snadno přidat datum, pokud chcete k převodům přidat datum.
Připojte $(date +%Y-%m-%d)
na název cílového adresáře, který chcete vytvořit. Tato možnost je užitečná, když chcete mít přehled o tom, kdy proběhly přenosy, aniž byste museli otevírat vlastnosti adresáře.
Například:
rsync -av /home/test/Desktop/Linux /home/test/Desktop/rsync$(date +%Y-%m-%d)
19. Nekopírovat zdrojový soubor, pokud je změněn stejný cílový soubor
Pokud synchronizujete dva adresáře, rsync nezkopíruje soubor, pokud stejný v cíli existuje.
Někdy se může stát, že upravíte soubor v cílovém umístění a nechcete, aby jej rsync přepsal.
Chcete-li se vyhnout přepsání upravených cílových souborů, použijte -u
možnost.
Například:
rsync -avu /home/test/Desktop/Linux/ /home/test/Desktop/rsync
20. Zobrazit rozdíl mezi zdrojovým a cílovým souborem
Když začnete přenášet data, můžete použít -i
příznak s rsync pro kontrolu, zda existuje rozdíl mezi zdrojem a cílem.
Například:
rsync -avi /home/test/Desktop/Linux/ /home/test/Desktop/rsync
Výše uvedený příklad ukazuje sample2rs.txt soubor v cíli chybí.
Možná písmena ve výstupu jsou:
f
– znamená soubord
– ukazuje, o jaký cílový soubor se jednát
– ukazuje, že se časové razítko změnilos
– ukazuje, že se velikost změnila