Рсинц је бесплатна алатка командне линије која вам омогућава да синхронизујете датотеке локално и даљински. Помоћу њега можете преносити датотеке и директоријуме.
То га чини веома корисним за миграцију података, прављење резервних копија и пресликавање, што га чини одличним за вебмастере и администраторе за понављајуће задатке преноса података.
Овај чланак ће нас научити како Риснц функционише и дати неке корисне примере.
Преглед садржаја
Како функционише Рсинц?
Рсинц је услужни програм командне линије за даљинску синхронизацију за системе сличне Уник-у. Он даје кориснику могућност да без проблема преноси/синхронизује датотеке између машина или два хоста.
Испод хаубе, рсинц користи алгоритам делта-трансфера. Овај алгоритам укључује копирање разлика између две датотеке на два хоста (изворни и одредишни). Извор и одредиште могу бити локални или удаљени. Команда рсинц може да изврши задатке копирања/синхронизације података на два начина. Су:
- Користите ссх, рсх за копирање/синхронизацију између два хоста.
- Користите ТЦП рсинц демон за копирање/синхронизацију.
Како је дизајниран да ради у системима сличним Уник-у, такође ради и у Линуку.
Корак по корак процес рсинц користи на следећи начин:
- Рсинц користи ССХ за повезивање са удаљеним хостом и тражи лозинку.
- Када се повеже, рсинц удаљеног хоста комуницира са извором.
- Ови програми ће затим одредити датотеке и директоријуме којима је потребна синхронизација. Користи алгоритам делта преноса да провери разлику између датотека.
Ако команда рсинц не пронађе датотеку на даљинском управљачу, али не и на хосту, копираће је и пренети на систем домаћина. Слично, за већ постојеће датотеке (и на хосту и на даљинском), копираће разлику између њих (тј. промењене делове). На крају, игнорисаће постојеће датотеке на оба система без модификација.
Команда рсинц постиже инкрементална ажурирања тако што чува разлику у привременој датотеци пре него што је гурне на одредиште.
Пре него што почнеш:
- Морате да имате роот или судо привилегије
- Имајте приступ терминалу/командној линији
- ССХ приступ за безбедно покретање рсинц команди
- Такође су вам потребне две машине да направите рсинц.
За туторијал ћемо користити Линук Минт 21.1 Вера. Можете лако пратити водич без проблема користећи било коју другу Линук дистрибуцију.
Зашто користити рсинц преко Сцп-а?
Сцп (безбедна копија) је популаран протокол командне линије који омогућава корисницима да копирају датотеке. Следи линеарни приступ копирању. То значи да једноставно копира датотеке од извора до одредишта. Да би то безбедно урадио, користи ССХ.
Синтакса сцп команде је следећа:
scp option SOURCE DESTINATION
Међутим, остаје питање зашто користити рсинц преко сцп-а?
Па, постоји више предности коришћења рсинц-а. Ове предности укључују:
- Брже извршење: Рсинц је бржи од сцп-а јер користи протокол за даљинско ажурирање. Ово му омогућава да преноси само разлике, а не целу датотеку. Дакле, ако подесите редовну синхронизацију током времена, потребно је само да направите пуну копију први пут. Од следећег пута па надаље, само копира ажуриране делове уз помоћ алгоритма делта-трансфера.
- Мања потрошња пропусног опсега: Како рсинц не мора поново да копира целу датотеку, то доводи до мање потрошње пропусног опсега. Штавише, такође користи алгоритме компресије/декомпресије да би минимизирао величину датотеке током преноса.
- Више опција командне линије: Рсинц такође надмашује сцп по броју опција командне линије. То значи да можете фино подесити рсинц више од сцп-а.
У закључку, рсинц је одличан алат за инкременталну синхронизацију. Алат сцп је такође од помоћи за сигуран пренос/синхронизацију датотека. У стварном сценарију, сцп је погодан за свакодневне задатке ако тражите једноставнији приступ. Међутим, за задатке који се понављају користите рсинц.
Синтакса команде Рсинц
Команда рсинц је као у наставку:
Овде су термини дефинисани у наставку:
- ОПЦИЈА – Ово су опције рсинц
- ИЗВОР – Изворни директоријум
- ДЕСТ – Одредишни именик
- УСЕР – Удаљено корисничко име
- ХОСТ – Удаљено име хоста или ИП адреса
Опције су параметри који нуде додатну функционалност команди. На пример, можете да синхронизујете податке рекурзивно са -р опцијом. Међутим, опција -р не синхронизује власништво за групе и кориснике, временске ознаке, дозволе или симболичке везе. Уместо тога, можете користити опцију -а, која покреће команду у режиму архивирања, обезбеђујући да се сва власништво над датотеком, дозволе и симболичке везе чувају приликом копирања.
Остале рсинц опције укључују:
- -з: компримовати податке ради уштеде простора
- -х: обезбеђује излаз формата читљивог за људе
- -б: прави резервну копију током процеса синхронизације података
- -е: користите ССХ протокол за даљински пренос података
- -прогрес: приказује напредак синхронизације података
- -в: затражити од рсинц да прикаже детаљан излаз
- –н: извршите суво покретање да бисте тестирали подешавања и подешавање за синхронизацију података
- -к: сузбијање излаза и опција рсинц команде
Инсталирање рсинц
Већина Уник и Линук система долази са инсталираним рсинц. Ако ваш систем нема рсинц, можете га инсталирати користећи следеће команде.
За Дебиан/Убунту и Минт
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 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
Напомена: Одржали смо дест-директоријум празан.
Локално рекурзивно копирајте директоријуме
Иако рсинц првенствено има за циљ да копира датотеке између локалног и удаљеног сервера, подједнако је користан и за локално копирање датотека.
У овом случају, користићемо следећу рсинц синтаксу.
рсинц опција ИЗВОР ОДРЕДИШТЕ
Копирајте датотеке из нашег изворног директоријума у одредишни директоријум тако што ћете покренути следећу команду.
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
Ово копира сваки појединачни фајл из изворног директоријума у одредишни директоријум.
Локално копирајте једну датотеку
Сада када смо научили како да синхронизујемо два директоријума, научићемо како да копирамо једну датотеку.
У ту сврху, уредићемо празну датотеку филе1 у изворном директоријуму и затим је синхронизовати са истом датотеком која се налази у одредишном директоријуму.
Да бисте уредили датотеку, откуцајте следећу команду.
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 $
Као што сте можда приметили, користили смо –постојећу опцију. Ово ажурира постојеће датотеке. Ако покренете команду без –екистинг, она се неће ажурирати, иако се успешно извршава.
Ако појединачна датотека коју копирате не постоји у одредишној фасцикли, потребно је да покренете следећу команду.
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
Копирање више датотека
Ако намеравате да копирате више датотека, морате навести изворне путање обе датотеке, а затим и циљни директоријум.
У ту сврху, креираћемо две нове датотеке: невфиле2 и невфиле3, у изворном директоријуму. Покрените следећу команду да бисте то урадили.
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
Протоколи специфични за даљински пренос
Рсинц вам омогућава да одредите специфичне протоколе за пренос датотека. Да бисте то урадили, потребно је да користите опцију -е, а затим протокол.
На пример, ако желите да користите ссх протокол, морате додати -е ссх команди рсинц.
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
Слично томе, можете поменути и датотеке.
Прикажи напредак уживо током преноса
Добра је идеја да видите напредак уживо за веће резервне копије података. За то морате да користите ознаку –прогресс. Додајте га команди рсинц и можете видети брзину преноса, преостало време и количину пренетих података.
rsync -av --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Избришите изворне датотеке када се трансфер заврши
Можете користити ознаку -ремове-соурце-филес да уклоните изворне датотеке након комплетног преноса. Ово вам може помоћи у многим сценаријима, посебно када је у питању обезбеђење ваших датотека без остављања трага или једноставног коришћења за ослобађање простора.
rsync -av --remove-source-files 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Рсинц рад на суво
Риснц вам такође омогућава да процените пре него што урадите стварно покретање. Суво трчање вам омогућава да видите да ли радите праву ствар. На крају крајева, не желите да ажурирате датотеке грешком или чак да их избришете.
Морате да користите опцију –дри-рун да бисте извршили суво трчање. Додајте га у команду, а затим извор и одредиште.
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
Излаз је сличан ономе како смо га покренули раније. Међутим, приметићете помињање (ДРИ РУН) на крају излаза.
Подесите минималну и максималну величину датотеке
Риснц вам такође омогућава да подесите минималну или максималну величину датотеке током преноса.
Дакле, ако желите да преносите са минималном величином од 15 КБ, потребно је да користите –мин-сизе=15К.
rsync -av --min-size=15k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Команда ће копирати само датотеке са минималном величином датотеке од 15 КБ. Ако је величина датотеке испод, игнорисаће је.
Слично, можете користити ознаку –мак-сизе да бисте поставили максималну величину датотеке.
rsync -av --max-size=450k 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Овде ће рсинц игнорисати датотеке веће од 450К.
Поставите ограничење пропусног опсега
Ако радите друге задатке који захтевају велики пропусни опсег, можете да подесите риснц да постави ограничење пропусног опсега за пренос. Да бисте то урадили, користите –бвлимит=КБ/с.
rsync -av --bwlimit=100 --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory
Овде смо поставили пропусни опсег на 100Кб/с током преноса.
Завршне речи
Ово нас води до краја нашег водича за команде рсинц. Научили смо како да користимо риснц и ефикасно покрили много команди.
Међутим, риснц нуди много више од онога што смо покрили. Због тога ћете можда желети да прођете кроз рсинц ман страницу, где је покривен сваки аспект рсинц-а.
Затим погледајте варалице командне линије за Виндовс, Линук и мацОС.