Упознавање са Рсинц-ом: Водич и примери употребе
Рсинц је моћан алат командне линије отвореног кода који омогућава синхронизацију датотека и директоријума, како на локалном нивоу, тако и између удаљених система. Ова способност чини га изузетно корисним за различите намене, укључујући миграцију података, прављење резервних копија и пресликавање, што је посебно важно за веб администраторе и друге кориснике који често преносе податке.
У овом чланку ћемо истражити како Рсинц функционише и дати неколико корисних примера његове примене.
Како Рсинц функционише?
Рсинц се користи за синхронизацију датотека на системима сличним Уник-у. Корисници могу лако преносити и синхронизовати датотеке између два рачунара или хоста, без обзира на то да ли се налазе у локалној мрежи или на различитим локацијама.
У основи, Рсинц користи алгоритам делта преноса. Овај алгоритам идентификује разлике између датотека на два система (изворном и одредишном) и преноси само те разлике. И извор и одредиште могу бити локални или удаљени. Рсинц може да копира и синхронизује податке на два начина:
- Коришћењем ССХ или РСХ протокола за синхронизацију између два хоста.
- Коришћењем ТЦП Рсинц демона за копирање/синхронизацију.
Дизајниран за системе сличне Уник-у, Рсинц је савршено компатибилан са Линук-ом.
Ево како Рсинц ради корак по корак:
- Рсинц се повезује са удаљеним системом путем ССХ-а и тражи лозинку.
- Након повезивања, Рсинц на удаљеном систему комуницира са извором.
- Затим се одређују датотеке и директоријуми које треба синхронизовати. Користи се алгоритам делта преноса за проверу разлика.
Ако се датотека не налази на удаљеном, а јесте на хосту, она ће се копирати на удаљени систем. За постојеће датотеке, Рсинц копира само промењене делове. Ако датотеке нису промењене на оба система, оне се прескачу.
Рсинц ради инкрементална ажурирања тако што чува разлике у привременој датотеци пре него што је пребаци на одредиште.
Пре него што почнете:
- Потребан вам је роот или судо приступ.
- Приступ терминалу или командној линији.
- ССХ приступ за безбедно покретање Рсинц команди.
- Потребне су вам две машине за коришћење Рсинц-а.
За овај водич, користићемо Линук Минт 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Кб/с.
Закључак
Овим се завршава наш водич за Рсинц. Научили смо како да користимо Рсинц и ефикасно покрили многе команде.
Рсинц нуди много више од онога што смо овде разматрали, па препоручујемо да прегледате Рсинц мануалну страницу за детаљније информације.
Такође, погледајте варалице командне линије за Виндовс, Линук и мацОС.