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.
Tartalomjegyzék
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.
Ö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.
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.
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.