Rysnc útmutató és 11 példa a hatékony használatára

Az Rsync egy ingyenesen használható parancssori eszköz, amely lehetővé teszi a fájlok helyi és távoli szinkronizálását. Ezzel fájlokat és könyvtárakat vihetünk át.

Ez nagyon hasznossá teszi az adatok migrálásához, biztonsági mentések készítéséhez és tükrözéshez, így nagyszerű a webmesterek és a rendszergazdák számára az ismétlődő adatátviteli feladatokhoz.

Ez a cikk megtanít minket a Rysnc működésére, és néhány hasznos példát mutat be.

Hogyan működik az Rsync?

Az Rsync egy távoli szinkronizálási parancssori segédprogram Unix-szerű rendszerekhez. Lehetővé teszi a felhasználó számára a fájlok zökkenőmentes átvitelét/szinkronizálását a gépek vagy két gazdagép között.

A motorháztető alatt az rsync a delta-átviteli algoritmust használja. Ez az algoritmus magában foglalja a két fájl közötti különbségek átmásolását két gazdagépen (forrás és cél). A forrás és a cél lehet helyi vagy távoli. Az rsync parancs kétféle módon hajthat végre adatmásolási/szinkronizálási feladatokat. Ezek:

  • Használja az ssh, rsh parancsot a két gazdagép közötti másoláshoz/szinkronizáláshoz.
  • Használja a TCP rsync démont a másoláshoz/szinkronizáláshoz.

Mivel Unix-szerű rendszerekben való működésre tervezték, Linux alatt is működik.

Az rsync lépésről lépésre a következőképpen használja:

  • Az Rsync SSH segítségével csatlakozik a távoli gazdagéphez, és jelszót kér.
  • Csatlakozás után a távoli gazdagép rsync-je kommunikál a forrással.
  • Ezek a programok ezután meghatározzák a szinkronizálandó fájlokat és könyvtárakat. Delta-átviteli algoritmust használ a fájlok közötti különbség ellenőrzésére.

Ha az rsync parancs nem talál fájlt a távoli eszközön, de a gazdagépen nem, akkor átmásolja és átviszi a gazdagépre. Hasonlóképpen, a már létező fájlok (mind a gazdagépen, mind a távoli) esetében átmásolja a köztük lévő különbséget (azaz a megváltozott részeket). Végül figyelmen kívül hagyja a meglévő fájlokat mindkét rendszeren módosítás nélkül.

Az rsync parancs a növekményes frissítéseket úgy éri el, hogy a különbséget egy ideiglenes fájlban tárolja, mielőtt elküldi a célhoz.

Mielőtt elkezded:

  • Root vagy sudo jogosultságokkal kell rendelkeznie
  • Hozzáférhet a terminálhoz/parancssorhoz
  • SSH hozzáférés az rsync parancsok biztonságos futtatásához
  • Az rsync elkészítéséhez két gép is kell.

Az oktatóanyaghoz a Linux Mint 21.1 Vera verzióját fogjuk használni. Könnyen követheti az útmutatót probléma nélkül bármely más Linux disztribúció használatával.

Miért használja az rsync over Scp-t?

Az Scp (biztonságos másolás) egy népszerű parancssori protokoll, amely lehetővé teszi a felhasználók számára a fájlok másolását. A másolás lineáris megközelítését követi. Ez azt jelenti, hogy egyszerűen átmásolja a fájlokat a forrásból a célba. Ennek biztonságos elvégzéséhez SSH-t használ.

Az scp parancs szintaxisa a következő:

scp option SOURCE DESTINATION

A kérdés azonban továbbra is fennáll, hogy miért használjuk az rsync-et scp helyett?

Nos, az rsync használatának számos előnye van. Ezek az előnyök a következők:

  • Gyorsabb végrehajtás: Az Rsync gyorsabb, mint az scp, mert távoli frissítési protokollt használ. Ez lehetővé teszi, hogy a teljes fájl helyett csak a különbségeket továbbítsa. Tehát, ha idővel rendszeres szinkronizálást állít be, akkor az első alkalommal csak egy teljes másolatot kell készítenie. A következő alkalomtól kezdve csak a frissített részeket másolja a delta-transzfer algoritmus segítségével.
  • Kisebb sávszélesség-fogyasztás: Mivel az rsync-nek nem kell újra átmásolnia a teljes fájlt, ez kisebb sávszélesség-felhasználáshoz vezet. Ezenkívül tömörítési/kitömörítési algoritmusokat is használ a fájlméret minimalizálására az átvitel során.
  • További parancssori beállítások: Az Rsync a parancssori opciók számában is felülmúlja az scp-t. Ez azt jelenti, hogy jobban finomhangolhatja az rsync-et, mint az scp-t.
  MS Word dokumentum megnyitása vázlatos nézetben alapértelmezés szerint

Összefoglalva, az rsync egy kiváló növekményes szinkronizálási eszköz. Az scp eszköz a fájlok biztonságos átviteléhez/szinkronizálásához is hasznos. Valós forgatókönyv esetén az scp alkalmas a napi feladatok elvégzésére, ha egyszerűbb megközelítést keres. Az ismétlődő feladatokhoz azonban használja az rsync-et.

Rsync parancs szintaxisa

Az rsync parancs a következő:

Itt a kifejezések meghatározása a következő:

  • OPCIÓ – Ezek az rsync beállítások
  • SOURCE – Forráskönyvtár
  • DEST – Cél címtár
  • FELHASZNÁLÓ – Távoli felhasználónév
  • HOST – Távoli hosztnév vagy IP-cím

Az opciók olyan paraméterek, amelyek további funkciókat kínálnak a parancsnak. Például az adatokat rekurzívan szinkronizálhatja az -r kapcsolóval. Az -r opció azonban nem szinkronizálja a csoportok és felhasználók tulajdonjogát, az időbélyegeket, az engedélyeket vagy a szimbolikus hivatkozásokat. Ehelyett használhatja az -a kapcsolót, amely archiválási módban futtatja a parancsot, biztosítva, hogy a fájl összes tulajdonjoga, engedélye és szimbolikus hivatkozása megmaradjon másoláskor.

További rsync-beállítások:

  • -z: tömöríti az adatokat a helytakarékosság érdekében
  • -h: ember által olvasható formátumú kimenetet biztosít
  • -b: biztonsági mentést végez az adatszinkronizálási folyamat során
  • -e: SSH protokoll használata távoli adatátvitelhez
  • -progress: az adatszinkronizálás folyamatának megjelenítése
  • -v: kérje meg az rsync-et, hogy jelenítse meg a részletes kimenetet
  • –n: végezzen száraz futtatást a beállítások és az adatszinkronizálás beállításainak teszteléséhez
  • -q: letiltja az rsync parancs kimenetét és beállításait

Az rsync telepítése

A legtöbb Unix és Linux rendszeren telepítve van az rsync. Ha a rendszeren nincs rsync, akkor a következő parancs(ok) segítségével telepítheti.

Debian/Ubuntu és Mint számára

sudo apt-get install rsync

Arch Linuxhoz

pacman -S rsync

A Gentoo-n

emerge sys-apps/rsync

CentOS/Fedora/REHL rendszeren

sudo yum install rsync

Az openSUSE rendszeren

sudo zypper install rsync

Mivel nálunk a Linux Mint, az rsync előre telepítve volt. Tehát futtathatja az rsync parancsot a terminálban, hogy megnézze, telepítve van-e. Elmagyarázza képességeit, lehetőségeit és egyéb fontos információkat, ha jelen van.

nitt ~
$ rsync
rsync  version 3.2.3  protocol version 31
Copyright (C) 1996-2020 by Andrew Tridgell, Wayne Davison, and others.
Web site: https://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, hardlink-specials, symlinks, IPv6, atimes,
    batchfiles, inplace, append, ACLs, xattrs, optional protect-args, iconv,
    symtimes, prealloc, stop-at, no crtimes
Optimizations:
    SIMD, no asm, openssl-crypto
Checksum list:
    xxh128 xxh3 xxh64 (xxhash) md5 md4 none
Compress list:
    zstd lz4 zlibx zlib none

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

rsync is a file transfer program capable of efficient remote update
via a fast differencing algorithm.

Lássuk most az rsync működését különböző használati esetekkel.

Az oktatóanyaghoz két könyvtárat fogunk készíteni.

  • forrás-könyvtár
  • dest-könyvtár

Ehhez be kell írnia a következő parancsokat.

mkdir source-directory
mkdir dest-directory

Ezenkívül fájlokat kell generálnunk az rsync működéséhez. Tehát hozzunk létre néhány tesztfájlt az alábbi paranccsal.

touch source-directory/file{1..100}

Ez 100 üres fájlt hoz létre a forráskönyvtárban. Ezt az alábbi parancs beírásával erősítheti meg.

ls source-directory
Output:
nitt rsync-tutorial
$ ls
dest-directory  source-directory
nitt rsync-tutorial
$ touch source-directory/file{1..100}
nitt rsync-tutorial
$ ls source-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99

Megjegyzés: A dest-könyvtárat üresen hagytuk.

  Hogyan változtassunk telefonszámot a Facebookon

Könyvtárak helyi rekurzív másolása

Annak ellenére, hogy az rsync elsődleges célja a fájlok másolása a helyi és a távoli szerver között, ugyanilyen hasznos a fájlok helyi másolásakor.

Ebben az esetben a következő rsync szintaxist fogjuk használni.

rsync beállítás SOURCE DESTINATION

Másolja a forrás-könyvtárunkban található fájlokat a dest-könyvtárba a következő parancs futtatásával.

rsync -r source-directory/ dest-directory

Itt a „rekurzív” parancs átmásolja a fájlokat a forrás-könyvtárból a célkönyvtárba.

nitt rsync-tutorial
$ ls
dest-directory  source-directory
nitt rsync-tutorial
$ ls dest-directory
nitt rsync-tutorial
$ ls source-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99
nitt rsync-tutorial
$ rsync -r source-directory/ dest-directory
nitt rsync-tutorial
$ ls dest-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99

Ez a forrás-könyvtár minden egyes fájlját a dest-könyvtárba másolja.

Egyetlen fájl helyi másolása

Most, hogy megtanultuk két könyvtár szinkronizálását, megtanuljuk, hogyan másoljunk egyetlen fájlt.

Ebből a célból szerkesztjük a forráskönyvtárban lévő üres file1 fájlt, majd szinkronizáljuk a dest-könyvtárban található fájllal.

Fájl szerkesztéséhez írja be a következő parancsot.

nano source-directory/file1

Most másolja be a következő szöveget a nano szerkesztőbe.

We're updating file1 in the source-directory.
Once we update, we'll push the new update to the dest-directory.
rsync doesn't need to re-copy the file using the delta-transfer algorithm.
This algorithm checks the differences and then updates destination files
accordingly.
So, once you save file1 in the source-directory, open file1 in
the dest-directory. It'll be empty.
However, if we check it after running rsync, you'll see that file1 in dest-directory
is updated.

Tartalom hozzáadása egy fájlhoz

Most zárja be és mentse a fájlt.

Most másoljuk a fájlt az rsync segítségével.

sudo rsync -v --existing source-directory/file1 /dest-directory
#Output
nitt rsync-tutorial
$ sudo rsync -v --existing source-directory/file1 dest-directory
file1

sent 557 bytes  received 35 bytes  1,184.00 bytes/sec
total size is 474  speedup is 0.80

nitt rsync-tutorial
$ 

Amint azt észrevette, a –meglévő opciót használtuk. Ez frissíti a meglévő fájlokat. Ha a parancsot – létezés nélkül futtatja, akkor az nem frissül, még akkor sem, ha sikeresen fut.

Ha a másolni kívánt egyetlen fájl nem létezik a célmappában, akkor a következő parancsot kell futtatnia.

rsync -v source-directory/newfile dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile dest-directory
newfile

sent 82 bytes  received 35 bytes  234.00 bytes/sec
total size is 0  speedup is 0.00

Több fájl másolása

Ha több fájlt kíván másolni, meg kell említenie mindkét fájl forrásútvonalát, majd a célkönyvtárat.

Ebből a célból két új fájlt hozunk létre: newfile2 és newfile3, a forráskönyvtárban. Ehhez futtassa a következő parancsot.

touch source-directory/newfile{2..3}

Most használja a következő parancsot több fájl szinkronizálásához.

rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
newfile2
newfile3

sent 135 bytes  received 54 bytes  378.00 bytes/sec
total size is 0  speedup is 0.00
nitt rsync-tutorial
$ 

Fájl vagy könyvtár másolása helyiről távolira

A helyi és távoli átvitel rsync szintaxisa a következő.

rsync option SOURCE [email protected]:DEST

Amint látja, ismernie kell a távoli gép IP-címét, hogy ez működjön. Ezenkívül hozzá kell adnia az IP-címet a forrásfájl után.

rsync -av /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory

Az átvitel megkezdése előtt kérni fogja a jelszót. A folytatáshoz írja be. Továbbá, ha a felhasználó más a távoli gépen, akkor meg kell említenie az IP-cím előtt, amelyet a @ jel követ.

rsync -av /Projects/rsync-tutorial/source-directory [email protected]: /Projects/rsync-tutorial/dest-directory

Ha több fájlt vagy könyvtárat kíván másolni, akkor listáznia kell a fájlokat vagy a könyvtár elérési útját. A szintaxis alább található.

rsync -av /Projects/rsync-tutorial/source-directory/newfile1 /Projects/rsync-tutorial/source-directory/newfile2 192.168.192.200: /Projects/rsync-tutorial/dest-directory

Távoli átvitel-specifikus protokollok

Az Rsync lehetővé teszi bizonyos fájlátviteli protokollok megadását. Ehhez a -e kapcsolót kell használnia, majd a protokollt.

  8 DJ szoftver a következő buli fellépéséhez

Ha például az ssh protokollt szeretné használni, akkor az rsync parancshoz hozzá kell fűznie az -e ssh karakterláncot.

rsync -e ssh /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory

Fájl vagy könyvtár másolása távoliról helyire

A helyi és távoli átvitel rsync szintaxisa a következő.

sync option [email protected]:SRC DEST

Ez lehívási kérésként működik. Tehát ahhoz, hogy a szükséges fájlokat/könyvtárat egy távoli szerverről a helyi gépre küldje, futtassa a következő parancsot.

rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

A parancs a távoli gép célkönyvtárában lévő fájlokat a helyi gép forráskönyvtárába húzza.

Hasonlóképpen előhívhat egy adott fájlt, ha megemlíti a teljes elérési útján.

rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory/newfile4 /Projects/rsync-tutorial/source-directory

Ha több fájlt vagy könyvtárat szeretne másolni helyiről távolira, meg kell adnia az elérési utat a kiszolgáló IP-címe utáni zárójelben (vesszővel elválasztva).

rsync -av 192.168.192.200: {/Projects/rsync-tutorial/dest-directory/, /home/music/2023-music} /Projects/rsync-tutorial/source-directory

Hasonlóképpen megemlíthet fájlokat is.

Élő folyamat megjelenítése átvitel közben

Célszerű élőben látni a nagyobb adatmentések folyamatát. Ehhez a –progress jelzőt kell használni. Adja hozzá az rsync parancshoz, és láthatja az átviteli sebességet, a hátralévő időt és az átvitt adatok mennyiségét.

rsync -av --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

Törölje a forrásfájlokat, ha az átvitel befejeződött

Használhatja a -remove-source-files jelzőt a forrásfájlok eltávolításához a teljes átvitel után. Ez számos forgatókönyv esetén segíthet, különösen akkor, ha a fájlok nyomok hagyása nélkül történő biztonságossá tételéről van szó, vagy egyszerűen tárhely felszabadítására használjuk őket.

rsync -av --remove-source-files 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

Rsync száraz futás

A Rysnc azt is lehetővé teszi, hogy értékelje a tényleges futtatást. A szárazonfutás segítségével láthatja, hogy helyesen cselekszik-e. Végül is nem akarja véletlenül frissíteni vagy akár törölni sem a fájlokat.

A szárazonfutáshoz a –dry-run opciót kell használnia. Adja hozzá a parancshoz, majd írja be a forrást és a célt.

sudo rsync -v --dry-run source-directory/file1 dest-directory
nitt rsync-tutorial
$ sudo rsync -v --dry-run source-directory/file1 dest-directory
file1

sent 43 bytes  received 19 bytes  124.00 bytes/sec
total size is 474  speedup is 7.65 (DRY RUN)
nitt rsync-tutorial

A kimenet hasonló ahhoz, ahogy korábban futtattuk. Azonban a kimenet végén a (DRY RUN) szó szerepel.

Állítsa be a minimális és maximális fájlméretet

A Rysnc lehetővé teszi a minimális vagy maximális fájlméret beállítását is az átvitel során.

Tehát, ha legalább 15 KB-os méretű átvitelt szeretne végezni, akkor a –min-size=15K értéket kell használnia.

rsync -av --min-size=15k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

A parancs csak a legalább 15 KB méretű fájlokat másolja. Ha a fájl mérete kisebb, figyelmen kívül hagyja azt.

Hasonlóképpen, a –max-size kapcsolóval beállíthatja a maximális fájlméretet.

rsync -av --max-size=450k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

Itt az rsync figyelmen kívül hagyja a 450K-nál nagyobb fájlokat.

Sávszélesség-korlát beállítása

Ha más, nagy sávszélességet igénylő feladatokat végez, beállíthatja a rysnc-t, hogy beállítsa az átvitel sávszélesség-korlátját. Ehhez használja a –bwlimit=KB/s parancsot.

rsync -av --bwlimit=100 --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

Itt 100Kb/s-ra állítottuk a sávszélességet az átvitel során.

Végső szavak

Ez elvezet minket az rsync parancs útmutatójának végéhez. Megtanultuk a rysnc használatát, és rengeteg parancsot hatékonyan lefedtünk.

A rysnc azonban sokkal többet kínál, mint amit bemutattunk. Ezért érdemes átnézni az rsync kézikönyvoldalát is, ahol az rsync minden vonatkozása le van fedve.

Ezután tekintse meg a Windows, Linux és macOS parancssori csalólapjait.