logo

Příkaz rsync v Linuxu s příklady

rsync nebo vzdálená synchronizace je softwarový nástroj pro systémy typu Unix, který efektivně synchronizuje soubory a adresáře mezi dvěma hostiteli nebo počítači. Jedním je zdroj nebo místní hostitel, ze kterého budou soubory synchronizovány, druhým je vzdálený hostitel, na kterém bude synchronizace probíhat. V zásadě existují dva způsoby, jak rsync umí kopírovat/synchronizovat data:

  • Kopírování/synchronizace do/z jiného hostitele přes libovolný vzdálený shell ssh , rsh .
  • Kopírování/synchronizace pomocí démona rsync pomocí TCP.

Rsync je známý pro své delta-přenosový algoritmus , ve kterém zkopíruje pouze rozdíly mezi zdrojovými soubory přítomnými v místním hostiteli a existujícími soubory v cílovém nebo vzdáleném hostiteli.



Příklad:

rsync local-file user@remote-host:remote-file>

Co se tu stalo:

Rsync nejprve použije SSH k připojení jakouser>na vzdálený hostitel a požádá ouser's>Heslo. Po připojení vyvolá rsync vzdáleného hostitele a poté oba programy určí, jaké části místního souboru je třeba zkopírovat, aby se vzdálený soubor shodoval s místním. Vezměte prosím na vědomí následující chování rsync:



  • Soubory, které na vzdáleném hostiteli neexistují, se zkopírují.
  • Soubory, které byly aktualizovány, budou synchronizovány, rsync zkopíruje pouze změněné části souborů na vzdálený hostitel.
  • soubory, které jsou přesně stejné, nejsou zkopírovány do vzdáleného hostitele.

Syntaxe příkazu `rsync` v Linuxu

rsync [options] source [destination]>

Volba k dispozici v příkazu `rsync` v Linuxu

Možnosti

Popis

a, –archiv



To je ekvivalentní použití -rlptgoD . Režim archivace obsahuje všechny potřebné možnosti, jako je rekurzivní kopírování souborů, zachování téměř všeho (jako jsou symbolické odkazy, oprávnění k souborům, vlastnictví uživatelů a skupin a časová razítka).

-v, –verbose

Ve výchozím nastavení rsync funguje tiše. Použití jediné volby -v poskytuje informace o přenesených souborech a shrnutí na konci. Přidání dvou voleb -v poskytuje aktualizace stavu delta-přenosu a přeskočených souborů spolu s dalšími informacemi na konci. Pro ladění rsync se obvykle používá více voleb -v.

-h, –formát čitelný člověkem

Výstupy ve formátu čitelném pro člověka.

-z, –komprimovat

Během přenosu komprimujte data souboru

Příklady

Použití `rsync` jako příkazu seznamu

Pokud je zadána pouze zdrojová cesta, obsah zdroje je uveden ve výstupním formátu podobnémls -l>.

rsync foo/>

Výše uvedený příkaz zobrazí seznam souborů a adresářů přítomných v adresáři foo .

Výstup:

Kopírovat/synchronizovat soubory a adresář lokálně

Pokud ani zdrojová ani cílová cesta neurčuje vzdáleného hostitele, příkazy rsync se chovají jako příkaz kopírování.

rsync -avh foo/ bar/>

Výše uvedený příkaz zkopíruje/synchronizuje všechny soubory a adresáře v adresářifoo>do adresáře bar . Pokud cílový adresář není k dispozici (zdebar>), rsync automaticky vytvoří jeden a zkopíruje všechna data v něm.

Výstup:

Rsync pomocí ssh

Existují dva různé způsoby, jak může rsync kontaktovat vzdálený systém:

  • Použití programu vzdáleného prostředí jako přenosu (napřssh>(Secure Shell) popřrsh>(Vzdálený Shell)).
  • Kontaktování démona rsync přímo přes TCP.

Zde budeme diskutovat o rsync přes ssh.

rsync -avhze ssh /foo user@remote-host:/tmp/>

Chcete-li určit typ protokolu, který se má použít,-e>možnost se používá.

Výstup:

Rsync s konkrétními oprávněními k souboru

Pokud chceme synchronizovat soubory s místním nebo vzdáleným hostitelem s oprávněními měněných souborů. Musí být použit následující příkaz.

rsync -avhe ssh --chown=USER:GROUP /foo user@remote-host:/tmp/>

Výše uvedený příkaz synchronizuje všechny soubory v adresáři /foo se soubory přítomnými v adresáři /tmp vremote-host>se všemi soubory vlastněnými USER se skupinou GROUP.

Výstup:

Poznámka: Theuser>agroup>musí být již vytvořen ve vzdáleném hostiteli.

Rsync s --ignore-existing-files>

Můžeme také přeskočit již existující soubory v cíli. To lze obecně použít, když provádíme zálohování pomocí –odkaz-cíl možnost, zatímco budete pokračovat v zálohování, které bylo přerušeno.

rsync --ignore-existing -avhe /foo user@remote-host:/tmp/>

Takže všechny soubory, které v cíli neexistují, budou zkopírovány. Zde jsem smazalgeeksforgeeks>složku z adresářefoo>, takže by měl kopírovat pouzegeeksforgeeks>adresář.

Poznámka: To neignoruje existující adresáře, jinak se nic neudělá. I když jsou nějaké změny v souboru v místním hostiteli, stále by se nesynchronizoval, pokud je přítomen na vzdáleném hostiteli.

Výstup:

Zobrazit průběh během přenosu

Pro zobrazení průběhu přenosu dat z místního hostitele na vzdálený hostitel můžeme použít-–progress>volba.

rsync -avhe ssh --progress /foo user@remote-host:/tmp/>

Po dokončení přenosu pro konkrétní soubor rsync vypíše souhrnný řádek, jak je znázorněno níže.

Výstup:

Na obrázku výše, pokud se podíváme na soubor/foo/file2>, říká nám to

  • Soubor byl celkem dlouhý 44 bajtů.
  • Průměrná rychlost přenosu celého souboru byla 42,97 kilobajtů za sekundu během 0:00:00 sekund, které trvalo dokončení.
  • Byl to druhý převod během proudu rsync zasedání.
  • Z celkových 13 souborů v seznamu souborů zbývá 10 dalších souborů ke kontrole (aby se zjistilo, zda jsou aktuální nebo ne).
  • Aktualizujte vzdálený ovladač pouze v případě, že je na místním souborovém systému novější verze:
    Pokud chceme kopírovat soubory přes vzdálený hostitel, které byly nedávno aktualizovány na místním souborovém systému. Je hotovo s -Aktualizace vlajka. Chování je nyní takto:
    • Soubory, které na vzdáleném hostiteli neexistují, se zkopírují.
    • Soubory, které existují na místním i vzdáleném počítači, ale mají novější časové razítko na místním hostiteli, se zkopírují do vzdáleného hostitele. (Naopak soubory, které mají starší časové razítko, se nekopírují).

    Zde jsem provedl nějaké změny soubor1 a soubor2 , ale změny v soubor2 byly provedeny nedávno. Takže jedině soubor2 bude synchronizován.

    rsync -avhe ssh --progress --update /foo root@remote-host:/tmp/>

    Výstup: aktualizace rsync

    Automaticky odstranit soubory z místního hostitele po úspěšném přenosu

    Nyní předpokládejme, že máme webový server a záložní server a vytvořili jsme denní zálohu a synchronizovali ji s naším záložním serverem a pak nechceme uchovávat místní kopii zálohy na našem webovém serveru. Takže místo ručního mazání po úspěšném přenosu můžeme použít--remove-source-files>příznak pro automatické odstranění souborů z webového serveru.

    rsync -avhe ssh --remove-source-files /foo user@backup-server:/tmp>

    Výstup:

    Poznámka: Tím se odstraní pouze soubory, nikoli adresáře.

    Odstraňte soubory, které byly odstraněny na místním hostiteli

    Pokud jsou některé soubory odstraněny na místním hostiteli a chceme, aby byly aktualizovány i na vzdáleném hostiteli, musíme použít--delete>volba.

    rsync -avhe ssh /foo --delete user@remote-host:/tmp/>

    Výstup:

    singleton design

    Tak tady soubor1 , soubor2 , soubor3 byly odstraněny na místním hostiteli a jak je vidět, jsou aktualizovány i na vzdáleném hostiteli.

    Poznámka: ` rsync` neodstraní soubory automaticky, aby se synchronizovaly adresáře na obou stranách.

    Provedení suchého běhu pomocí `rsync`

    Dry run způsobí, že `rsync` provede zkušební běh, který neprovede žádné změny a zobrazí téměř stejný výstup jako skutečný běh. Obecně se používá s volbami -v, –verbose a/nebo -i, –itemize-changes, abyste viděli, co by příkaz `rsync` udělal, než jej skutečně spustíte.

    rsync -avhe ssh --dry-run --chown=USER:GROUP /foo user@remote-host:/>

    Výstup:

    Závěr

    V tomto článku jsme diskutovali o příkazu rsync v Linuxu, což je všestranný a výkonný nástroj pro synchronizaci souborů a adresářů mezi hostiteli nebo počítači. Se svým algoritmem delta přenosu a různými možnostmi nabízí efektivní synchronizaci dat, možnosti zálohování a správu přenosu souborů. Zvládnutím příkazu rsync mohou uživatelé Linuxu zajistit konzistenci souborů, optimalizovat přenos dat a zefektivnit své pracovní postupy správy dat.