Отредактировано 2 Несколько часов назад от ExtremeHow Редакционная команда
Резервное копированиеКомандная строкаФайлыСинхронизацияУправление даннымиУтилитыСкриптингБезопасностьХранениеПередачи
Перевод обновлен 2 Несколько часов назад
Rsync — это мощный инструмент, который можно использовать для создания резервных копий и синхронизации файлов между различными системами. Это утилита командной строки, которая обеспечивает быструю и эффективную передачу файлов. Используя дельта-кодирование, Rsync передает только различия между исходным и конечным каталогами. Благодаря этому он является идеальным инструментом для резервного копирования и синхронизации, особенно через сетевые соединения, благодаря низкому потреблению полосы пропускания.
Rsync может использоваться для передачи файлов как локально, так и на удаленный хост. Основной синтаксис команды rsync таков:
rsync [опции] источник назначение
Здесь источник
— это местоположение файлов, которые вы хотите передать, а назначение
— место, куда вы хотите их переместить.
Rsync обычно устанавливается по умолчанию на большинстве дистрибутивов Linux. Чтобы проверить, установлен ли он, можно ввести:
rsync --version
Если Rsync не установлен, вы можете добавить его с помощью менеджера пакетов, связанного с вашей операционной системой. Например, в системе, основанной на Debian, вы бы использовали:
sudo apt-get install rsync
В системах на базе Red Hat вы можете установить его с использованием:
sudo yum install rsync
Основная функция rsync — синхронизация файлов и каталогов. Например, чтобы скопировать все файлы из source_directory
в destination_directory
, вы можете использовать следующую команду:
rsync -avzh /path/to/source_directory/ /path/to/destination_directory/
Давайте проанализируем опции, использованные в этой команде:
Обратите внимание, что конечный слеш в source_directory/
гарантирует, что будут скопированы только содержимое каталога, а не сам каталог.
Одной из самых мощных функций rsync является его способность синхронизировать файлы по сети с использованием SSH. Чтобы обеспечить безопасную передачу данных, SSH шифрует данные, так что никто не может их перехватить. Для синхронизации каталогов между локальными и удаленными системами можно использовать:
rsync -avz -e "ssh" user@remote_host:/path/to/remote_directory/ /path/to/local_directory/
Эта команда использует параметр -e
для указания программы удаленной оболочки (в данном случае SSH).
Аналогично, чтобы скопировать файлы с локальной системы на удаленный сервер, измените аргументы source
и destination
:
rsync -avz /path/to/local_directory/ user@remote_host:/path/to/remote_directory/
Если ваш SSH использует другой порт (отличный от порта по умолчанию 22), вы можете указать его с помощью:
rsync -avz -e "ssh -p 2222" /path/to/local_directory/ user@remote_host:/path/to/remote_directory/
При синхронизации директорий вы хотите, чтобы каталог назначения точно отражал исходный каталог, включая удаления. Для этого можно использовать опцию --delete
:
rsync -avz --delete /path/to/source_directory/ /path/to/destination_directory/
С помощью --delete
Rsync удалит все файлы в каталоге назначения, которые не существуют в исходном каталоге.
Для больших файлов или большого количества файлов Rsync может потребоваться много времени для выполнения. Вы можете ускорить этот процесс, запустив Rsync как фоновый процесс, используя символ &
. Это позволяет вам использовать командную строку для других задач:
rsync -avz /path/to/source/ /path/to/destination/ &
По умолчанию Rsync решает, должен ли файл быть передан, основываясь на таких проверках, как размер и время изменения. Чтобы обеспечить передачу на основе различий в содержании, вы можете использовать:
rsync -avzc /path/to/source/ /path/to/destination/
Параметр -c
позволит Rsync выполнить сравнение контрольных сумм, что может занять больше времени, но гарантирует, что каждый переданный файл идентичен.
Вы можете сказать Rsync включить или исключить определенные типы файлов с помощью опций include и exclude. Например, чтобы синхронизировать только текстовые файлы, вы можете ввести:
rsync -avz --include '*.txt' --exclude '*' /path/to/source/ /path/to/destination/
Здесь --include
говорит Rsync включать только файлы .txt, а --exclude
говорит Rsync исключать всё остальное.
Во время операции резервного копирования может быть важно знать, что было передано и когда. Rsync имеет опцию для этого:
rsync -avz --log-file=rsync.log /path/to/source/ /path/to/destination/
Эта команда создает или дополняет журналы в файл rsync.log
.
Для пользователей, которым нужно больше, чем базовые функции, Rsync предоставляет расширенные опции. Например, вы можете установить ограничение полосы пропускания с помощью опции --bwlimit
, что позволяет установить максимальную скорость ваших передач:
rsync -avz --bwlimit=1000 /path/to/source/ /path/to/destination/
Это ограничит полосу пропускания до 1000 КБ/с.
Rsync может работать как демон, запущенный как фоновая служба, к которой клиенты могут подключаться для крупных установок или задач, управляемых сценариями. Чтобы включить это, необходимо выполнить некоторые настройки в файле rsyncd.conf
. Например:
[backup] path = /path/to/share comment = Backup Directory read only = no list = yes uid = root gid = root auth users = username secrets file = /path/to/rsyncd.secrets
В режиме демона Rsync слушает запросы без необходимости в SSH. Однако обязательно защитите эту настройку с помощью брандмауэра и методов аутентификации.
Для регулярного резервного копирования Rsync можно автоматизировать с помощью cron заданий в Linux. Это гарантирует, что резервные копии будут выполнены в заданное время без какого-либо ручного вмешательства. Например, чтобы настроить ежедневное резервное копирование в 2 часа ночи, отредактируйте файл crontab, используя следующее:
crontab -e
Добавьте следующую строку:
0 2 * * * rsync -avz /path/to/source/ /path/to/destination/
Этот cron-задание выполнит команду Rsync каждый день в 2 часа ночи.
Rsync — это универсальный инструмент, который незаменим для систематического резервного копирования и задач синхронизации. Используя правильные опции и конфигурацию, вы можете настроить Rsync для удовлетворения почти любых нужд в резервном копировании данных. Его способность выполнять инкрементальные резервные копии, синхронизируя только изменения, делает его эффективным как с точки зрения времени, так и использования сетевых ресурсов. Открытая природа и кроссплатформенная поддержка делают Rsync идеальным выбором для автоматизированных решений резервного копирования.
Если вы найдете что-то неправильное в содержании статьи, вы можете