Файлдарды синхрондау протоколы және бағдарламалық құралы
Rsync
Rsync – файлдарды синхрондау және көшіру құралы. Unix жүйелерінде қолданылады, дерек көлемiн азайтады, жылдам жүктеуге көмектеседi. Бағдарлама ашық лицензиямен таралды.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Файлдарды синхрондау протоколы және бағдарламалық қамтамасыз ету.
File synchronization protocol and software
rsync – компьютер мен сақтау құрылғысы арасында, сондай-ақ желідегі компьютерлер арасында файлдарды өзгерту уақыты мен көлемін салыстыру арқылы файлдарды жіберу және синхрондауға арналған құрал. Ол Unix сияқты операциялық жүйелерде кеңінен қолданылады және GPL 3.0 немесе одан кейінгі нұсқасымен лицензияланған. rsync C тілінде бір жіпті қолданба ретінде жазылған. rsync алгоритмі – дельта кодтаудың бір түрі және желілік трафикті азайту үшін пайдаланылады. Zstandard, LZ4 немесе Zlib қосымша деректерді қысу үшін қолданылуы мүмкін. Құрылғылар қосылғаннан кейін, ол қашықтағы хосттың rsync бағдарламасын іске қосады, содан кейін екі бағдарлама жергілікті файлдың қандай бөліктерін жіберу керектігін анықтайды, осылайша қашықтағы файл жергілікті файлмен сәйкес келеді. rsync-тің бір қолданылуы – пакеттік жүйелер қолданатын айналық сайттардағы бағдарламалық қамтамасыз ету репозиторийларын синхрондау. rsync daemon режимінде (rsyncd) де жұмыс істей алады, rsync протоколы арқылы файлдарды қызмет көрсету және қабылдау үшін ("rsync://" синтаксисін пайдалана отырып).
rsync is a utility for transferring and synchronizing files between a computer and a storage drive and across networked computers by comparing the modification times and sizes of files. It is commonly found on Unix like operating systems and is under the GPL 3.0 or later license. rsync is written in C as a single threaded application. The rsync algorithm is a type of delta encoding, and is used for minimizing network usage. Zstandard, LZ4, or Zlib may be used for additional data compression, Once connected, it will invoke the remote host's rsync and then the two programs will determine what parts of the local file need to be transferred so that the remote file matches the local one. One application of rsync is the synchronization of software repositories on mirror sites used by package management systems. rsync can also operate in a daemon mode (rsyncd), serving and receiving files in the native rsync protocol (using the "rsync://" syntax).
Тарих
Эндрю Триджелл мен Пол Маккеррас 1996 жылғы 19 маусымда алғаш рет жарияланған rsync құралының түпнұсқасын жазды. Триджелл rsync құралының дизайны, іске асырылуы және өнімділігін өзінің 1999 жылғы Ph.D. диссертациясының 3-тен 5-ке дейінгі тарауларында талқылайды. 2023 жылдан бастап оны Уэйн Дэвисон қолдап дамытуда. rsync құралының икемділігі, жылдамдығы және бағдарламалау мүмкіндігінің арқасында ол барлық танымал Linux дистрибутивтеріне енгізілген стандартты Linux утилитасына айналды. Ол Windows (Cygwin, Grsync немесе SFU арқылы), FreeBSD, NetBSD, OpenBSD және macOS жүйелеріне портталды.
Andrew Tridgell and Paul Mackerras wrote the original rsync, which was first announced on 19 June 1996. Tridgell discusses the design, implementation, and performance of rsync in chapters 3 through 5 of his 1999 Ph. D. thesis. as of 2023, it is maintained by Wayne Davison. Because of the flexibility, speed, and scriptability of rsync, it has become a standard Linux utility, included in all popular Linux distributions. It has been ported to Windows (via Cygwin, Grsync, or SFU), FreeBSD, NetBSD, OpenBSD, and macOS.
Байланыс
rsync процесі басқа rsync процесімен, жіберуші және қабылдаушы арқылы байланыс жасайды. Іске қосылғанда rsync клиенті өзара әрекеттесетін процеске қосылады. Егер деректерді беру жергілікті болса (яғни, бір хостқа орнатылған файлдық жүйелер арасында), онда қосылым үшін қажетті құбырлар құрылғаннан кейін, өзара әрекеттесетін процесті fork арқылы жасауға болады. Егер қашықтағы хост қатысқан болса, rsync қосылымды басқару үшін процесті іске қосады, әдетте Secure Shell арқылы. Қосылғаннан кейін, қашықтағы хостта rsync процесін іске қосу үшін команда жіберіледі, ол осылайша құрылған қосылымды пайдаланады. Балама ретінде, егер қашықтағы хост rsync демонымен жұмыс істесе, rsync клиенттері TCP 873 портында сокет ашып, мүмкін прокси арқылы қосыла алады. Rsync-те көптеген командалық қатар параметрлері мен конфигурациялық файлдар бар, олар артық қапшықтарды, параметрлерді, командаларды, толық жолды және порт нөмірлерін анықтауға мүмкіндік береді. Қашықтан қапшықтарды пайдаланудан басқа, туннельдеу арқылы қашықтағы порттарды rsync демоны іске қосылған серверде жергілікті порттар ретінде көрсетуге болады. Бұл мүмкіндіктер қауіпсіздік деңгейін қазіргі заманғы технологияларға сәйкес келтіруге мүмкіндік береді, ал жергілікті желі үшін қарапайым rsync демоны жеткілікті болуы мүмкін. Бір опция – "құрғақ іске қосу" опциясы, ол пайдаланушыларға командалық қатар аргументтерін тексеруге және деректерді көшіргенде не болатынын, нақты өзгерістер жасамай немесе деректерді ауыстырмай симуляциялауға мүмкіндік береді.
An rsync process operates by communicating with another rsync process, a sender and a receiver. At startup, an rsync client connects to a peer process. If the transfer is local (that is, between file systems mounted on the same host) the peer can be created with fork, after setting up suitable pipes for the connection. If a remote host is involved, rsync starts a process to handle the connection, typically Secure Shell. Upon connection, a command is issued to start an rsync process on the remote host, which uses the connection thus established. As an alternative, if the remote host runs an rsync daemon, rsync clients can connect by opening a socket on TCP port 873, possibly using a proxy. Rsync has numerous command line options and configuration files to specify alternative shells, options, commands, possibly with full path, and port numbers. Besides using remote shells, tunnelling can be used to have remote ports appear as local on the server where an rsync daemon runs. Those possibilities allow adjusting security levels to the state of the art, while a naive rsync daemon can be enough for a local network. One option is the " dry run" option, which allows users to validate their command line arguments and to simulate what would happen when copying the data without actually making any changes or transferring any data.
Қай файлдарды жіберу керектігін анықтау
Әдетте, rsync жіберуші және қабылдаушы жүйелер арасындағы файлдардың айырмашылығын әр файлдың өзгерту уақыты мен көлемін тексеру арқылы анықтайды. Егер уақыт немесе көлем жүйелер арасында әртүрлі болса, ол файлды жіберушіден қабылдаушы жүйеге жібереді. Бұл тек файлдар каталогындағы ақпаратты оқуды қажет ететіндіктен жылдам, бірақ екеуі де өзгермеген ерекше өзгерістерді жіберіп алуы мүмкін. Қабылдаушы файлдың көшірмесін бөліктерге бөліп, әр бөлік үшін екі тексеру сомасын есептейді: MD5 хэшін және нашаррақ, бірақ есептеуге оңайрақ «қозғалатын тексеру сомасын». Ол осы тексеру сомаларын жіберушіге жібереді. Жіберуші қабылдаушы пайдаланған бөліктермен бірдей өлшемдегі файлдың өзінің нұсқасындағы әрбір қозғалатын бөлім үшін тексеру сомасын есептейді. Қабылдаушы тек бөлік өлшемінің толық еселігінен басталатын бөліктердің тексеру сомасын есептейді, ал жіберуші кез келген мекен-жайдан басталатын барлық бөлімдердің тексеру сомасын есептейді. Егер жіберуші есептеген қозғалатын тексеру сомасы қабылдаушы есептеген тексеру сомасына сәйкес келсе, онда бұл бөлім бөлімнің мазмұнын емес, қабылдаушының файліндегі орнын жіберуге үміткер болады. Бұл жағдайда жіберуші есептеу жағынан қымбат MD5 хэшін пайдаланып, жіберушінің бөлімі мен қабылдаушының бөлігі бірдей екенін тексереді. Жіберушідегі бөлім қабылдаушыдағы бөлікпен бірдей бастапқы мекен-жайда болмауы мүмкін екеніне назар аударыңыз. Бұл енгізулер мен жоюлар арқылы ерекшеленетін файлдарды тиімді жіберуге мүмкіндік береді. Содан кейін жіберуші қабылдаушыға сәйкес келмейтін файл бөліктерін, сондай-ақ қолданыстағы блоктарды қабылдаушының нұсқасына біріктіру туралы ақпаратты жібереді. Бұл көшірмелерді толықтай сәйкес етеді. Rsync-те қолданылатын қозғалатын тексеру сомасы Mark Adler-дің zlib-те қолданылатын Adler 32 тексеру сомасына негізделген, ал ол өз кезегінде Fletcher-дің тексеру сомасына негізделген. Егер файлдың жіберуші мен қабылдаушы нұсқаларында көптеген ортақ бөлімдер болса, файлдарды синхрондау үшін құрал салыстырмалы түрде аз деректерді жіберуі керек. Типтік деректерді сығу алгоритмдері қолданылса, сығылмаған кезде ұқсас файлдар сығылған кезде өте әртүрлі болуы мүмкін, сондықтан бүкіл файлды жіберу қажет болады. Кейбір сығу бағдарламалары, мысалы gzip, бұл файлдарды тиімді синхрондауға мүмкіндік беретін арнайы «rsyncable» режимін ұсынады, бұл сығылмаған файлдағы жергілікті өзгерістер сығылған файлдағы жергілікті өзгерістерді ғана тудыратынын қамтамасыз етеді. Rsync деректерді жіберу немесе сақтық көшірмелеуге көмектесетін басқа да маңызды мүмкіндіктерді қолдайды. Оларға Zstandard, LZ4 немесе zlib пайдалану арқылы деректерді блок бойынша сығу және ықшамдау, сондай-ақ ssh және stunnel сияқты протоколдарды қолдау кіреді.
By default, rsync determines which files differ between the sending and receiving systems by checking the modification time and size of each file. If time or size is different between the systems, it transfers the file from the sending to the receiving system. As this only requires reading file directory information, it is quick, but it will miss unusual modifications which change neither. The recipient splits its copy of the file into chunks and computes two checksums for each chunk: the MD5 hash, and a weaker but easier to compute 'rolling checksum'. It sends these checksums to the sender. The sender computes the checksum for each rolling section in its version of the file having the same size as the chunks used by the recipient's. While the recipient calculates the checksum only for chunks starting at full multiples of the chunk size, the sender calculates the checksum for all sections starting at any address. If any such rolling checksum calculated by the sender matches a checksum calculated by the recipient, then this section is a candidate for not transmitting the content of the section, but only the location in the recipient's file instead. In this case, the sender uses the more computationally expensive MD5 hash to verify that the sender's section and recipient's chunk are equal. Note that the section in the sender may not be at the same start address as the chunk at the recipient. This allows efficient transmission of files which differ by insertions and deletions. The sender then sends the recipient those parts of its file that did not match, along with information on where to merge existing blocks into the recipient's version. This makes the copies identical. The rolling checksum used in rsync is based on Mark Adler's adler 32 checksum, which is used in zlib, and is itself based on Fletcher's checksum. If the sender's and recipient's versions of the file have many sections in common, the utility needs to transfer relatively little data to synchronize the files. If typical data compression algorithms are used, files that are similar when uncompressed may be very different when compressed, and thus the entire file will need to be transferred. Some compression programs, such as gzip, provide a special "rsyncable" mode which allows these files to be efficiently rsynced, by ensuring that local changes in the uncompressed file yield only local changes in the compressed file. Rsync supports other key features that aid significantly in data transfers or backup. They include compression and decompression of data block by block using Zstandard, LZ4, or zlib, and support for protocols such as ssh and stunnel.
Вариациялар
rdiff утилитасы rsync алгоритмін пайдаланып, файл A мен файл B арасындағы айырмашылықты (diff утилитасы сияқты, бірақ басқа дельта форматында) құратын дельта файлдарын жасайды. Дельта файлын файл A-ға қолдануға болады, осылайша оны файл B-ге айналдырады (patch утилитасына ұқсас). rdiff бинарлық файлдармен жақсы жұмыс істейді. rdiff резервтік көшірме сценарийі файлдың немесе каталогтың жергілікті немесе желі арқылы басқа сервердегі қашықтан резервтік көшірмесін сақтайды. rdiff резервтік көшірмесі кез келген резервтік нүктені қалпына келтіруге мүмкіндік беретін rdiff дельталарын сақтайды. rdiff қолданатын librsync кітапханасы rsync алгоритмінің тәуелсіз іске асырылуы болып табылады. Ол rsync желілік протоколын қолданбайды және rsync бағдарламасымен ешқандай кодты бөліспейді. Оны Dropbox, rdiff backup, duplicity және басқа да утилиталар пайдаланады. librsync-тен айырмашылығы, ол rsync-пен (протокол нұсқасы 29 немесе 30) толық үйлесімді. Ол Reciprocal Public License бойынша таратылады және Acrosync коммерциялық rsync бағдарламалық жасақтамасы қолданады. Python тілінде жазылған duplicity резервтік бағдарламалық қамтамасыз етуі жергілікті файл жүйесі, sftp, Amazon S3 және басқалар сияқты қарапайым сақтау қызметтерін пайдаланып, қосымша резервтік көшірмелерді жасауға мүмкіндік береді. Ол librsync-ті пайдаланып, алдыңғы файл нұсқаларының қолтаңбаларына қатысты дельта деректерін жасайды, оларды gpg арқылы шифрлайды және сақтау орнында сақтайды. Өнімділікті арттыру үшін жергілікті архив каталогы резервтік көшірмелер тізбегінің қолтаңбаларын сақтау үшін кэш ретінде қолданылады, бірақ қажет болған жағдайда оны сақтау орнынан қайта жүктеуге болады. macOS 10.5 және одан кейінгі нұсқаларында арнайы E немесе кеңейтілген атрибуттар опциясы бар, бұл мүмкіндікті қолдайтын екі машина арасында синхрондау кезінде HFS+ файл метадеректерінің көп бөлігін сақтауға мүмкіндік береді. Бұл Ресурстық бөлімді Деректер бөлімімен бірге жіберу арқылы жүзеге асырылады. zsync – файл нұсқасына қарай көптеген жүктемелерге оңтайландырылған rsync сияқты құрал. zsync-ті Ubuntu сияқты Linux дистрибутивтері жылдам өзгеріп отыратын бета ISO бейне файлдарын тарату үшін пайдаланады. zsync HTTP протоколын және алдын ала есептелген айналмалы хэшпен zsync файлдарын пайдаланады, бұл серверге жүктемені азайтуға және желілік оңтайландыру үшін айырмашылықтарды жіберуге мүмкіндік береді. Rclone – бұлттық және басқа да жоғары жауап уақыты бар сақтау орындарына бағытталған, rsync-тен шабыттанған ашық кодты құрал. Ол 50-ден астам әртүрлі провайдерлерді қолдайды және бұлттық сақтау үшін rsync сияқты интерфейсті ұсынады. Алайда, Rclone файлдарды ішінара синхрондау үшін айналмалы тексерулерді қолдамайды (бинарлық айырмашылықтар), өйткені бұлттық сақтау провайдерлері әдетте бұл мүмкіндікті ұсынбайды және Rclone қосымша метадеректерді сақтаудан аулақ болады.
The rdiff utility uses the rsync algorithm to generate delta files with the difference from file A to file B (like the utility diff, but in a different delta format). The delta file can then be applied to file A, turning it into file B (similar to the patch utility). rdiff works well with binary files. The rdiff backup script maintains a backup mirror of a file or directory either locally or remotely over the network on another server. rdiff backup stores incremental rdiff deltas with the backup, with which it is possible to recreate any backup point. The librsync library used by rdiff is an independent implementation of the rsync algorithm. It does not use the rsync network protocol and does not share any code with the rsync application. It is used by Dropbox, rdiff backup, duplicity, and other utilities. Unlike librsync, it is wire compatible with rsync (protocol version 29 or 30). It is released under the Reciprocal Public License and used by the commercial rsync software Acrosync. The duplicity backup software written in python allows for incremental backups with simple storage backend services like local file system, sftp, Amazon S3 and many others. It utilizes librsync to generate delta data against signatures of the previous file versions, encrypting them using gpg, and storing them on the backend. For performance reasons a local archive dir is used to cache backup chain signatures, but can be re downloaded from the backend if needed. As of macOS 10.5 and later, there is a special E or extended attributes switch which allows retaining much of the HFS+ file metadata when syncing between two machines supporting this feature. This is achieved by transmitting the Resource Fork along with the Data Fork. zsync is an rsync like tool optimized for many downloads per file version. zsync is used by Linux distributions such as Ubuntu for distributing fast changing beta ISO image files. zsync uses the HTTP protocol and zsync files with pre calculated rolling hash to minimize server load yet permit diff transfer for network optimization. Rclone is an open source tool inspired by rsync that focuses on cloud and other high latency storage. It supports more than 50 different providers and provides an rsync like interface for cloud storage. However, Rclone does not support rolling checksums for partial file syncing (binary diffs) because cloud storage providers do not usually offer the feature and Rclone avoids storing additional metadata.
rsync қолданбалары
Бағдарлама Операциялық жүйе Тегін бағдарламалық қамтамасыз ету Аңдау Linux macOS Windows Back In Time ✔ ✔ BackupAssist ✔ Тікелей көшірме немесе тарихпен, VSS. cwRsync ✔ Cygwin негізінде. Grsync ✔ ✔ ✔ ✔ rsync-тің графикалық интерфейсі. LuckyBackup ✔ ✔ ✔ ✔ rclone ✔ ✔ ✔ ✔ rsync-тен шабыттанды және 50-ден астам бұлтты сақтау провайдерлерін және жоғары жауап уақыты бар басқа да сақтау қызметтерін қолдайды. rsync-ті пайдаланбайды және жылмалы тексеру жиынтығын және файлдардың ішінара синхрондалуын қолдамайды. tym ✔ ✔ ✔ ✔ Time rsYnc Machine – Time Machine стилінде резервтік көшірме – Bash скрипті.
Program Operating system Free software Description Linux macOS Windows Back In Time ✔ ✔ BackupAssist ✔ Direct mirror or with history, VSS. cwRsync ✔ Based on Cygwin. Grsync ✔ ✔ ✔ ✔ Graphical Interface for rsync. LuckyBackup ✔ ✔ ✔ ✔ rclone ✔ ✔ ✔ ✔Inspired by rsync and supports more than 50 cloud storage providers and other high latency storage services. Does not actually use rsync or support rolling checksums and partial file synchronization. tym ✔ ✔ ✔ ✔Time rsYnc Machine – backup à la Time Machine – Bash script