Риснц водич и 11 примера да га ефикасно користите

Рсинц је бесплатна алатка командне линије која вам омогућава да синхронизујете датотеке локално и даљински. Помоћу њега можете преносити датотеке и директоријуме.

То га чини веома корисним за миграцију података, прављење резервних копија и пресликавање, што га чини одличним за вебмастере и администраторе за понављајуће задатке преноса података.

Овај чланак ће нас научити како Риснц функционише и дати неке корисне примере.

Како функционише Рсинц?

Рсинц је услужни програм командне линије за даљинску синхронизацију за системе сличне Уник-у. Он даје кориснику могућност да без проблема преноси/синхронизује датотеке између машина или два хоста.

Испод хаубе, рсинц користи алгоритам делта-трансфера. Овај алгоритам укључује копирање разлика између две датотеке на два хоста (изворни и одредишни). Извор и одредиште могу бити локални или удаљени. Команда рсинц може да изврши задатке копирања/синхронизације података на два начина. Су:

  • Користите ссх, рсх за копирање/синхронизацију између два хоста.
  • Користите ТЦП рсинц демон за копирање/синхронизацију.

Како је дизајниран да ради у системима сличним Уник-у, такође ради и у Линуку.

Корак по корак процес рсинц користи на следећи начин:

  • Рсинц користи ССХ за повезивање са удаљеним хостом и тражи лозинку.
  • Када се повеже, рсинц удаљеног хоста комуницира са извором.
  • Ови програми ће затим одредити датотеке и директоријуме којима је потребна синхронизација. Користи алгоритам делта преноса да провери разлику између датотека.

Ако команда рсинц не пронађе датотеку на даљинском управљачу, али не и на хосту, копираће је и пренети на систем домаћина. Слично, за већ постојеће датотеке (и на хосту и на даљинском), копираће разлику између њих (тј. промењене делове). На крају, игнорисаће постојеће датотеке на оба система без модификација.

Команда рсинц постиже инкрементална ажурирања тако што чува разлику у привременој датотеци пре него што је гурне на одредиште.

Пре него што почнеш:

  • Морате да имате роот или судо привилегије
  • Имајте приступ терминалу/командној линији
  • ССХ приступ за безбедно покретање рсинц команди
  • Такође су вам потребне две машине да направите рсинц.

За туторијал ћемо користити Линук Минт 21.1 Вера. Можете лако пратити водич без проблема користећи било коју другу Линук дистрибуцију.

Зашто користити рсинц преко Сцп-а?

Сцп (безбедна копија) је популаран протокол командне линије који омогућава корисницима да копирају датотеке. Следи линеарни приступ копирању. То значи да једноставно копира датотеке од извора до одредишта. Да би то безбедно урадио, користи ССХ.

Синтакса сцп команде је следећа:

scp option SOURCE DESTINATION

Међутим, остаје питање зашто користити рсинц преко сцп-а?

Па, постоји више предности коришћења рсинц-а. Ове предности укључују:

  • Брже извршење: Рсинц је бржи од сцп-а јер користи протокол за даљинско ажурирање. Ово му омогућава да преноси само разлике, а не целу датотеку. Дакле, ако подесите редовну синхронизацију током времена, потребно је само да направите пуну копију први пут. Од следећег пута па надаље, само копира ажуриране делове уз помоћ алгоритма делта-трансфера.
  • Мања потрошња пропусног опсега: Како рсинц не мора поново да копира целу датотеку, то доводи до мање потрошње пропусног опсега. Штавише, такође користи алгоритме компресије/декомпресије да би минимизирао величину датотеке током преноса.
  • Више опција командне линије: Рсинц такође надмашује сцп по броју опција командне линије. То значи да можете фино подесити рсинц више од сцп-а.
  13 начина да побољшате МИУИ приватност - Зауставите Ксиаоми да прикупља податке

У закључку, рсинц је одличан алат за инкременталну синхронизацију. Алат сцп је такође од помоћи за сигуран пренос/синхронизацију датотека. У стварном сценарију, сцп је погодан за свакодневне задатке ако тражите једноставнији приступ. Међутим, за задатке који се понављају користите рсинц.

Синтакса команде Рсинц

Команда рсинц је као у наставку:

Овде су термини дефинисани у наставку:

  • ОПЦИЈА – Ово су опције рсинц
  • ИЗВОР – Изворни директоријум
  • ДЕСТ – Одредишни именик
  • УСЕР – Удаљено корисничко име
  • ХОСТ – Удаљено име хоста или ИП адреса

Опције су параметри који нуде додатну функционалност команди. На пример, можете да синхронизујете податке рекурзивно са -р опцијом. Међутим, опција -р не синхронизује власништво за групе и кориснике, временске ознаке, дозволе или симболичке везе. Уместо тога, можете користити опцију -а, која покреће команду у режиму архивирања, обезбеђујући да се сва власништво над датотеком, дозволе и симболичке везе чувају приликом копирања.

Остале рсинц опције укључују:

  • -з: компримовати податке ради уштеде простора
  • -х: обезбеђује излаз формата читљивог за људе
  • -б: прави резервну копију током процеса синхронизације података
  • -е: користите ССХ протокол за даљински пренос података
  • -прогрес: приказује напредак синхронизације података
  • -в: затражити од рсинц да прикаже детаљан излаз
  • –н: извршите суво покретање да бисте тестирали подешавања и подешавање за синхронизацију података
  • -к: сузбијање излаза и опција рсинц команде

Инсталирање рсинц

Већина Уник и Линук система долази са инсталираним рсинц. Ако ваш систем нема рсинц, можете га инсталирати користећи следеће команде.

За Дебиан/Убунту и Минт

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

Напомена: Одржали смо дест-директоријум празан.

Локално рекурзивно копирајте директоријуме

Иако рсинц првенствено има за циљ да копира датотеке између локалног и удаљеног сервера, подједнако је користан и за локално копирање датотека.

  Водич за почетнике за Гоогле веб приче [+4 Tools]

У овом случају, користићемо следећу рсинц синтаксу.

рсинц опција ИЗВОР ОДРЕДИШТЕ

Копирајте датотеке из нашег изворног директоријума у ​​одредишни директоријум тако што ћете покренути следећу команду.

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

Протоколи специфични за даљински пренос

Рсинц вам омогућава да одредите специфичне протоколе за пренос датотека. Да бисте то урадили, потребно је да користите опцију -е, а затим протокол.

  5 најбољих емулатора конзоле за ваш Мац

На пример, ако желите да користите ссх протокол, морате додати -е ссх команди рсинц.

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Кб/с током преноса.

Завршне речи

Ово нас води до краја нашег водича за команде рсинц. Научили смо како да користимо риснц и ефикасно покрили много команди.

Међутим, риснц нуди много више од онога што смо покрили. Због тога ћете можда желети да прођете кроз рсинц ман страницу, где је покривен сваки аспект рсинц-а.

Затим погледајте варалице командне линије за Виндовс, Линук и мацОС.