Увод у рсинц
рсинц представља слободан алат командне линије, омогућавајући синхронизацију фајлова како локално, тако и на удаљеним дестинацијама. Кроз његову употребу, могуће је преносити како појединачне фајлове, тако и комплетне директоријуме.
Захваљујући овим карактеристикама, рсинц се показује изузетно корисним приликом миграције података, креирања резервних копија, као и за процесе репликације, што га чини незаобилазним ресурсом за вебмастере и администраторе приликом обављања рутинских задатака преноса података.
Циљ овог чланка је да разјасни начин функционисања рсинц-а, као и да представи практичне примере његове употребе.
Како рсинц функционише?
рсинц је алат за даљинску синхронизацију који се користи у системима сличним Уник-у, а функционише кроз командну линију. Корисницима пружа могућност преноса и синхронизације фајлова између различитих рачунара или хостова, без икаквих проблема.
У основи, рсинц користи алгоритам делта преноса. Овај алгоритам ради на принципу копирања разлика између две фајла који се налазе на изворном и одредишном хосту. Извор и одредиште могу бити локални или удаљени. Команда рсинц може да обавља задатке копирања и синхронизације података на два различита начина:
- Коришћењем ссх или рсх протокола за копирање и синхронизацију између хостова.
- Коришћењем ТЦП рсинц демона за копирање и синхронизацију.
Пошто је рсинц дизајниран за Уник системе, одлично функционише и на Линук оперативним системима.
Процес који рсинц користи, корак по корак, изгледа овако:
- рсинц користи ССХ за успостављање везе са удаљеним хостом, захтевајући лозинку.
- По успостављању везе, рсинц на удаљеном хосту комуницира са изворним хостом.
- Ови програми утврђују који фајлови и директоријуми захтевају синхронизацију. За проверу разлика између фајлова се користи алгоритам делта преноса.
Ако рсинц не пронађе фајл на удаљеном хосту, али га пронађе на изворном, он ће га прекопирати на систем домаћина. Слично томе, за фајлове који већ постоје на оба система, копираће само разлике (измењене делове). Фајлове који су идентични на оба система, без модификација, ће игнорисати.
рсинц омогућава инкрементална ажурирања тако што разлике чува у привременом фајлу пре него што их пошаље на одредиште.
Пре почетка употребе:
- Неопходне су роот или судо привилегије.
- Потребан је приступ терминалу или командној линији.
- За безбедно покретање рсинц команди је неопходан ССХ приступ.
- Потребне су две машине за тестирање рсинц-а.
За овај туторијал, користићемо Линук Минт 21.1 Вера. Водич се може лако пратити и са било којом другом Линук дистрибуцијом.
Зашто одабрати рсинц уместо сцп?
сцп (сигурна копија) је широко коришћен протокол командне линије који омогућава копирање фајлова. Он прати линеарни приступ, што значи да директно копира фајлове са извора на одредиште. За сигуран пренос користи ССХ.
Синтакса сцп команде је следећа:
scp опција ИЗВОР ОДРЕДИШТЕ
Међутим, намеће се питање, зашто изабрати рсинц уместо сцп?
рсинц нуди неколико предности, а то су:
- Брже извршавање: рсинц је бржи од сцп-а, захваљујући протоколу за даљинско ажурирање. Ово му омогућава да преноси само разлике, а не целокупну фајл. Дакле, ако подесите редовну синхронизацију, пуна копија је потребна само први пут. Након тога, преко алгоритма делта преноса се копирају само ажурирани делови.
- Мања потрошња пропусног опсега: Пошто рсинц не копира поново цео фајл, долази до мање потрошње пропусног опсега. Поред тога, користи се и компресија и декомпресија како би се смањила величина фајла током преноса.
- Шири спектар опција командне линије: рсинц нуди већи број опција командне линије у односу на сцп. То омогућава кориснику детаљније подешавање процеса синхронизације.
У закључку, рсинц је одличан алат за инкременталну синхронизацију. сцп је такође користан за безбедан пренос фајлова. У реалним сценаријима, сцп је погодан за свакодневне задатке који захтевају једноставнији приступ. Међутим, за задатке који се понављају препоручује се коришћење рсинц-а.
Синтакса рсинц команде
Основни облик рсинц команде је:
rsync [ОПЦИЈА] ИЗВОР ДЕСТ
Термини који се користе у синтакси су:
- ОПЦИЈА – Параметри који дефинишу понашање рсинц-а.
- ИЗВОР – Директоријум са којег се фајлови копирају.
- ДЕСТ – Директоријум на који се фајлови копирају.
- УСЕР – Корисничко име на удаљеном систему.
- ХОСТ – Име хоста или ИП адреса удаљеног система.
Опције су параметри који нуде додатну функционалност команди. На пример, помоћу опције -р можете рекурзивно синхронизовати податке. Међутим, опција -р не синхронизује власништво над групама и корисницима, временске ознаке, дозволе или симболичке везе. Уместо тога, можете користити опцију -а, која покреће команду у режиму архивирања, обезбеђујући да се приликом копирања сачувају све информације о власништву, дозволе и симболичке везе.
Остале рсинц опције укључују:
- -з: компресовање података ради уштеде простора.
- -х: излаз у формату читљивом за људе.
- -б: креирање резервне копије током процеса синхронизације.
- -е: употреба ССХ протокола за даљински пренос.
- –прогресс: приказивање напретка синхронизације.
- -в: захтев за детаљнији излаз.
- –н: извршавање „сувог покретања“ за тестирање подешавања.
- -к: искључивање излаза команде рсинц.
Инсталирање рсинц-а
Већина Уник и Линук система има рсинц инсталиран. У случају да ваш систем нема инсталиран рсинц, можете га инсталирати користећи следеће команде.
За Дебиан/Убунту и Минт:
sudo apt-get install rsync
За Арцх Линук:
pacman -S rsync
За Гентоо:
emerge sys-apps/rsync
За ЦентОС/Федора/РЕХЛ:
sudo yum install rsync
За опенСУСЕ:
sudo zypper install rsync
С обзиром да користимо Линук Минт, рсинц је већ инсталиран. Можете покренути команду рсинц у терминалу да проверите да ли је инсталиран. Уколико је инсталиран, приказаће се његове могућности, опције и друге битне информације.
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.
Сада ћемо приказати рсинц на делу кроз различите примере.
За туторијал ћемо креирати два директоријума:
- изворни директоријум
- одредишни директоријум
Можете их креирати уносом следећих команди:
mkdir source-directory mkdir dest-directory
Потребно је и да генеришемо фајлове ради тестирања. Направићемо неколико тестних фајлова помоћу наредне команде:
touch source-directory/file{1..100}
Овом командом се креира 100 празних фајлова у изворном директоријуму. То можете потврдити уносом следеће команде:
ls source-directory
Излаз:
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
Напомена: Одржали смо дест-директоријум празан.
Локално рекурзивно копирање директоријума
Иако је примарна намена рсинц-а копирање фајлова између локалног и удаљеног сервера, он је исто тако користан и за локално копирање фајлова.
У овом случају ћемо користити следећу рсинц синтаксу:
rsync опција ИЗВОР ОДРЕДИШТЕ
Копирајте фајлове из нашег изворног директоријума у одредишни директоријум покретањем следеће команде:
rsync -r source-directory/ dest-directory
Овде команда „рекурзивно“ копира фајлове из изворног у одредишни директоријум.
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
Ово копира сваки појединачни фајл из изворног у одредишни директоријум.
Локално копирање појединачног фајла
Сада када смо научили како да синхронизујемо два директоријума, научићемо како да копирамо један фајл.
У ту сврху, уредићемо празан фајл „file1“ у изворном директоријуму, а затим га синхронизовати са истом фајлом који се налази у одредишном директоријуму.
Да бисте уредили фајл, унесите следећу команду:
nano source-directory/file1
Копирајте и залепите следећи текст у нано едитор:
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.
Додавање садржаја у фајл.
Сада затворите и сачувајте фајл.
Сада копирајмо фајл користећи рсинц:
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 $
Као што сте можда приметили, користили смо опцију „–existing“. Ова опција ажурира постојеће фајлове. Уколико покренете команду без „–existing“, фајл се неће ажурирати иако се команда успешно изврши.
Уколико појединачни фајл који копирате не постоји у одредишном директоријуму, потребно је да покренете следећу команду:
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
Копирање више фајлова
Ако желите да копирате више фајлова, морате навести изворне путање фајлова, као и циљни директоријум.
У ту сврху, креираћемо два нова фајла: „newfile2“ и „newfile3“ у изворном директоријуму. Покрените следећу команду:
touch source-directory/newfile{2..3}
Сада, користите следећу команду за синхронизацију више фајлова:
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 $
Копирање фајла или директоријума са локалног на удаљени сервер
Синтакса рсинц-а за локални на даљински пренос изгледа овако:
rsync option SOURCE [email protected]:DEST
Као што видите, морате знати ИП адресу удаљене машине да би ово функционисало. Такође, потребно је да додате ИП адресу након изворног фајла.
rsync -av /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory
Пре почетка преноса, тражиће лозинку. Унесите лозинку да бисте наставили. Такође, ако је корисник различит на удаљеној машини, потребно је да га поменете пре ИП адресе иза које следи @:
rsync -av /Projects/rsync-tutorial/source-directory [email protected]: /Projects/rsync-tutorial/dest-directory
Ако желите да копирате више фајлова или директоријума, онда морате да наведете путање фајлова или директоријума. Синтакса за то је испод:
rsync -av /Projects/rsync-tutorial/source-directory/newfile1 /Projects/rsync-tutorial/source-directory/newfile2 192.168.192.200: /Projects/rsync-tutorial/dest-directory
Протоколи за даљински пренос
рсинц вам омогућава да одредите специфичне протоколе за пренос фајлова. Да бисте то урадили, потребно је да користите опцију „-е“, а затим протокол.
На пример, ако желите да користите ссх протокол, морате да додате „-e ssh“ команди рсинц:
rsync -e ssh /Projects/rsync-tutorial/source-directory 192.168.192.200: /Projects/rsync-tutorial/dest-directory
Копирање фајла или директоријума са удаљеног на локални сервер
Синтакса рсинц-а за даљински на локални пренос изгледа овако:
sync option [email protected]:SRC DEST
Ово ради на принципу захтева за преузимањем података. Да бисте добили потребне фајлове или директоријуме са удаљеног сервера на локалну машину, потребно је да покренете следећу команду:
rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Команда преузима фајлове из одредишног директоријума удаљене машине у изворни директоријум локалне машине.
Слично томе, можете извући одређени фајл тако што ћете га навести кроз његову пуну путању:
rsync -av 192.168.192.200: /Projects/rsync-tutorial/dest-directory/newfile4 /Projects/rsync-tutorial/source-directory
Да бисте копирали више фајлова или директоријума са локалног на удаљени сервер, потребно је да наведете путање унутар витичастих заграда (одвојене зарезима) после ИП адресе сервера:
rsync -av 192.168.192.200: {/Projects/rsync-tutorial/dest-directory/, /home/music/2023-music} /Projects/rsync-tutorial/source-directory
Слично томе, можете поменути и фајлове.
Приказ напретка током преноса уживо
Добро је видети напредак током преноса већих количина података. За то је потребно да користите ознаку „–progress“. Додајте је команди рсинц и можете видети брзину преноса, преостало време и количину пренетих података.
rsync -av --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Брисање изворних фајлова након завршеног преноса
Можете користити ознаку „–remove-source-files“ за уклањање изворних фајлова након завршеног преноса. Ово вам може помоћи у многим ситуацијама, посебно када је у питању обезбеђивање фајлова без остављања трага или једноставно за ослобађање простора.
rsync -av --remove-source-files 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
рсинц „суво покретање“
рсинц вам такође омогућава да извршите процену пре стварног покретања команде. „Суво покретање“ вам омогућава да видите да ли радите праву ствар. На крају крајева, не желите да ажурирате фајлове грешком или чак да их избришете.
Потребно је да користите опцију „–dry-run“ да бисте извршили „суво покретање“. Додајте је у команду, затим извор и одредиште.
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
Излаз је сличан оном приликом претходног покретања. Међутим, приметићете напомену „(DRY RUN)“ на крају излаза.
Подешавање минималне и максималне величине фајла
рсинц вам омогућава да подесите минималну или максималну величину фајла током преноса.
Ако желите да преносите фајлове са минималном величином од 15КБ, потребно је да користите „–min-size=15k“.
rsync -av --min-size=15k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Команда ће копирати само фајлове са минималном величином од 15КБ. Ако је величина фајла мања, биће игнорисана.
Слично томе, можете користити ознаку „–max-size“ за подешавање максималне величине фајла:
rsync -av --max-size=450k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Овде ће рсинц игнорисати фајлове веће од 450К.
Постављање ограничења пропусног опсега
Ако обављате друге задатке који захтевају велики пропусни опсег, можете да подесите рсинц да постави ограничење пропусног опсега за пренос. Да бисте то урадили, користите „–bwlimit=КБ/с“.
rsync -av --bwlimit=100 --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Овде смо подесили пропусни опсег на 100КБ/с током преноса.
Завршне речи
Овим се завршава наш водич за рсинц команде. Научили смо како да користимо рсинц и ефикасно смо покрили многе