Weboldal keresés

16 gyakorlati példa az Rsync parancsra Linuxban


Az Rsync (Remote Sync) a leggyakrabban használt parancs fájlok és könyvtárak távoli, valamint helyi másolására és szinkronizálására Linux/Unix rendszereken.

Az rsync parancs segítségével távolról és helyben másolhatja és szinkronizálhatja adatait könyvtárak, lemezek és hálózatok között, biztonsági mentéseket végezhet az adatokról, és tükrözheti két Linux-gép között.

Ez a cikk az 16 alapvető és haladó rsync parancs használatát ismerteti a fájlok távoli és helyi átviteléhez Linux alapú gépeken. Nem kell root felhasználónak lennie az rsync parancs futtatásához.

Az Rsync Command előnyei

Számos előnnyel rendelkezik, többek között:

  • Hatékony fájlátvitel – az rsync delta átviteli algoritmust használ, ami azt jelenti, hogy csak a forrás- és célfájlok közötti különbségeket továbbítja, ami jelentősen csökkenti az átvitt adatok mennyiségét, így hatékonyan szinkronizálja a nagy fájlokat vagy könyvtárakat.
  • Távoli fájlszinkronizálás – az rsync támogatja mind a helyi, mind a távoli fájlátvitelt SSH-n keresztül, ami lehetővé teszi a helyi és távoli rendszerek közötti szinkronizálást vagy a könyvtárak tükrözését több gépen.
  • Növekményes biztonsági mentések – az rsync kiválóan alkalmas növekményes biztonsági mentések készítésére, mivel hatékonyan hoz létre és frissít biztonsági másolatokat azáltal, hogy csak új vagy módosított fájlokat visz át.
  • Megőrzi a fájljogosultságokat – az rsync meg tudja őrizni a különböző fájlattribútumokat, például az engedélyeket, a tulajdonjogot, az időbélyegeket és a szimbolikus hivatkozásokat, ami biztosítja, hogy a másolt fájlok megőrizzék eredeti tulajdonságaikat a célhelyen.
  • Sávszélesség-szabályozás – az rsync lehetővé teszi a sávszélesség-használat korlátozását a fájlátvitel során, mivel mindkét oldalon tömörítési és kitömörítési módszert használ, miközben adatokat küld és fogad.
  • Gyorsabb – az rsync gyorsabb lehet, mint az scp (Secure Copy) a fájlok átviteléhez, különösen nagy könyvtárak szinkronizálásakor, vagy ha már részben átvitt vagy a célhelyen létező fájlokkal foglalkozik.

Rsync parancs szintaxisa

Az rsync parancs a következő szintaxist követi:

rsync [OPTIONS] SOURCE DESTINATION

Íme az rsync parancsokkal használt különböző összetevők és opciók magyarázata:

  • -v – Bőbeszédű kimenet, amely részletes információkat jelenít meg az átvitelről.
  • -r – rekurzívan másolja az adatokat (de nem őrzi meg az időbélyegeket és az engedélyeket az adatátvitel során.
  • -a – archiválási mód, amely lehetővé teszi a fájlok rekurzív másolását, valamint megőrzi a szimbolikus hivatkozásokat, a fájljogosultságokat, a felhasználói és csoportok tulajdonjogait, valamint az időbélyegeket.
  • -z – Tömörítse a fájlokat átvitel közben a hálózathasználat csökkentése érdekében.
  • -h – ember által olvasható, kimenő számok ember által olvasható formátumban.
  • -P – Az átvitel folyamatának megjelenítése.
  • FORRÁS – Meghatározza az átvinni kívánt forrásfájl(oka)t vagy könyvtárat, amely lehet helyi vagy távoli hely.
  • DESTINATION – Megadja a cél elérési útját, ahová a fájlok vagy könyvtárak másolásra kerülnek. A forráshoz hasonlóan lehet helyi elérési út vagy távoli hely.

Telepítse az Rsync programot Linux rendszeren

Telepíthetjük az rsync csomagot a következő csomagkezelő segítségével, a Linux disztribúciójának megfelelően.

sudo apt install rsync         [On Debian, Ubuntu and Mint]
sudo yum install rsync         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/rsync  [On Gentoo Linux]
sudo apk add rsync            [On Alpine Linux]
sudo pacman -S rsync           [On Arch Linux]
sudo zypper install rsync      [On OpenSUSE]    

1. Fájl másolása/szinkronizálása helyileg

Egy fájl helyi másolásához vagy szinkronizálásához használhatja a következő parancsot, amely egyetlen fájlt szinkronizál a helyi gépen egyik helyről a másikra.

Ebben a példában egy backup.tar fájlnevet kell átmásolni vagy szinkronizálni a /tmp/backups/ mappába.

[root@tecmint]# rsync -zvh backup.tar.gz /tmp/backups/

created directory /tmp/backups
backup.tar.gz

sent 224.54K bytes  received 70 bytes  449.21K bytes/sec
total size is 224.40K  speedup is 1.00

A fenti példában láthatja, hogy ha a cél még nem létezik, az rsync automatikusan létrehoz egy könyvtárat a célhelyhez.

2. Könyvtár helyi másolása/szinkronizálása

A következő parancs átviszi vagy szinkronizálja az összes fájlt egy könyvtárból egy másik könyvtárba ugyanazon a gépen.

Ebben a példában a /root/rpmpkgs tartalmaz néhány rpm csomagfájlt, és azt szeretné, hogy a könyvtár a /tmp/backups/ mappába kerüljön másolásra.

[root@tecmint]# rsync -avzh /root/rpmpkgs /tmp/backups/

sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm

sent 3.47M bytes  received 96 bytes  2.32M bytes/sec
total size is 3.74M  speedup is 1.08

3. Másoljon egy könyvtárat a helyi kiszolgálóról a távoli kiszolgálóra

Ha egy könyvtárat egy helyi kiszolgálóról távoli kiszolgálóra szeretne másolni, használja a következő parancsot, amely szinkronizálja a könyvtárat a helyiről egy távoli gépre.

Például ha van egy mappa a helyi számítógépen „rpmpkgs”, amely néhány RPM csomagot tartalmaz, és ha szeretné, hogy a helyi könyvtár tartalma elküldje távoli kiszolgálóra, használhatja a következő parancsot.

rsync -avzh /root/rpmpkgs [email :/root/

The authenticity of host '192.168.0.141 (192.168.0.141)' can't be established.
ED25519 key fingerprint is SHA256:bH2tiWQn4S5o6qmZhmtXcBROV5TU5H4t2C42QDEMx1c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.141' (ED25519) to the list of known hosts.
[email 's password: 
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm

sent 3.74M bytes  received 96 bytes  439.88K bytes/sec
total size is 3.74M  speedup is 1.00

4. Másoljon egy könyvtárat a távoli kiszolgálóról a helyi kiszolgálóra

Ez a parancs segít szinkronizálni egy távoli könyvtárat egy helyi könyvtárral. Ebben a példában egy távoli szerveren található /root/rpmpkgs könyvtárat másoljuk a helyi számítógépére a /tmp/myrpms mappában.

rsync -avzh [email :/root/rpmpkgs /tmp/myrpms

[email 's password: 
receiving incremental file list
created directory /tmp/myrpms
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm

sent 104 bytes  received 3.49M bytes  997.68K bytes/sec
total size is 3.74M  speedup is 1.07

5. Rsync over SSH

Az rsync segítségével SSH-t (Secure Shell) használhatunk adatátvitelre, az SSH protokollt pedig adataink átvitele közben, így biztos lehet benne, hogy az adatok átvitele biztonságos kapcsolaton történik. titkosítással, hogy senki ne tudja elolvasni az Ön adatait, miközben azokat vezetéken keresztül továbbítják az interneten.

Az rsync használatakor is meg kell adnunk a felhasználói/root jelszót az adott feladat végrehajtásához, tehát az SSH használatával. opció titkosított módon küldi el bejelentkezési adatait, hogy jelszava biztonságban legyen.

Az rsync használatához az SSH felett, a -e kapcsolóval megadhatja a távoli shell-parancsot, amely általában az ssh, ahogy az ábrán látható.

rsync [OPTIONS] -e ssh /path/to/source user@remote:/path/to/destination

6. Másoljon egy fájlt egy távoli kiszolgálóról egy helyi kiszolgálóra SSH segítségével

Egy fájl távoli szerverről egy helyi szerverre történő szinkronizálásához megadhat egy protokollt az rsync funkcióval a „-e ” opció használatával a használni kívánt protokollnévvel.

Ebben a példában az „ssh ”-t használjuk a „-e ” opcióval, és adatátvitelt hajtunk végre.

rsync -avzhe ssh [email :/root/anaconda-ks.cfg /tmp

[email 's password: 
receiving incremental file list
anaconda-ks.cfg

sent 43 bytes  received 1.10K bytes  325.43 bytes/sec
total size is 1.90K  speedup is 1.67

7. Másoljon át egy fájlt egy helyi kiszolgálóról egy távoli kiszolgálóra SSH-val

Ha egy fájlt egy helyi szerverről egy távoli kiszolgálóra szeretne szinkronizálni SSH használatával, használja a következő parancsot az ábrán látható módon.

rsync -avzhe ssh backup.tar.gz [email :/backups/

[email 's password: 
sending incremental file list
created directory /backups
backup.tar.gz

sent 224.59K bytes  received 66 bytes  64.19K bytes/sec
total size is 224.40K  speedup is 1.00

8. Jelenítse meg az Rsync segítségével történő adatátvitel folyamatát

Az adatok egyik gépről egy másik gépre való átvitele közben a folyamat megjelenítésére használhatjuk a ’--progress’ opciót, amely megjeleníti a fájlokat és az átvitel befejezéséig hátralévő időt.

rsync -avzhe ssh --progress /root/rpmpkgs [email :/root/rpmpkgs

[email 's password: 
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
          1.47M 100%   31.80MB/s    0:00:00 (xfr#1, to-chk=3/5)
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
        138.01K 100%    2.69MB/s    0:00:00 (xfr#2, to-chk=2/5)
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
          2.01M 100%   18.45MB/s    0:00:00 (xfr#3, to-chk=1/5)
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
        120.48K 100%    1.04MB/s    0:00:00 (xfr#4, to-chk=0/5)

sent 3.74M bytes  received 96 bytes  1.50M bytes/sec
total size is 3.74M  speedup is 1.00

9. Adja meg a speciális kiterjesztésű fájlokat az Rsync segítségével

Ha egy rsync-művelet során meghatározott fájlokat vagy mintákat szeretne felvenni, használja a --include kapcsolót olyan kiterjesztéssel, amely megfelel az összes fájlnak.

rsync -avz --include='*.txt' /path/to/source/ user@remote:/path/to/destination/

A bemutatott példában az rsync csak a .txt kiterjesztésű fájlokat tartalmazza a /path/to/source/ könyvtárból az átvitel során.

10. Az Rsync segítségével zárja ki a meghatározott kiterjesztésű fájlokat

Hasonlóképpen, ha egy adott kiterjesztést szeretne kizárni egy rsync művelet során, használhatja a --exclude opciót helyettesítő karaktermintával.

rsync -avz --exclude='*.ext' /path/to/source/ user@remote:/path/to/destination/

A bemutatott példában az rsync kizárja a megadott (*.ext) kiterjesztésű fájlokat az átvitel során, miközben az összes többi fájlt és könyvtárat is tartalmazza.

11. Fájlok felvétele és kizárása az Rsync segítségével

Adott fájlok vagy minták rsync művelete során történő felvételéhez és kizárásához használhatja az --include és a --exclude opciókat is megfelelő helyettesítő karaktermintákkal.

Ez a két lehetőség lehetővé teszi számunkra a fájlok befoglalását és kizárását a paraméterek megadásával. Ez az opció segít meghatározni azokat a fájlokat vagy könyvtárakat, amelyeket fel szeretne venni a szinkronizálásba, illetve kizárni a fájlokat és mappákat. amellyel nem szeretnél áthelyezni.

Ebben a példában az rsync parancs csak azokat a fájlokat és könyvtárakat fogja tartalmazni, amelyek „R” karakterrel kezdődnek, és kizár minden más fájlt és könyvtárat.

rsync -avze ssh --include 'R*' --exclude '*' [email :/var/lib/rpm/ /root/rpm

12. A –delete opció használata az Rsync-ben

Ha egy fájl vagy könyvtár nem létezik a forrásban, de már létezik a célhelyen, akkor szinkronizálás közben érdemes lehet törölni a meglévő fájlt/könyvtárat a célhelyen.

Használhatjuk a ’--delete’ opciót a forráskönyvtárban nem található fájlok törlésére.

A forrás és a cél szinkronban van. Most hozzon létre egy új test.txt fájlt a célhelyen.

[root@tecmint:~]# cd /root/rpm/
[root@tecmint:~/rpm]# touch test.txt
[root@tecmint:~/rpm]# rsync -avz --delete [email :/var/lib/rpm/ /root/rpm/

[email 's password: 
receiving incremental file list
deleting test.txt
./
.dbenv.lock
.rpm.lock
Basenames
Conflictname
Dirnames
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Packages
Providename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.001
__db.002
__db.003

sent 445 bytes  received 18,543,954 bytes  2,472,586.53 bytes/sec
total size is 71,151,616  speedup is 3.84

A Target a test.txt nevű új fájllal rendelkezik, amikor a forrással a „–delete” opcióval szinkronizálva eltávolította a test.txt fájlt. .

13. Állítsa be a fájlátviteli korlátot az Rsync segítségével

Megadhatja az átviendő vagy szinkronizálandó maximális fájlméretet. Ezt a „--max-size” opcióval teheti meg. Ebben a példában a maximális fájlméret 200 KB, tehát ez a parancs csak azokat a fájlokat viszi át, amelyek 200 KB vagy annál kisebbek.

rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ [email :/root/tmprpm

[email 's password: 
sending incremental file list
created directory /root/tmprpm
./
.dbenv.lock
.rpm.lock
Conflictname
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Recommendname
Requirename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.002

sent 129.52K bytes  received 396 bytes  28.87K bytes/sec
total size is 71.15M  speedup is 547.66

14. Automatikusan törölje a forrásfájlokat az átvitel után

Tegyük fel, hogy rendelkezik a fő webszerverrel és egy adatmentési kiszolgálóval, készített egy napi biztonsági másolatot, és szinkronizálta azt a biztonsági mentési szerverével, de most nem szeretné a biztonsági másolat helyi másolatát a webszerveren tartani.

Tehát megvárja, amíg az átvitel befejeződik, majd manuálisan törölje a helyi biztonsági mentési fájlt? Természetesen nem. Ezt az automatikus törlést a '--remove-source-files' opcióval lehet végrehajtani.

rsync --remove-source-files -zvh backup.tar.gz [email :/tmp/backups/

[email 's password: 
backup.tar.gz

sent 795 bytes  received 2.33K bytes  894.29 bytes/sec
total size is 267.30K  speedup is 85.40

[root@tecmint:~]# ls -l backup.tar.gz

ls: cannot access 'backup.tar.gz': No such file or directory

15. Végezzen szárazfutást az Rsync segítségével

Ha Ön kezdő az rsync-et használó személy, és nem tudja, hogy pontosan mit fog tenni a parancs. Az Rsync valóban összezavarhatja a célmappában lévő dolgokat, és a visszavonás fárasztó munka lehet.

Ennek az opciónak a használata nem módosítja a fájlokat, és a parancs kimenetét mutatja, ha a kimenet pontosan ugyanazt mutatja, mint amit szeretne, akkor eltávolíthatja a '--dry-run ' opciót a parancsból, és futtassa a terminálon.

rsync --dry-run --remove-source-files -zvh backup.tar.gz [email :/tmp/backups/

[email 's password: 
backup.tar.gz

sent 50 bytes  received 19 bytes  19.71 bytes/sec
total size is 267.30K  speedup is 3,873.97 (DRY RUN)

16. Rsync Set Bandwidth Limit and Transfer File

Beállíthatja a sávszélesség-korlátot, miközben adatokat visz át egyik gépről a másikra a ‘--bwlimit’ opció segítségével. Ez az opció segít korlátozni az I/O sávszélességet.

rsync --bwlimit=100 -avzhe ssh  /var/lib/rpm/  [email :/root/tmprpm/
[email 's password:
sending incremental file list
sent 324 bytes  received 12 bytes  61.09 bytes/sec
total size is 38.08M  speedup is 113347.05

Ezenkívül az rsync alapértelmezés szerint csak a megváltozott blokkokat és bájtokat szinkronizálja, ha kifejezetten a teljes fájlt szeretné szinkronizálni, akkor használja a „-W” opciót.

rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
sent 14.71M bytes  received 31 bytes  3.27M bytes/sec
total size is 16.18M  speedup is 1.10
Következtetés

Ezzel véget is értünk az rsyncről és képességeiről szóló áttekintésünknek. A kiterjedt opciók és funkciók további felfedezéséhez javasoljuk, hogy tekintse meg a rendelkezésre álló átfogó kézikönyvoldalakat (man oldalakat).