A nem kezdő útmutató az adatok szinkronizálásához az Rsync segítségével

Tartalomjegyzék:

A nem kezdő útmutató az adatok szinkronizálásához az Rsync segítségével
A nem kezdő útmutató az adatok szinkronizálásához az Rsync segítségével

Videó: A nem kezdő útmutató az adatok szinkronizálásához az Rsync segítségével

Videó: A nem kezdő útmutató az adatok szinkronizálásához az Rsync segítségével
Videó: Amateur. Fn + F2 key to get into Bios. Lenovo Yoga 2 11. Press them simultaneously - YouTube 2024, Április
Anonim
Az rsync protokoll meglehetősen egyszerűen használható a hagyományos backup / szinkronizációs feladatokhoz, de néhány fejlettebb funkciója meglepődhet. Ebben a cikkben megmutatjuk, hogy még a legnagyobb adattárolók és biztonsági rajongók is képesek az rsync-t egyetlen megoldásként felhasználni az összes adat redundancia igényének kielégítésére.
Az rsync protokoll meglehetősen egyszerűen használható a hagyományos backup / szinkronizációs feladatokhoz, de néhány fejlettebb funkciója meglepődhet. Ebben a cikkben megmutatjuk, hogy még a legnagyobb adattárolók és biztonsági rajongók is képesek az rsync-t egyetlen megoldásként felhasználni az összes adat redundancia igényének kielégítésére.

Figyelmeztetés: Csak az Advanced Geeks

Ha ott ülsz ott, gondolkodsz "Mi a fene rsync?" Vagy "Csak rsyncet használok az igazán egyszerű feladatokhoz", érdemes megnézni korábbi cikkünket arról, hogyan használhatjuk az rsync-et a Linux-adatok mentéséhez, ami egy bevezetés az rsync-be, a telepítésen keresztül vezet, és bemutatja az alapvető funkcióit. Miután rájöttél rsync használatára (őszintén szólva, ez nem összetett), és kényelmes egy Linux terminálon, készen áll arra, hogy továbblépjen erre a fejlett útmutatóra.

Az rsync futtatása a Windows rendszeren

Először is, olvassuk le Windows olvasóinkat ugyanazon az oldalon, mint a Linux guruk. Annak ellenére, hogy az rsync úgy van megépítve, hogy futtatható legyen Unix-szerű rendszereken, nincs ok arra, hogy ne használja ugyanolyan egyszerűen a Windowson. A Cygwin egy csodálatos Linux API-t gyárt, amelyet használhatunk az rsync futtatásához, ezért menjünk át a weboldalukra és töltsük le a 32 bites vagy 64 bites verziót a számítógépétől függően.

A telepítés egyszerű; az összes opciót az alapértelmezett értékekig tarthatja, amíg el nem éri a "Csomagok kiválasztása" képernyőt.

Most meg kell tennie ugyanazokat a lépéseket a Vim és az SSH számára, de a csomagok kicsit másra fognak nézni, amikor kiválasztjuk őket, tehát itt vannak néhány képernyőkép:
Most meg kell tennie ugyanazokat a lépéseket a Vim és az SSH számára, de a csomagok kicsit másra fognak nézni, amikor kiválasztjuk őket, tehát itt vannak néhány képernyőkép:

A Vim telepítése:

Az SSH telepítése:
Az SSH telepítése:
Miután kiválasztotta ezeket a három csomagot, addig kattintson a következőre, amíg befejezi a telepítést. Ezután megnyithatja a Cygwin-t az ikonra kattintva, amelyet a telepítő elhelyez az asztalon.
Miután kiválasztotta ezeket a három csomagot, addig kattintson a következőre, amíg befejezi a telepítést. Ezután megnyithatja a Cygwin-t az ikonra kattintva, amelyet a telepítő elhelyez az asztalon.

rsync Parancsok: Egyszerű - Haladó

Most, hogy a Windows-felhasználók ugyanazon az oldalon vannak, nézzük meg az egyszerű rsync parancsot, és mutassuk be, hogy a fejlett kapcsolók használata gyorsan összetetté teheti.

Tegyük fel, hogy van egy csomó fájl, amire szükség van a biztonsági mentésre - ki nem ezekben a napokban? Csatlakoztathatja a hordozható merevlemezt, így biztonsági másolatot készíthet a számítógép fájljairól, és kiadhatja a következő parancsot:

rsync -a /home/geek/files/ /mnt/usb/files/

Vagy úgy, ahogyan a Cygwin számítógépen egy Windows számítógépen nézne:

rsync -a /cygdrive/c/files/ /cygdrive/e/files/

Nagyon egyszerű, és abban a pillanatban tényleg nincs szükség az rsync használatára, mivel egyszerűen csak húzhatod és dobhatod le a fájlokat. Ha azonban a másik merevlemezen már van néhány fájl, és csak a frissített verziókkal és az utolsó szinkronizálás óta létrehozott fájlokkal kell rendelkeznie, ez a parancs azért hasznos, mert csak az új adatokat továbbítja a merevlemezre. Nagy fájlokkal, és különösen az interneten keresztül történő fájlok átvitelével ez nagy ügy.

A fájlok külső merevlemezre való mentése, majd a merevlemez ugyanolyan helyen tartja a számítógépet, mint egy nagyon rossz ötlet, ezért vessünk egy pillantást arra, hogy mire lenne szükség a fájlok interneten keresztül történő küldéséhez egy másik számítógéphez ( egy bérelt, családtagja, stb.).

rsync -av --delete -e 'ssh -p 12345’ /home/geek/files/ [email protected]:/home/geek2/files/

A fenti parancs elküldi a fájlokat egy másik számítógéphez, amelynek IP címe a 10.1.1.1. Ez törölné az extrém fájlokat a rendeltetési helyről, amely már nem létezik a forráskönyvtárban, kiadja az átadandó fájlneveket, így elképzelhető, hogy mi folyik itt, és az rSync alagút az SSH porton keresztül a 12345-ös porton.

A

-a -v -e --delete

a kapcsolók a legalapvetőbbek és a leggyakrabban használt eszközök; akkor már tudnod kell egy jó üzletet velük kapcsolatban, ha elolvassa ezt a bemutatót. Vegyünk át néhány olyan kapcsolót, amelyet néha figyelmen kívül hagyunk, de hihetetlenül hasznos:

--progress

- Ez a kapcsoló lehetővé teszi számunkra, hogy megnézzük az egyes fájlok átvitelét. Ez különösen hasznos nagy fájlok interneten történő átvitelénél, de értelmetlen adatmennyiséget tud kiadni, amikor csak kis fájlokat küld át egy gyors hálózaton.

Egy rsync parancs a

--progress

a háttértár váltása folyamatban van:

Image
Image

--partial

- Ez egy másik kapcsoló, amely különösen hasznos nagy fájlok átvitelére az interneten keresztül. Ha az rsync bármilyen okból megszakad a fájl átvitelének közepén, a részlegesen átvitt fájl a célkönyvtárban marad, és az átvitel folytatódik, ahol abbahagyta az rsync parancs ismételt végrehajtását. Nagyméretű fájlok interneten történő átvitelénél (pl. Néhány gigabájt), nincs semmi rosszabb, mint néhány másodperces internetes kimaradás, kék képernyő vagy emberi hiba a fájl átvitelével, és újra kell kezdeni.

-P

- ez a kapcsoló kombinálódik

--progress

és

--partial

ezért használd helyette, és rsync parancsodat kicsit jobban csinálod.

-z

vagy

--compress

- Ez a kapcsoló az rsync tömöríti a fájl adatainak átvitelét, csökkentve a rendeltetési helyre küldendő adatok mennyiségét. Ez valójában egy meglehetősen gyakori kapcsoló, de messze nem lényeges, csak nagyon előnyös a lassú kapcsolatok között, és nem tesz semmit az alábbi típusú fájlokhoz: 7z, avi, bz2, deb, g, z, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

-h

vagy

--human-readable

- Ha a

--progress

kapcsoló, akkor biztosan szeretné használni ezt is. Vagyis, hacsak nem szereted a bájtokat megabájtonként átállítani. A

-h

A kapcsoló az összes kiadott számot emberien olvasható formátumba konvertálja, így ténylegesen érthetővé válik az átvitt adatok mennyisége.

-n

vagy

--dry-run

- Ez a kapcsoló elengedhetetlen ahhoz, hogy megtudja, mikor írja először az rsync parancsfájlt és teszteli. Végrehajt egy próbaüzemet, de valójában nem tesz semmilyen módosítást - az esetleges változások még mindig a szokásos módon kerülnek kiadásra, így mindent átolvashat, és győződjön meg róla, hogy rendben van, mielőtt a szkript forgatásba kerül.

-R

vagy

--relative

- Ezt a kapcsolót akkor kell használni, ha a célkönyvtár még nem létezik. Ezt az opciót később ebben az útmutatóban fogjuk használni, így a célgépen lévő könyvtárakat a mappanevekben időbélyegekkel tudjuk készíteni.

--exclude-from

- Ez a kapcsoló olyan kizáró listához kapcsolódik, amely könyvtárakat tartalmaz, amelyeket nem kíván biztonsági másolatot készíteni. Csak egy egyszerű szövegfájlra van szüksége egy könyvtár vagy fájl elérési útvonallal minden sorban.

--include-from

- Hasonló

--exclude-from

de olyan fájlra mutat, amely tartalmazza a könyvtárakat és a mentett adatok elérési útvonalát.

--stats

- Nem lényeges kapcsoló bármely eszközzel, de ha rendszergazda vagy, akkor hasznos lehet tudni az egyes biztonsági másolatok részletes statisztikáit, csak azért, hogy nyomon tudja követni a hálózaton keresztül küldött forgalom mennyiségét és hasonlókat.

--log-file

- Ez lehetővé teszi az rsync kimenet küldését egy naplófájlba. Mindenképpen javasoljuk az automatizált biztonsági másolatok készítéséhez, amelyeken nem vagy ott, hogy maga elolvashassa a kimenetet. Mindig adjon naplófájlokat egyszer a szabad idejében, hogy minden rendben működjön. Ezenkívül döntő fontosságú kapcsoló a rendszergazda számára, így nem maradt azon tűnődve, hogy a mentések sikertelenek voltak, miközben elhagyta a gyakornokot.

Vessünk egy pillantást az rsync parancsra most, hogy van még néhány kapcsoló:

rsync -avzhP --delete --stats --log-file=/home/geek/rsynclogs/backup.log --exclude-from '/home/geek/exclude.txt' -e 'ssh -p 12345' /home/geek/files/ [email protected]:/home/geek2/files/

A parancs még mindig elég egyszerű, de még mindig nem hoztunk létre egy tisztességes mentési megoldást. Annak ellenére, hogy fájlaink két különböző fizikai helyszínen találhatók, ez a biztonsági mentés nem nyújt védelmet az adatvesztés egyik fő okaival szemben: emberi hiba.

Pillanatfelvételek mentése

Ha véletlenül törli a fájlt, a vírus megsérti a fájlokat, vagy valami más történik, amikor a fájlok nemkívánatosan megváltoztak, majd futtatja az rsync biztonsági parancsfájlt, a biztonsági másolatot felülírja a nem kívánt változásokkal. Amikor ilyen dolog történik (nem akkor, ha, hanem amikor), a biztonsági megoldás semmit sem tett meg, hogy megóvja az adatvesztést.

Az rsync alkotója felismerte ezt, és hozzátette:

--backup

és

--backup-dir

argumentumokat, így a felhasználók különböző biztonsági másolatokat futtathatnak. Az rsync weboldalának első példája olyan szkriptet mutat be, amelyben a teljes biztonsági mentés hétnaponta működik, majd a fájlok módosításai naponta külön könyvtárakba kerülnek. A probléma ezzel a módszerrel az, hogy a fájlok helyreállításához ténylegesen vissza kell térni őket hét különböző időpontban. Ráadásul a legtöbb geek naponta többször futtatják a biztonsági másolataikat, így bármikor könnyedén 20 + különböző mentési könyvtárral rendelkezhet. Nem csak a fájlok fájljainak helyreállítása, hanem fájdalom is, de akár csak a biztonsági mentés alatt lévő adatok megtekintése is rendkívül időigényes lehet - tudnia kell, hogy a fájl utolsó módosításakor megtalálta a legújabb biztonsági másolatot. Ráadásul nem hatékony, hogy csak heti (vagy ritkábban néhány esetben) növekményes biztonsági másolatokat futtathat.

Pillanatfelvétel készítés a mentésre! A pillanatfelvétel-mentések nem többek, mint a növekményes biztonsági másolatok, de hardlinks-okat használnak az eredeti forrás fájlstruktúrájának megőrzéséhez. Lehet, hogy nehéz először beborítani a fejedet, ezért vessünk egy pillantást egy példára.

Feltételezzük, hogy van egy biztonsági másolati szkriptünk, amely kétóránként automatikusan biztonsági másolatot készít az adatairól. Ha az rsync ezt teszi, mindegyik biztonsági másolatot a következő formátumban jelöli meg: Háttér-hónap-nap-időpont.

Tehát egy tipikus nap végén egy mappát találnánk a célkönyvtárunkban:

Ha ezeket a könyvtárakat átnézi, akkor minden fájlt a forráskönyvtárból pontosan úgy látna, mint az akkoriban. Mégis, nincs két másolat a két könyvtár között. Az rsync ezt a hard linkelés használatával érte el
Ha ezeket a könyvtárakat átnézi, akkor minden fájlt a forráskönyvtárból pontosan úgy látna, mint az akkoriban. Mégis, nincs két másolat a két könyvtár között. Az rsync ezt a hard linkelés használatával érte el

--link-dest=DIR

érv.

Természetesen annak érdekében, hogy ezeket a szépen és idõszerûen elnevezett könyvtárakat megnevezzük, egy kicsit meg kell erõsítenünk az rsync szkriptet. Vessünk egy pillantást arra, hogy mi lenne ez egy ilyen biztonsági megoldás elérése, majd részletesebben elmagyarázzuk a forgatókönyvet:

#!/bin/bash

#copy old time.txt to time2.txt

yes | cp ~/backup/time.txt ~/backup/time2.txt

#overwrite old time.txt file with new time

echo `date +”%F-%I%p”` > ~/backup/time.txt

#make the log file

echo “” > ~/backup/rsync-`date +”%F-%I%p”`.log

#rsync command

rsync -avzhPR --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --delete --stats --log-file=~/backup/rsync-`date +”%F-%I%p”`.log --exclude-from '~/exclude.txt' --link-dest=/home/geek2/files/`cat ~/backup/time2.txt` -e 'ssh -p 12345' /home/geek/files/ [email protected]:/home/geek2/files/`date +”%F-%I%p”`/

#don’t forget to scp the log file and put it with the backup

scp -P 12345 ~/backup/rsync-`cat ~/backup/time.txt`.log [email protected]:/home/geek2/files/`cat ~/backup/time.txt`/rsync-`cat ~/backup/time.txt`.log

Ez egy tipikus pillanatkép rsync parancsfájl lenne. Abban az esetben, ha valahol elveszítünk valakit, vágjuk darabonként:

A scriptünk első sorában a time.txt tartalmát a time2.txt fájlra másolja. Az igen cső megerősíti, hogy felül szeretnénk-e írni a fájlt. Ezután megragadjuk a pontos időt, és a time.txt fájlba helyezzük. Ezek a fájlok később hasznosak lesznek.

A következő sorban az rsync naplófájl, az rsync-date.log nevet adjuk meg (ahol a dátum a tényleges dátum és idő).

Most, az összetett rsync parancs, amelyről figyelmeztettelünk:

-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest

- Csak a kapcsolókról beszéltünk korábban; gördíts felfelé, ha szüksége van egy frissítőre.

--chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r

- Ezek a jogosultságok a célkönyvtárhoz. Mivel ezt a könyvtárat az rsync parancsfájl közepén készítjük el, meg kell adnunk a jogosultságokat, hogy felhasználóink fájlokat írhassanak hozzá.

A dátum és a macska parancsok használata

A dátum és a macska parancsok minden egyes használatát át kell menni az rsync parancson belül, annak sorrendjében. Megjegyzés: tudatában vagyunk annak, hogy más módokon is el lehet érni ezt a funkciót, különösen a változók kijelentésével, de ennek az útmutatónak a használatával úgy döntöttünk, hogy ezt a módszert használjuk.

A naplófájl a következőképpen van megadva:

~/backup/rsync-`date +”%F-%I%p”`.log

Alternatívaként ezt a következőképpen is megadhatjuk:

~/backup/rsync-`cat ~/backup/time.txt`.log

Akárhogy is, a

--log-file

parancsnak képesnek kell lennie arra, hogy megtalálja a korábban létrehozott naplófájlt és írjon rá.

A hivatkozás célfájlja a következő:

--link-dest=/home/geek2/files/`cat ~/backup/time2.txt`

Ez azt jelenti, hogy a

--link-dest

parancs az előző biztonsági mentés könyvtárát adja meg. Ha két óránként futtatunk biztonsági másolatokat, és a forgatókönyv végrehajtásakor 16:00 óra volt, akkor a

--link-dest

parancs megkeresi a 14:00 órakor létrehozott könyvtárat, és csak akkor továbbítja az adott időpontban megváltozott adatokat (ha van ilyen).

Megismételni, hogy ezért a time.txt az időponthoz2.txt a parancsfájl elejére másolódik, tehát a

--link-dest

a parancs később is hivatkozhat erre az időre.

A célkönyvtár a következő:

[email protected]:/home/geek2/files/`date +”%F-%I%p”`

Ez a parancs egyszerűen a forrásfájlokat olyan könyvtárba teszi, amely az aktuális dátum és idő címét tartalmazza.

Végül győződünk meg róla, hogy a naplófájl egy példánya a biztonsági mentésbe kerül.

scp -P 12345 ~/backup/rsync-`cat ~/backup/time.txt`.log [email protected]:/home/geek2/files/`cat ~/backup/time.txt`/rsync-`cat ~/backup/time.txt`.log

Az 12345 porton biztonságos másolatot használunk az rsync napló elfogadásához és a megfelelő könyvtárba helyezéséhez. A megfelelő naplófájl kiválasztásához, és győződjön meg róla, hogy a megfelelő helyre ér véget, a time.txt fájlt a cat paranccsal kell hivatkozni. Ha kíváncsi vagy, miért döntöttük el a cat time.txt helyett a dátum parancs használatát, az azért van, mert sok idő telhetett el, amíg az rsync parancs futott, így annak érdekében, hogy megbizonyosodjunk arról, hogy megfelelő időnk van, a korábban létrehozott szöveges dokumentum.

Automatizálás

Használja a Cron Linuxot vagy a Task Scheduler programot a Windows-on az rsync parancsfájl automatizálásához. Egy dolog, amire ügyelned kell, ügyelj arra, hogy befejezze a jelenleg futó rsync folyamatokat, mielőtt folytatna egy újat. Úgy tűnik, hogy a Feladatütemező automatikusan bezárja a már futó példányokat, de a Linux számára egy kicsit kreatívabbnak kell lennie.

A legtöbb Linux disztribúció használhatja a pkill parancsot, ezért csak add hozzá a rsync parancsfájl elejéhez:

pkill -9 rsync

Encryption

Nem, még nem végeztünk. Végül van egy fantasztikus (és ingyenes!) Biztonsági megoldás a helyén, de az összes fájlunk még mindig hajlamos a lopásokra. Remélhetőleg biztonsági másolatot készítesz a fájlokról néhány száz mérföldre. Nem számít, milyen biztonságos a távoli hely, a lopás és a hackelés mindig problémákat okozhat.

Példáinkban az összes rsync forgalmat alagútba helyeztük az SSH-n keresztül, így azt jelenti, hogy az összes fájlunk titkosításra kerül, amíg a rendeltetési helyükre haladunk. Biztosítani kell azonban, hogy a cél ugyanolyan biztonságos legyen. Ne felejtse el, hogy az rsync csak az adatok átruházásakor titkosítja az adatait, de a fájlok nyitva vannak, miután elérték a célállomást.

Az rsync egyik legjobb tulajdonsága, hogy csak az egyes fájlok változásait továbbítja. Ha az összes fájlját titkosítja és egy kisebb módosítást hajt végre, az egész fájlt vissza kell küldenie a titkosítás eredményeképpen, minden változás után teljesen fel kell sorolni az összes adatot.

Emiatt a legjobb / legegyszerűbb valamilyen típusú lemezkódolást használni, például BitLocker for Windows vagy dm-crypt for Linux. Így az adatok védettek a lopás esetén, de a fájlok átvihetők az rsync segítségével, és a titkosítás nem akadályozza a teljesítményét. Vannak más opciók is, amelyek az rsynchez hasonlóan működnek, vagy akár megvalósíthatják valamilyen formáját is, például a Duplicity-t, de hiányoznak az rsync által kínált jellemzők.

Miután beállította pillanatfelvétel-mentéseit egy külső helyszínen, és titkosította a forrás- és rendeltetési merevlemezeket, adjon magának egy hátrányt az rsync elsajátításához és a lehető legbiztonságosabb adatmentési megoldáshoz.

Ajánlott: