Rsync копирайте и синхронизирайте файлове с отдалечен сървър

полезност Rsync може да се използва за копиране и синхронизиране на файлове и папки от локален Linux сървър към отдалечен и обратно. Rsync ви позволява да копирате данните си между сървъри в защитена SSH връзка. по същия начин,, Rsync, Поддържа компресия на данни в движение, което подобрява производителността на системата.

За да предотвратите загуба на информация при изпращане на файлове, Rsync първо копира цялата прехвърлена информация във временен файл. Друга важна характеристика на rsync е, че файловете се прехвърлят в един поток, не се създава отделен поток за всеки файл (което причинява проблем при прехвърляне на голям брой малки файлове в други помощни програми).

В тази статия ще разгледаме случаите на използване. Rsync да синхронизирате и копирате директории и файлове и давате примери за разширените си настройки.

Съдържание:

  • Инсталация и основна опция rsync
  • Rsync: копиране / синхронизиране на локална директория
  • Rsync: конфигуриране на синхронизация с отдалечен сървър
  • Други примери за използване на rsync
  • Резервно копие на Linux с rsync

Инсталация и основна опция rsync

монтаж Rsync не се различава от инсталацията, от всеки друг пакет. В CentOS пакетът rsync присъства в базовото хранилище и се инсталира чрез yum (или dnf на CentOS 8):

# yum инсталирате rsync -y

Синтаксисът на командите е както следва:

# опции за приемник на rsync източник

Като източник и приемник можете да посочите локална или отдалечена директория на друг сървър.

възможности:

  • -v - показва подробна информация за процеса
  • -в - проверете контролните суми за файлове
  • -q - минимална информация
  • -а - режим на архивиране
  • -R - относителни пътища
  • -y - не презаписвайте по-нови файлове
  • -б - резервно копие
  • -l - копиране на символни връзки
  • -L - копиране на съдържанието на връзката
  • -H - копирайте твърди връзки
  • -g - запазване на групата
  • -p - запазване на разрешения за файлове
  • -t - запишете време за модификация
  • -x - работете само в тази FS
  • -д - използвайте различен транспортен протокол (например ssh)
  • -z - компресирайте файлове преди прехвърлянето
  • -изтриване - изтриване на файлове, които не са в източника
  • -Изключване - изключване на файлове
  • -рекурсивен - итерация над директории рекурсивно
  • -без рекурсивен - деактивирайте рекурсията
  • -прогрес - показване на напредъка на трансфера на файлове
  • -stat - показване на статистически данни за предаване
  • -max-size - максимален размер на файла за прехвърляне
  • -bwlimit - ограничение на скоростта за прехвърляне на файлове
  • -версия - полезна версия

Rsync: копиране / синхронизиране на локална директория

Rsync може да се използва за копиране на файлове между локални сървърни директории. Ако трябва да копирате файлове от една директория в друга, изпълнете командата:

# rsync /var/www/html/package.zip / var / www / tmp /

В този случай файлът package.zip просто беше копиран в директорията / var / www / tmp /.

Можете да добавите няколко опции за копиране. Например, за да компресирате файл преди копиране, да покажете подробна информация и напредъка на копирането на файла, направете:

# rsync -vz --progress /var/www/html/package.zip / var / www / tmp /

Можете да използвате rsync за синхронизиране на съдържанието на локални директории. Например, rsync е удобен за използване, когато трябва да копирате файлове от работната директория в хранилище, което е монтирано на някакъв дял. Няколко примера за команди:

# rsync -zvr / var / www / site / backup /

Копирахме директорията / var / www / site в резервната директория, опция -R позволява рекурсивно копиране на всички вложени директории и файлове.

За да запазите всички файлови атрибути при копирането, например, датата на модификация и датата, на която са създадени файловете, добавете ключа :

# rsync -zvra / var / www / site / backup /

Ако искате да копирате само модифицирани файлове, добавете опцията :

# rsync -zvrac / var / www / site / backup /

Смених само един файл и пуснах командата. В резултат на това само модифицираният файл е копиран в директорията на местоназначението..

Много е удобно да използвате тази опция, ако файловете не се променят често. По този начин спестявате време за копиране / синхронизиране на директорията.

За да не претрупвате резервната директория, можете да добавите опция -изтривам, това ще ви позволи да сравните файловете с източника и ако файлът е в целевата директория и липсата на него в изходната директория, го изтрийте автоматично. Но ви призовавам да използвате тази опция с повишено внимание, защото ако конфигурирате директорията да се копира в короната, в случай на повреда или намеса отвън в работната директория, последвана от изтриване на работните файлове, ще получите информация и в резервни копия, които няма да ви позволят да възстановите данните си , Пример:

# rsync -zvrac - изтриване / var / www / site / backup /

Rsync: конфигуриране на синхронизация с отдалечен сървър

Най-често копирайте / синхронизирайте Rsync с отдалечен сървър се използва за архивиране или синхронизиране на конфигурацията на възела на клъстера. Можете автоматично да синхронизирате данните от производствения сървър към резервното копие и в случай на проблеми на производителния север, бързо да прехвърлите всичко на резервното. Това е доста удобна и лесна за конфигуриране опция..

В съвременните версии на rsync, SSH протоколът се използва за прехвърляне на файлове по подразбиране. Можете обаче да използвате и rsyncd демон. За да направите това, клиентът rsync трябва да бъде инсталиран на отдалечения компютър, а неговият демон да се добави към стартиране:

# Systemctl активира rsyncd

Конфигурационният файл на rsync е /etc/rsyncd.conf. В този файл можете да конфигурирате настройки и настройки на rsync за синхронизация за различни ресурси.

За да се синхронизира чрез демон rsync, адресът на отдалечения сървър е посочен като rsync: //. Например:

# rsync -av /var/www/site/package.zip rsync: //192.168.1.32/backup

За да копирате файл на отдалечен сървър, използвайте командата:

# rsync -az /var/www/site/package.zip root @ IP: / backup /

Където IP е адресът на отдалечения сървър. След като изпълните командата, отдалеченият сървър ще поиска потребителската парола (ако е активирана автентификация на паролата). За автоматично разрешение трябва да конфигурирате SSH ключове.

Копирайте директорията от локалния сървър на отдалечения:

# rsync -zvra / var / www / site root @ IP: / backup /

Тоест, всичко е същото като с локалните директории, само ние посочваме адреса на отдалечения сървър.

Можете също така да синхронизирате файлове от отдалечен сървър към локален, командата за това ще се промени малко:

# rsync -zvra root @ IP: / архивиране / / архивиране

За да принудите използването на SSH протокол за копиране на файлове, посочете това във вашата команда (опцията -e се използва за избор на транспортния протокол за копиране на файлове):

# rsync -zvrae ssh root @ IP: / backup / / архивиране

Ако отдалеченият SSH сървър има порт, различен от стандартния, можете също да го зададете:

# rsync -zvrae "ssh -p 2222" root @ IP: / backup / / архивиране

Други примери за използване на rsync

Ако предавате много информация в рамките на сесията за синхронизация и е важно да ограничите скоростта на предаване, задайте това с допълнителната опция -bwlimit (посочете скоростта в KB / s):

# rsync -zvra --bwlimit = 100 / var / www / site root @ IP: / backup /

Когато прехвърляте файлове на отдалечен сървър, можете да ограничите максималния размер на файловете, които трябва да се копират. Например, искате да копирате всички файлове, с изключение на файлове, по-големи от 1 MB:

# rsync -zvra --max-size = '1m' / var / www / root root @ IP: / backup /

Ако имате нужда от еднопосочна синхронизация на вашия сървър и след прехвърляне на файлове към отдалечен сървър, трябва да изтриете файлове от изходния сървър, използвайте опцията --премахване на код-файлове:

# rsync -zvra --remove-source-files --progress /var/www/site/package.zip root @ IP: / архивиране /

След изпълнение на командата файлът се копира на отдалечения сървър и се изтрива от източника:

Също така много удобни опции -включва и -изключвам, използвайки тези опции, можете да правите изключения за копиране на директории или файлове:

# rsync -zvra --exclude = администратор / / var / www / сайт root @ IP: / backup /

В този случай изключихме директорията „администратор“ при копиране на отдалечен сървър.

# rsync -zvra --include = '*. php' --exclude = '*' / var / www / site / administrator / root @ IP: / backup /

Като добавите опция -включва успяхме да зададем филтъра по файлове, копирахме само файлове с разширението php.

Резервно копие на Linux с rsync

В моя роб използвам част Rsync за автоматични задачи за архивиране в Linux. Можете да напишете прости bash скриптове или просто да добавите командата rsync, за да cron и да се изпълнява по план.

Например, можете да добавите командата към cron:

01 30 * * * rsync -zvra root @ IP: / backup / / архивиране

В резултат на това всеки ден в 1-30 вечери директории на локалния и отдалечен сървър ще бъдат синхронизирани.

Струва си да се има предвид, че да се изпълни командата Rsync на отдалечен сървър чрез cron, препоръчително е да конфигурирате удостоверяването на сървъра с помощта на SSH ключ. Примери за скриптове за архивиране, които дадохме в статията "Скриптове за архивиране на файлове от Linux в облака", rsync се използва там за копиране на файлове в свързани облачни хранилища.