Командата Rsync (отдалечена синхронизация) е помощна програма за Linux / Unix, използвана за синхронизиране и копиране на файлове и директории локално или отдалечено. Повечето отрепки на Linux използват Rsync за отразяване, архивиране или мигриране на данни между папки, дискове и мрежи. Една забележителна характеристика на командата Rsync е, че тя използва алгоритъма за прехвърляне на делта.”
Алгоритъмът Delta Transfer работи, като актуализира директорията на дестинацията със съдържанието на дестинацията източник. Ако в директорията източник е създадена промяна или нов файл, само конкретната промяна ще бъде копирана в директорията на местоназначението, когато стартирате командата Rsync. За да синхронизира файлове и директории между локалната и отдалечената машина, Rsync използва SSH.
Инсталиране на Rsync в Linux
Командата Rsync е предварително инсталирана в повечето операционни системи Linux. Това обаче може да не е така при някои минимални инсталации. Можете да инсталирате Rsync, като изпълните командите по-долу в терминал.
На CentOS & RHEL
yum инсталирате rsync -y
На Ubuntu и други дистрибуции на Debian
sudo apt install rsync -y
Rsync Основен синтаксис
rsync опции източник дестинация
Някои от стандартните опции / параметри, използвани с командата Rsync:
-v: -вербозен подробен изход
-r: копира данни рекурсивно
-z: компресиране на файлове
-h: Дава изход във формат, четим от човека
-a: архивни файлове и директория при синхронизиране
-progress Показва напредъка на изпълняваните в момента задачи на Rsync.
Можете да видите всички опции, налични за командата Rsync, като използвате опцията “-help”.
$ rsync --помощ
Топ 20 примера за Rsync в Linux
Имайки предвид тази подробна информация, нека започнем с 20 полезни команди за пример на Rsync, които можете да използвате с Linux системи. Нашата избрана операционна система е Ubuntu 20.04 LTS; синтаксисът обаче трябва да работи и за други дистрибуции на Linux с инсталиран Rsync.
1. Копирайте / синхронизирайте файлове локално с опция -v (подробно)
Това е най-основната команда за Rsync, дори за начинаещ. В този пример ще копираме файлове между 'Оригинален'директория на работния плот към'Архивиране'директория в' / etc.папка. Ще включим опцията -v (Многословен), за да може rsync да предостави информация за това, което се случва.
rsync -v оригинал /
Едно нещо, което трябва да се отбележи при Rsync е, че ако директорията на местоназначението не съществува, тя автоматично ще я създаде. Нека видим примера по-долу, където искаме да копираме файлове в директорията “Фос”, Което не съществува.
2. Синхронизиране / копиране на файлове и директории рекурсивно с опция -r
В горната команда, ако в 'Оригинален, тя ще бъде пропусната. Това е илюстрирано на изображението по-долу.
За да преодолеете това, използвайте опцията -r (рекурсивна).
3. Синхронизиране / копиране на файлове между локалната машина и отдалечената машина
Преди да изпълните тази задача, има няколко параметъра, които трябва да знаете за отдалечения сървър / машина: IP-адресът, потребителското име и потребителската парола.
Основният синтаксис, който ще използваме, е:
rsync [опции] [файлове] [отдалечено потребителско име] @ [ip-адрес]: / [дестинация]
Нека копираме файлове от нашата 'Оригинален'директория на работния плот към отдалечен сървър.
4. Синхронизирайте / копирайте файлове и директории от отдалечен сървър на вашия локален компютър
Подобно на предишната команда, ще трябва да знаем IP адреса на отдалечения сървър. В този пример ще синхронизираме файлове в 'Архивиранев домашната директория на сървъра към нашия локален компютър.
rsync -rv tuts @ 192.168.1.64: / home / tuts / Backup / home / tuts / Desktop / Original
5. Използвайте Rsync през SSH с опцията -e
За да гарантираме сигурността на файловете и папките, ще използваме протокола Rsync over Secure Shell (SSH). Освен това, когато предоставя корен / потребителска парола - SSH ще предостави услуги за криптиране, като гарантира, че те са в безопасност.
За да използваме SSH, ще добавим опцията -e, която определя протокола, който искаме да използваме.
rsync -vre ssh Оригинал / * tuts @ 192.168.1.64: / дома / Tuts
6. Покажете напредъка с командата Rsync
В ситуации, когато копирате множество файлове или огромен файл, знаейки, че напредъкът ще бъде ефективен. За щастие rsync разполага с тази опция --напредъкопция.
sudo rsync -rv --progress Original / * / etc / Foss
7. Използвайте Rsync с опцията '-include'
Има ситуации, при които искате да синхронизирате само определени файлове. С командата Rsync причинявате '-включва'опция за изпълнение на задачата. В този пример ще синхронизираме само файлове, започващи с буквата „I“.
sudo rsync -vr --включете "I *" Оригинал / / etc / Backup /
8. Използвайте Rsync с опцията '-exclude', за да игнорирате определени файлове
С Rsync '-изключете, можете да изключите файлове, които не искате да синхронизирате / копирате. В този пример искаме да игнорираме всички файлове, започващи с буквата „I“.
sudo rsync -vr --exclude 'I *' Original / / etc / Backup /
Като алтернатива можете да използвате и двете опции в една команда. Вижте примера по-долу.
sudo rsync -vr --exclude '*' --include 'I *' Original / / etc / Backup /
Изключваме всички файлове освен тези, които започват с буквата „I.'
9. Използвайте Rsync с командата -delete
Има ситуации, в които в целевата директория има файлове, но не и в папката източник. За синхронизация най-добре би било първо да премахнете такива файлове от целевата директория. За щастие, Rsync идва с-Изтрийопция, която прави това автоматично.
Ако даден файл присъства в целевата директория, но няма в източника, той ще го изтрие.
rsync -vr --delete / etc / Backup / tuts @ 192.168.1.64: / home / tuts / Архивиране
10. Задайте максималния размер на файловете за прехвърляне с Rsync
Ако се занимавате с място за съхранение или честотна лента за отдалечена синхронизация на файлове, трябва да използвате опцията '-max-size' с командата Rsync. Тази опция ви позволява да зададете максималния размер на файл, който може да бъде копиран.
Например, '-max-size = 100k'ще прехвърля само данни, равни или по-малки от 100 килобайта.
rsync -vr --max-size = '200k' / etc / Backup / tuts @ 192.168.1.64: / home / tuts / Архивиране
11. Автоматично изтриване на изходни файлове след успешно прехвърляне
Вземете ситуация, в която имате отдалечен сървър за архивиране и директория за архивиране на вашия компютър. Архивирате данни в папката за архивиране на вашия компютър, преди да ги синхронизирате с Backup-сървъра. След всяка синхронизация ще трябва да изтриете данните в директорията за архивиране.
За щастие можете да направите това автоматично с '--remove-source-filesопция.
Изпълнявайки команда 'ls' в папката източник, ние потвърждаваме, че файловете наистина са изтрити.
12. Извършете бягане на сухо с Rsync
За начинаещи, които не са сигурни с командата Rsync, можете да объркате съдържанието на вашата дестинация на местоназначение и отмяната може да бъде толкова досадна. С-суха тренировка'опцията, командата Rsync ще ви даде изход за това, което ще бъде изпълнено, но няма да го направи.
Следователно, можете да разгледате този изход, ако това, което очаквате, преди да премахнете "-суха тренировкаопция.
rsync -vr --dry-run Оригинал / * tuts @ 192.168.1.64: / home / tuts / Архивиране
13. Задайте ограничение на честотната лента, необходимо за прехвърляне на файлове.
Ако сте в споделена мрежа или изпълнявате няколко програми, които се нуждаят от интернет връзка, би било ефективно да зададете ограничение на честотната лента, необходимо за синхронизиране / копиране на файлове от разстояние. Можем да направим това с Rsync '-bwlimitопция.
Тази скорост се изчислява в килобайта. Следователно, когато-bwlimit = 1000'означава, че само 1000Kb могат да бъдат прехвърлени в секунда.
rsync -vr --bwlimit = 1000 Оригинал / * tuts @ 192.168.1.64: / home / tuts / Архивиране
14. Синхронизирайте всички файлове с Rsync
По подразбиране Rsync синхронизира само модифицираните блокове и байтове. Следователно, ако сте синхронизирали текстов файл преди и по-късно сте добавили някои текстове към изходния файл, когато синхронизирате, само вмъкнатият текст ще бъде копиран. Ако искате да синхронизирате целия файл отново, ще трябва да използвате опцията '-W'.
rsync -vrW Original / * tuts @ 192.168.1.64: / home / tuts / Архивиране
15. Не синхронизирайте / копирайте модифицирани файлове в целевата директория
Има ситуации, при които сте направили модификации на файлове, намиращи се в целевата папка. Ако изпълните команда Rsync, тези модификации ще бъдат заменени от тези в изходния файл. За да избегнете такива, използвайте опцията '-u'.
rsync -vu Оригинал / * tuts @ 192.168.1.64: / home / tuts / Архивиране
16. Използвайте опцията Rsync с -i, за да видите разликата във файловете между източника и местоназначението
Ако искате да знаете какви нови промени ще бъдат направени в директорията на местоназначението, използвайте опцията '-i', която ще покаже разликата във файловете между директорията източник и цел.
rsync -avzi Оригинал / Архивиране /
Оформете изхода в изображението по-горе и ние виждаме файл, наречен 'здравей.пи не присъства в директорията на местоназначението. Нека разгледаме някои от тези параметри.
d: показва промяна в целевия файл
f: представлява файл
t: показва промяна във времевите марки
s: показва промяна в размера на файла
17. Използвайте Rsync, за да копирате само структурата на директория
Можете да използвате Rsync, за да синхронизирате само структурата на директориите, ако не се интересувате от файловете. Ще трябва да използваме параметрите -f ”+ * /” -f ”- *” преди директорията източник.
rsync -av -f "+ * /" -f "- *" / home / tuts / Desktop / Original / / home / tuts / Documents /
18. Добавяне на печат за дата към име на директория
Ако искате да проследите кога са извършени прехвърляния, без да се отварят свойствата на директорията, можете лесно да добавите дата към името на директорията. Това ще добави клеймо за дата към всички синхронизации, които правите с Rsync.
За целта ще добавим $ (дата + \\% Y - \\% m - \\% d) към директорията на местоназначението.
sudo rsync -rv Оригинал / / etc / $ (дата + \\% Y - \\% m - \\% d)
19. Копирайте един файл локално
За да синхронизирате / копирате един файл с Rsync, ще трябва да посочите пътя на файла, последван от пътя на директорията на местоназначението.
rsync -v Оригинал / heloo.py Архивиране /
20. Копиране на множество файлове от разстояние
За да копирате няколко файла едновременно, ще трябва да предоставите пътя към всички тях. Този метод е ефективен само за малък брой файлове.
rsync -vr / home / tuts / Desktop / Original / heloo.py / home / tuts / Desktop / Backup / index.html tuts @ 192.168.1.64: / home / tuts / Архивиране
Това е всичко за топ 20 полезни примера за Rsync, които ще ви позволят да синхронизирате файлове и директории както локално, така и отдалечено. Чувствайте се свободни да оставите вашите отзиви и коментари по-долу.