Jak název napovídá, příkaz rsync se používá k synchronizaci (nebo kopírování) souborů a adresářů lokálně i vzdáleně. Jednou z důležitých vlastností rsync je, že funguje na „algoritmu přenosu delta “, znamená, že bude pouze synchronizovat nebo kopírovat změny ze zdroje do cíle namísto kopírování celého souboru, což v konečném důsledku snižuje množství dat odesílaných přes síť. Linuxoví nadšenci obvykle používají příkaz rsync ke správě každodenních činností zálohování, zrcadlení a obnovy. Používá vzdálený shell jako SSH při synchronizaci souborů z místního počítače na vzdálený počítač a každý uživatel v systému může použít příkaz rsync, protože nevyžaduje oprávnění root nebo sudo..
V tomto článku probereme 17 užitečných příkladů příkazů rsync v Linuxu. Tyto příklady pomohou zejména začátečníkům v Linuxu efektivněji spravovat jejich úlohy synchronizace, zrcadlení a zálohování.
Příkaz Rsync je dostupný pro všechny operační systémy UNIX a Linux. Když provedeme minimální instalaci CentOS &RHEL OS, pak balíček rsync není součástí výchozí instalace, takže pro instalaci rsync na CentOS &RHEL spusťte příkaz beneath yum
~]# yum nainstalovat rsync -y
V operačních systémech podobných Debianu (Ubuntu a Linux Mint) použijte níže uvedený příkaz apt k instalaci nástroje rysnc,
~]# instalace apt rsync -y
Syntaxe příkazu rsync:
Místní synchronizace:# rsync {options} {Zdroj} {Cíl}
Vzdálená synchronizace:# rsync {options}
Vzdálená synchronizace Push:# rsync
Některé z běžně používaných voleb v příkazu rsync jsou uvedeny níže:
- -v, –verbose Podrobný výstup
- -q, –tichý potlačit výstup zprávy
- -a, –archive archivovat soubory a adresář během synchronizace ( -a se rovná následujícím možnostem -rlptgoD)
- -r, –rekurzivní rekurzivně synchronizovat soubory a adresáře
- -b, –backup provést zálohu během synchronizace
- -u, –update nekopírujte soubory ze zdroje do cíle, pokud jsou cílové soubory novější
- -l, –links kopírovat symbolické odkazy jako symbolické odkazy během synchronizace
- -n, –dry-run provést zkušební provoz bez synchronizace
- -e, –rsh=COMMAND zmínit vzdálený shell, který se má použít v rsync
- -z, –compress komprimovat data souboru během přenosu
- -h, –čitelný pro člověka zobrazí výstupní čísla ve formátu čitelném pro člověka
- –průběh zobrazit průběh synchronizace během přenosu
Pojďme se vrhnout na užitečné příklady příkazu rsync
Příklad:1) Místní kopírování nebo synchronizace souborů (rsync -zvh)
Předpokládejme, že chceme zkopírovat soubor z domovského adresáře uživatele pkumar do složky /opt/back, spusťte níže uvedený příkaz rsync
[[email protected] ~]# rsync -zvh /home/pkumar/OpenStack-Networking.pdf /opt/backupOpenStack-Networking.pdfsent 4,09 mil. bajtů přijato 35 bajtů 2,73 mil. bajtů/sekce celková velikost je 6,15 mil. [[e-mail chráněn] ~]#
Výše jsme použili možnosti jako -z pro kompresi, -v pro podrobný výstup a -h pro výstup čitelný pro člověka.
Příklad:2) Zkopírujte nebo synchronizujte adresář lokálně (rsync -zavh)
Předpokládejme, že chceme zkopírovat nebo synchronizovat domovský adresář uživatele pkumar do složky /opt/backup, spusťte níže uvedený příkaz rsync s možnostmi -zavh ,
[[email protected] ~]# rsync -zavh /home/pkumar /opt/backupsending přírůstkový soubor listpkumar/pkumar/.bash_logoutpkumar/.bash_profilepkumar/.bashrcpkumar/OpenStack-Networking.pdfsent 8,9M bytes přijato 4,09M bajtů/sektor celková velikost je 6,15 milionu zrychlení je 1,50[[email chráněný] ~]#
Ověřte, zda je adresář zkopírován nebo ne, proveďte níže uvedený příkaz
[[e-mail chráněný] ~]# ls -ld /opt/backup/*-rwx------. 1 kořen kořen 6153239 7. dubna 00:25 /opt/backup/OpenStack-Networking.pdfdrwx------. 2 pkumar pkumar 90 dub 7 00:25 /opt/backup/pkumar[[email protected] ~]#
Jak vidíme, v cílové složce se vytvoří adresář „pkumar“ a jeho obsah se také zkopíruje. Pokud ve výše uvedeném příkladu použijete trail / after source folder (/home/pkumar/), pak příkaz rsync nevytvoří adresář pkumar v cíli, ale zkopíruje pouze obsah.
[[e-mail chráněný] ~]# rsync -zavh /home/pkumar/ /opt/backup
Příklad:3) Zkopírujte soubory a adresáře rekurzivně lokálně (rsync -zrvh nebo rsync -zavh)
Předpokládejme, že v domovském adresáři uživatele pkumar máme více souborů a adresářů, použijte níže uvedený příkaz rsync ke kopírování souborů a adresářů rekurzivně, buď použijte volbu -a nebo -r pro rekurzivní kopírování souborů a adresářů.
Poznámka :V příkazu rsync -a možnost slouží k archivaci během kopírování nebo synchronizace a kromě archivace – možnost se používá také pro následující:
- rekurzivně kopírovat soubory a adresář
- kopírovat symbolické odkazy jako symbolické odkazy
- zachovat oprávnění
- zachovat skupinu
- zachovat čas úpravy
- zachovat vlastnictví
[[e-mail chráněný] ~]# rsync -zrvh /home/pkumar /opt/backupor[[chráněn e-mailem] ~]# rsync -zavh /home/pkumar /opt/backup
Příklad:4) Kopírování nebo synchronizace souborů a adresářů z místního do vzdáleného systému
Předpokládejme, že chceme zkopírovat složku „/home/pkumar/techi ” z místního počítače na vzdálený počítač (192.168.1.29) pod /opt
[[email chráněný] ~]# rsync -zarvh /home/pkumar/techi [e-mail chráněný]:/opt[heslo chráněné e-mailem]:……………………………………… …………………techi/OTRS/techi/OTRS/Database-Selection-OTRS-Installation-CentOS7.jpgtechi/OTRS/Install-OTRS-Accept-License.pngtechi/OTRS/Install-OTRS-CentOS7-RHEL7.jpgtechi /OTRS/mysql-secure-installation-centos7-part2.jpgodesláno 34,85 milionů bajtů přijato 2,65 kB ………………[[e-mail chráněný] ~]#
Příklad:5) Kopírování nebo synchronizace souborů a adresářů ze vzdáleného počítače do místního systému
Předpokládejme, že chceme zkopírovat soubory a adresáře ze vzdáleného počítače (192.168.1.29) do našeho místního systému, v níže uvedeném příkladu kopíruji vzdálenou složku “/opt/rpms_db ” na mém místním počítači pod /tmp složka
[[e-mail chráněný] ~]# rsync -zarvh [e-mail chráněný]:/opt/rpms_db /tmp[heslo chráněné e-mailem]:přijímání seznamu přírůstkových souborů………………………………… …………………………rpms_db/rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpmrpms_db/httpd-tools-2.4.6-88.el7.centos.x86_64.rpmrpms_db/postfix- 2.10.1-7.el7.x86_64.rpmrpms_db/pytalloc-2.1.13-1.el7.x86_64.rpmrpms_db/samba-4.8.3-4.el7.x86_64.rpmrpms_db/samba-4client-libs-4.8.3 4.el7.x86_64.rpmrpms_db/samba-common-4.8.3-4.el7.noarch.rpmrpms_db/samba-common-libs-4.8.3-4.el7.x86_64.rpmrpms_db/samba-common-tools-4 3-4.el7.x86_64.rpmrpms_db/samba-libs-4.8.3-4.el7.x86_64.rpmsent 484 bajtů přijato 15,45 M bajtů 1,07 M bajtů/sektor celková velikost je 16,37 M. 0 zrychlení 6e je 16,37 M #
Výše uvedený příkaz automaticky vytvoří složku „rpms_db“ ve složce /tmp na našem místním počítači.
[[e-mail chráněný] ~]# ls -l /tmp/total 8-rwx------. 1 kořenový kořen 827 dubna 6 12:54 ks-script-avmuxwdrwxr-xr-x. 2 root root 4096 7. dubna 01:42 rpms_db-rw-------. 1 kořenový kořen 0 dubna 6 12:35 yum.log[[e-mail chráněný] ~]# ls -l /tmp/rpms_db/celkem 16028……………………………………-rw-r-- r--. 1 kořenový kořen 2844028 12. listopadu 09:28 httpd-2.4.6-88.el7.centos.x86_64.rpm-rw-r--r--. 1 kořenový kořen 92504 12. listopadu 09:28 httpd-tools-2.4.6-88.el7.centos.x86_64.rpm-rw-r--r--. 1 kořenový kořen 2558136 12. listopadu 09:44 postfix-2.10.1-7.el7.x86_64.rpm-rw-r--r--. 1 kořenový kořen 17404 12. listopadu 09:44 pytalloc-2.1.13-1.el7.x86_64.rpm-rw-r--r--. 1 kořenový kořen 696472 12. listopadu 09:46 samba-4.8.3-4.el7.x86_64.rpm-rw-r--r--. 1 kořenový kořen 5070800 12. listopadu 09:46 samba-client-libs-4.8.3-4.el7.x86_64.rpm-rw-r--r--. 1 kořenový kořen 210984 12. listopadu 10:19 samba-common-4.8.3-4.el7.noarch.rpm-rw-r--r--. 1 kořenový kořen 167512 12. listopadu 09:46 samba-common-libs-4.8.3-4.el7.x86_64.rpm-rw-r--r--. 1 kořenový kořen 458380 12. listopadu 09:46 samba-common-tools-4.8.3-4.el7.x86_64.rpm-rw-r--r--. 1 kořenový kořen 282332 12. listopadu 09:46 samba-libs-4.8.3-4.el7.x86_64.rpm…………………………………………[[e-mail chráněný] ~]#
Příklad:6) Určete vzdálený shell během synchronizace (rsync -e ssh)
V příkazu rsync můžeme během synchronizace specifikovat vzdálený shell jako ssh, předpokládejme, že chceme použít zabezpečenou komunikaci mezi zdrojem a cílovým počítačem přes rsync, pak bychom měli použít ssh jako vzdálený shell, příklad je uveden níže
[[chráněno e-mailem] ~]# rsync -zarvh -e ssh [chráněno e-mailem]:/opt/rpms_db /tmp[e-mailem chráněno] heslo:přijímání seznamu přírůstkových souborů………………………… …………………………………………………………rpms_db/rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpmrpms_db/httpd-tools-2.4.6-88. el7.centos.x86_64.rpmrpms_db/postfix-2.10.1-7.el7.x86_64.rpmrpms_db/pytalloc-2.1.13-1.el7.x86_64.rpmrpms_db/samba-4.8.3x86_4.el7 samba-client-libs-4.8.3-4.el7.x86_64.rpmrpms_db/samba-common-4.8.3-4.el7.noarch.rpmrpms_db/samba-common-libs-4.8.3-4.el7.x86_64. rpmrpms_db/samba-common-tools-4.8.3-4.el7.x86_64.rpmrpms_db/samba-libs-4.8.3-4.el7.x86_64.rpmsent 484 bajtů přijato 15,45 milionů bajtů na velikost 3 x 1,82 te zrychlení je 1,06[[e-mail chráněno] ~]#
Příklad:7) Zobrazení průběhu synchronizace ve výstupu příkazu rsync
Pokud chcete vidět průběh synchronizace nebo kopírování v příkazu rsync, použijte „–progress “, příklad je uveden níže
[[chráněno e-mailem] ~]# rsync -avh --progress [chráněno e-mailem]:/opt/rpms_db /tmp[heslo chráněné e-mailem]:přijímání seznamu přírůstkových souborů………………………… …………………………………………………………………………..rpms_db/rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpm 2,84 M 100 % 35,22 MB/s 0:00:00 (xfr#6, to-chk=18/25)rpms_db/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm 1 92,50 K 92,50 K /s 0:00:00 (xfr#7, to-chk=17/25)rpms_db/postfix-2.10.1-7.el7.x86_64.rpm 2,56 M 100 % 14,44 MB/s 0:0 0:0:#17, to-chk=7/25)rpms_db/samba-4.8.3-4.el7.x86_64.rpm 696,47 kB 100 % 3,71 MB/s =0:00:00 (xfr#19, to-k 25)rpms_db/samba-client-libs-4.8.3-4.el7.x86_64.rpm 5,07 M 100 % 19,90 MB/s 0:00:00 (xfr#20, to-chk_sdb=4) -common-4.8.3-4.el7.noarch.rpm 210,98 kB 100 % 844,42 kB/s 0:00:00 (xfr#21, to-chk=3/25)rpms_db/samba-common-libs-4 3-4.el7.x86_64.rpm 167,51 kB 100 % 667,70 kB/s 0:00:00 (xfr#22, to-chk=2/25)rpms_db/samba-common-tools-4.7.8 .x86_6 4.rpm 458,38 kB 100 % 1,77 MB/s 0:00:00 (xfr#23, to-chk=1/25)rpms_db/samba-libs-4.8.3-4.el7.x86 321.rpm % % 1,09 MB/s 0:00:00 (xfr#24, to-chk=0/25)odesláno 484 bajtů přijato 16,38 M bajtů 3,64 M bajtů/sekt celková velikost je 16,37 M zrychlení je 1,00[[Přečtěte si také: 14 příkladů příkazů SCP pro bezpečný přenos souborů v systému Linux
Příklad:8) Zkopírujte adresářovou strukturu bez kopírování souborů
Existují některé scénáře, kdy chceme zkopírovat adresářovou strukturu přeskakováním souborů pouze z místního počítače na vzdálený nebo naopak.
Předpokládejme, že chceme zkopírovat adresářovou strukturu „/home/pkumar“ z místního počítače na vzdálený počítač (192.168.1.29) do složky /opt.
[e-mail chráněný] ~]# rsync -av -f"+ */" -f"- *" /home/pkumar [e-mail chráněný]:/opt/[e-mail chráněný]'s password:building list list . .. hotovo………………………………………………pkumar/odeslané 43 bajtů přijato 19 bajtů 17,71 bajtů/sekce celková velikost je 0 zrychlení je 0,00[[e-mail chráněný] ~]#Příklad:9) Obnovení přenosu velkých souborů po selhání v scp
V linuxovém admin profilu existuje několik scénářů, kdy jsme začali kopírovat větší soubor pomocí příkazu scp, ale ten byl uprostřed ukončen a my si nemůžeme dovolit začít ho znovu kopírovat pomocí scp kvůli jeho velké velikosti a časové náročnosti.
Takže v této situaci lze použít příkaz rsync, protože může začít kopírovat soubor od místa, kde skončil nebo skončil, nebo jinými slovy, rsync může přenést soubory, které jsou částečně zkopírovány pomocí příkazu scp. Příklad je uveden níže,
[[email chráněný] ~]# scp [e-mail chráněný]:/root/ubuntu-18.04-desktop-amd64.iso /opt[e-mail chráněný] heslo:ubuntu-18.04-desktop-amd64.iso 8 % 526 MB 61,5 MB/s 00:21 ETA^CKilled by signal 2.[[email protected] ~]#[[email protected] ~]# rsync -P --rsh=ssh [e-mail protected]:/root/ubuntu-18.04 -desktop-amd64.iso /opt[e-mail chráněný] heslo:ubuntu-18.04-desktop-amd64.iso 1 921 843 200 100 % 18,47 MB/s 0:01:39 (xfr#1, až- [[e-mail chráněn] ~]#Příklad:10) Smažte soubory v cíli, pokud nejsou přítomny ve zdroji (–delete)
Pokud jste již synchronizovali soubory ze zdroje do cíle a ze zdroje jste soubory smazali, můžete přinutit příkaz rsync k odstranění souborů v cíli pomocí možnosti –delete, příklad je uveden níže
[[e-mail chráněný] ~]# rsync -avz --delete /opt/rpms_db [e-mail chráněný]:/tmp/rpms_db[heslo chráněné e-mailem]:odesílání přírůstkového souboru mazání seznamu rpms_db/apr-util-1.5. 2-6.el7.x86_64.rpmdeleting rpms_db/apr-1.4.8-3.el7_4.1.x86_64.rpmrpms_db/sent 862 bajtů přijatých 105 bajtů 276,29 bajtů/sekcecelková velikost chráněna 147[4715,3] #Příklad:11) Omezte velikost přenosu souborů (–max-size)
Pokud nechcete přenášet nebo kopírovat velké soubory pomocí rsync, použijte možnost ‚–max-size={specify-size-here}‘ , předpokládejme, že nechceme přenášet soubory, jejichž velikost je větší než 500 kB,
Poznámka:Chcete-li zadat velikost v MB, použijte M a pro GB použijte G.
[[e-mail chráněný] ~]# rsync -avz --max-size='500K' /opt/rpms_db [e-mail chráněný]:/tmpPříklad:12) Nesynchronizujte/nekopírujte upravený soubor v cíli
Existují některé scénáře, kdy jsme upravili soubory v cíli a nechceme během synchronizace přepsat upravené soubory ze zdroje, takže toho lze snadno dosáhnout pomocí -u možnost v příkazu rsync
[[chráněno e-mailem] ~]# rsync -avzu [chráněno e-mailem]:/opt/techi /home/pkumar/techi[e-mailem chráněno] heslo:přijímání přírůstkových seznamů souborů 37 bajtů přijato 4 960 bajtů 1 427,71 bajtů/s velikost je 37 771 649 zrychlení je 7 558,87[[email chráněno] ~]#Příklad:13) Odebrat soubory ze zdroje po synchronizaci (–remove-source-files)
Předpokládejme, že chcete odstranit soubory ze zdroje po dokončení synchronizace pomocí příkazu rsync. V níže uvedeném příkladu složka z místního systému „/home/pkumar/techi.tgz “ je synchronizován se vzdáleným systémem (192.168.1.29), jakmile je synchronizace dokončena, smaže soubor ze zdroje.
[[e-mail chráněný] ~]# rsync --remove-source-files -zvh /home/pkumar/techi.tgz [e-mail chráněný]:/opt[email protected]'s password:techi.tgzsent 597 bajtů přijato 43 bajtů 182,86 bajtů/sektor celková velikost je 518 zrychlení je 0,81[[e-mail chráněný] ~]#[[chráněný e-mail] ~]# ls -l /home/pkumar/techi.tgzls:nelze získat přístup k /home/pkumar/techi.tgz :Žádný takový soubor nebo adresář [[email protected] ~]#Příklad:14) Před vlastní synchronizací nasucho spusťte příkaz rsync
Mohou nastat situace, kdy nám nejde o chování příkazu rsync, takže v takových případech je lepší provést suchý běh rsync
[[chráněn e-mailem] ~]# rsync --dry-run --remove-source-files -zvh /home/pkumar/projects.tar [chráněno e-mailem]:/opt[heslo uživatele chráněné e-mailem:projects .tarsent 51 bajtů přijato 19 bajtů 7,37 bajtů/sektor celková velikost je 981,24 M zrychlení je 14 017 682,29 (SUCHÝ PROVOZ)[[e-mail chráněný] ~]#Příklad:15) Zahrnout a vyloučit soubory během synchronizace s rsync
Existují situace, kdy chceme kopírovat nebo synchronizovat soubory a adresáře určitého typu a chceme vyloučit soubory nebo adresáře určitého typu. Příkaz Rsync podporuje možnosti zahrnutí i vyloučení.
V níže uvedeném příkladu chcete zkopírovat soubory typu pdf a rpm a vyloučit typy souborů png.
[[e-mail chráněný] ~]# rsync -avz -e ssh --include '*.pdf *.rpm' --exclude '*.png' /home/pkumar/techi [e-mail chráněný]:/opt[ e-mailem chráněné heslo]:odesílání přírůstkového souboru listtechi/techi/OpenStack-Networking.pdftechi/httpd-2.4.6-88.el7.centos.x86_64.rpmtechi/httpd-tools-2.4.6-88.el7.centos. x86_64.rpmtechi/postfix-2.10.1-7.el7.x86_64.rpmsent 9 469 912 bajtůPříklad:16) Omezte rychlost přenosu dat v rsync (–bwlimit=
) V příkazu rsync můžeme nastavit limit šířky pásma pro přenos dat z jednoho stroje na druhý, použijte ‘–bwlimit=
‘ možnost v příkazu rsync pro omezení rychlosti přenosu dat. Předpokládejme, že chceme nastavit maximální rychlost přenosu dat (rychlost) na 600 KB/s s rsync, příklad je uveden níže
[[email protected] ~]# rsync -avz --progress --bwlimit=600 /home/pkumar/techi [e-mail chráněný]:/opt[email protected]'s password:sending incremental file listtechi/techi/ OpenStack-Networking.pdf6,153,239 100 % 910,02 kB/s 0:00:06 (xfr#1, to-chk=6/8)techi/httpd-2.4.6-88.el7.centos.x86_64.rpm2,84 100 % 615,28 kB/s 0:00:04 (xfr#2, to-chk=5/8)techi/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm92,504 100 % 507,51 kB s 0:00:00 (xfr#3, to-chk=4/8)techi/pkumar-2.png0 100 % 0,00 kB/s 0:00:00 (xfr#4, to-chk=3/8) techi/pkumar-3.png0 100 % 0,00 kB/s 0:00:00 (xfr#5, to-chk=2/8)techi/pkumar.png0 100 % 0,00 kB/s 0:00:00 (xfr## 6, to-chk=1/8)techi/postfix-2.10.1-7.el7.x86_64.rpm2,558,136 100 % 594,80 kB/s 0:00:04 (xfr#7, to-chk=0/8 )odeslané 9 470 087 bajtů přijato 153 bajtů 485 653,33 bajtů/sektor celková velikost je 11 647 907 zrychlení je 1,23[[e-mail chráněný] ~]#Příklad:17) Zobrazit rozdíl v souborech a adresářích mezi zdrojem a cílem
Použijte „-i ” v příkazu rsync pro zobrazení rozdílu v souborech a adresářích mezi zdrojem a cílem. Příklad je uveden níže
[[email protected]teway ~]# rsync -avzi /home/pkumar/techi [email protected]:/opt[email protected]'s password:sending incremental file list.d..t..... . techi/Podle výše uvedeného výstupu příkazu existuje rozdíl v souboru s názvem „projects.txt“ na místě určení. Níže je uveden význam klíčových slov ve výše uvedeném výstupu,
- d:označuje změnu cílového souboru
- f:označuje soubor
- t:označuje změnu časových razítek
- s:označuje změnu velikosti
To je vše z tohoto tutoriálu, v případě, že tyto příklady porozumíte příkazu rsync efektivněji, podělte se prosím o své názory a komentáře
Přečtěte si také : 17 užitečných příkazů tar s praktickými příklady v systému Linux
Přečtěte si také :Jak otáčet a komprimovat soubory protokolu v Linuxu pomocí Logrotate
18 rychlých příkladů příkazů „lsof“ pro Linux Geeks Jak nainstalovat EndeavourOS krok za krokem pomocí snímků obrazovkyLinux