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

Упознавање са Рсинц-ом: Водич и примери употребе

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

У овом чланку ћемо истражити како Рсинц функционише и дати неколико корисних примера његове примене.

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

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

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

  • Коришћењем ССХ или РСХ протокола за синхронизацију између два хоста.
  • Коришћењем ТЦП Рсинц демона за копирање/синхронизацију.

Дизајниран за системе сличне Уник-у, Рсинц је савршено компатибилан са Линук-ом.

Ево како Рсинц ради корак по корак:

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

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

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

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

  • Потребан вам је роот или судо приступ.
  • Приступ терминалу или командној линији.
  • ССХ приступ за безбедно покретање Рсинц команди.
  • Потребне су вам две машине за коришћење Рсинц-а.

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

Зашто користити Рсинц уместо СЦП-а?

СЦП (Secure Copy) је широко коришћен протокол командне линије за копирање датотека, користећи ССХ за сигуран пренос. СЦП копира датотеке линеарно, од извора до одредишта.

Синтакса СЦП команде је:

scp option SOURCE DESTINATION

Али зашто користити Рсинц уместо СЦП-а?

Рсинц има неколико предности:

  • Брже извршавање: Рсинц је бржи од СЦП-а јер користи протокол за даљинско ажурирање, преносећи само промене, а не целу датотеку. При редовним синхронизацијама, први пут се направи пуна копија, а затим се ажурирају само промењени делови коришћењем алгоритма делта преноса.
  • Мања потрошња пропусног опсега: Зато што не копира целу датотеку поново, Рсинц троши мање пропусног опсега. Такође користи алгоритме компресије за смањење величине датотека током преноса.
  • Више опција: Рсинц има више опција командне линије од СЦП-а, омогућавајући финије подешавање.

Рсинц је одличан алат за инкременталну синхронизацију. СЦП је такође користан за сигуран пренос, али СЦП је бољи за једноставније задатке, док је Рсинц бољи за задатке који се понављају.

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

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

rsync OPTION SOURCE DEST

Или

rsync OPTION SOURCE [email protected]:DEST

Где:

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

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

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

  • -z: компресовање података.
  • -h: излаз у формату читљивом за људе.
  • -b: прави резервну копију.
  • -e: користи ССХ протокол.
  • –progress: приказ напретка.
  • -v: детаљан излаз.
  • –n: тест извршавање.
  • -q: смањује излаз команде.

Инсталација Рсинц-а

Рсинц је обично инсталиран на већини Уник и Линук система. Ако ваш систем нема Рсинц, можете га инсталирати:

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

sudo apt-get install rsync

За Арцх Линук:

pacman -S rsync

За Гентоо:

emerge sys-apps/rsync

За ЦентОС/Федора/РЕХЛ:

sudo yum install rsync

За опенСУСЕ:

sudo zypper install rsync

Пошто користимо Линук Минт, Рсинц је већ инсталиран. Можете покренути команду „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 option SOURCE DEST

Копирајте датотеке из изворног у одредишни директоријум:

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“ за ажурирање постојећих датотека. Без ове опције, датотека се не би ажурирала.

Ако датотека не постоји у одредишном директоријуму, користите:

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, а затим протокол.

На пример, ако желите да користите ССХ протокол, додајте -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=KB/s:

rsync -av --bwlimit=100 --progress 192.168.192.200: /Projects/rsync-tutorial/dest-directory /Projects/rsync-tutorial/source-directory

У овом примеру је пропусни опсег ограничен на 100Кб/с.

Закључак

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

Рсинц нуди много више од онога што смо овде разматрали, па препоручујемо да прегледате Рсинц мануалну страницу за детаљније информације.

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