Любому пользователю — будь то администратор или обычный участник — рано или поздно приходится создавать резервные копии файлов или синхронизировать их между несколькими системами. Если при этом каждый раз нужно перезаписывать все файлы, это отнимает много времени и сил. Именно здесь на помощь приходит инструмент Linux Rsync для работы с удалённым сервером. В этом руководстве вы познакомитесь с наиболее полезными командами Rsync и узнаете, как использовать его возможности для быстрой и безопасной передачи данных.
Что такое утилита Rsync?
Удаленная синхронизация (Rsync) — широко известная команда Linux/Unix для копирования и синхронизации файлов и каталогов как локально, так и по удалённому доступу. С помощью Rsync можно выполнять различные операции с данными: синхронизацию, копирование и создание резервных копий. Кроме того, вы можете сделать зеркало своей системы Linux на другой машине.
Ключевое преимущество Rsync при работе с удалённым сервером — высокая скорость передачи файлов. При обмене данными между двумя источниками утилита учитывает только различия между ними. Иными словами, Rsync не тратит время на передачу уже существующих данных, а сравнивает два состояния системы Linux и копирует лишь изменения.
Зачем использовать Rsync?
Инструментов для резервного копирования существует немало. Вопрос в том, чем Rsync выделяется на фоне других утилит и команд.
Например, для создания локальной копии сайта можно воспользоваться Протокол передачи файлов (FTP) , а для передачи файлов — SCP (протокол безопасного копирования) . Однако у обоих инструментов есть недостатки. FTP не шифрует данные при передаче, что неприемлемо с точки зрения безопасности. SCP такой проблемы лишён, зато работает медленнее: для передачи данных он создаёт отдельный туннель, что увеличивает время операции.
В качестве альтернативного решения этих проблем можно использовать Rsync для удалённого сервера с шифрованием на основе ключей (называемым Rsync SSH или Rsync через SSH). Такой подход исключает передачу дублирующихся данных и использует ключ SSH. Кроме того, Rsync сжимает данные при отправке и распаковывает при получении, что снижает потребление пропускной способности.
Как установить Rsync?
Скорее всего, Rsync уже установлен в вашей системе, но рассмотрим этот процесс подробнее. Прежде чем начать, убедитесь, что SSH установлен на обоих серверах — источнике и назначении, — так как мы будем использовать Rsync через SSH.
Шаг 1: Проверка версии SSH
Проверить версию SSH можно следующей командой:
ssh -V
Для синхронизации с удалённым сервером через Rsync вам понадобятся локальный сервер (источник) и удалённый сервер. Также убедитесь, что на локальном сервере есть права администратора (sudo).
Шаг 2: Установка Rsync на Linux
Следующая команда установит Rsync на Ubuntu, Linux Mint и Debian:
sudo apt install rsync -y
Если вы используете другие дистрибутивы Linux — например, Fedora, CentOS, AlmaLinux или Red Hat — выполните следующую команду для установки Rsync:
sudo dnf install rsync
Примечание: apt — удобный менеджер пакетов для дистрибутивов на основе Debian.
Шаг 3: Запуск Rsync
Теперь нужно запустить Rsync и добавить его в автозагрузку с помощью следующих команд:
sudo systemctl start rsync
sudo systemctl enable rsync
Шаг 4: Проверка установки Rsync
Выполните следующую команду, чтобы убедиться в корректности установки Rsync и узнать, какая версия используется в вашей системе Linux:
rsync --version
В следующем разделе рассмотрим, как использовать этот инструмент для создания резервных копий с аутентификацией по ключу.
Как создавать резервные копии с помощью Rsync через SSH?
Создание инкрементных резервных копий — один из распространённых сценариев использования Rsync через SSH. Изучите следующую команду, чтобы понять, как это работает:
rsync -av -e ssh /sourceDir/ user@remote:/path/to/destinationDir
Выполнение приведённой команды синхронизирует sourceDir и destinationDir. Команда поддерживает ряд параметров, с которыми стоит ознакомиться, например -a (archive) и -v (verbose). Обратите внимание на параметр -e ssh Данная опция требует, чтобы соединение Rsync использовало протокол SSH.
Если вы хотите, чтобы соединение SSH принималось через порт, отличный от стандартного (порт 22), необходимо указать номер порта после -e ssh. Рассмотрим следующую команду, чтобы понять, как это работает.
rsync -av -e ssh 1998 sourceDir/ user@remote:/path/to/destinationDir
В приведённой команде предполагается, что вместо порта 22 мы используем порт 1998 для SSH.
Rsync на удалённый сервер через SSH поддерживает дополнительные опции, которые могут быть весьма полезны. Например, опция –partial позволяет возобновить прерванную передачу с того места, где она остановилась. Узнать прогресс текущей передачи файлов можно с помощью опции –progress Кроме того, утилита Rsync для работы с удалённым сервером позволяет использовать эти две возможности одновременно. Для этого достаточно добавить флаг -p в командную строку.
rsync -avP -e ssh /sourceDir/ user@remote:/path/to/destinationDir
Команда Rsync с ключом для удалённого сервера позволяет сжимать данные перед отправкой на целевой хост. Несмотря на дополнительную нагрузку на CPU при сжатии, это ускоряет передачу файлов и снижает потребление полосы пропускания.
Команда Rsync позволяет копировать файлы и директории как локально, так и на удалённых серверах. Главное преимущество Rsync состоит в использовании алгоритма дельта-передачи, который исключает копирование уже существующих данных из источника в назначение. Как уже упоминалось, эта возможность утилиты Rsync особенно полезна при организации ежедневных резервных копий и зеркалирования системы. С учётом этого рассмотрим использование команды Rsync для локальных сценариев.
Как использовать Rsync для локальной синхронизации?
Прежде чем перейти к локальной синхронизации и способам её настройки через Rsync, стоит ознакомиться с общей структурой локальной команды Rsync, приведённой ниже:
rsync [options] [Source] [Destination]
Локальное копирование файлов
Предположим, нам нужно синхронизировать или скопировать файл из директории рабочего стола (называемой Cloudzy) в папку /home/Public ; вот что нужно ввести:
rsync -zvh /desktop/Cloudzy/myfile.pdf /home/Public
Приведённая команда Rsync включает три опции: -zvh; используя -z, файл будет сжат в процессе передачи. опция v отвечает за подробный вывод, а опция h позволяет отображать результаты в удобочитаемом для человека формате.
Копирование директорий локально
Чтобы скопировать директорию рабочего стола (называемую Cloudzy) в папку /home/Public папку, введите следующую команду:
rsync -zavh /desktop/Cloudzy/myfile.pdf /home/Public
Параметр -a опция в этой команде архивирует директории и файлы в процессе синхронизации.
Чтобы убедиться, что директория была скопирована, можно быстро проверить список директорий в папке назначения. Для этого выполните следующую команду:
ls -ld /home/Public
Рекурсивная синхронизация файлов и директорий локально (Recursive Rsync)
Что если в директории /desktop/Cloudzyнаходится несколько директорий и файлов, которые нужно рекурсивно скопировать с помощью команды Rsync Linux?
В таком случае используйте опцию -r для рекурсивной синхронизации локальных файлов и директорий. Также можно использовать опцию архивирования (-a) , которая поддерживает рекурсивное копирование и ряд других сценариев. Ознакомьтесь со следующей командой, чтобы разобраться с рекурсивными командами Rsync.
rsync -zrvh /desktop/Cloudzy /home/Public
Or
rsync -zrvh /desktop/Cloudzy /home/Public
Копирование директорий и файлов с локальной машины на удалённый сервер
Помимо возможностей Linux Rsync для работы с удалёнными серверами, о которых говорилось в предыдущих разделах, эта команда также позволяет синхронизировать файлы и директории с локальной машины на удалённую систему.
Предположим, нам нужно скопировать папку (/desktop/Cloudzy/новаяпапка) с локальной машины на удалённую систему (с 192.168.1.79) в разделе /mycpt; вот пример того, как это работает:
rsync -zarvh /desktop/Cloudzy/newfolder [email protected]:/mycpt
Как скопировать директории без файлов с помощью Rsync?
Иногда может потребоваться использовать возможности Rsync для копирования директорий без файлов на удалённый сервер или с него на локальную машину.
В этой статье мы используем удалённую систему по адресу 192.168.1.79. Предположим, она находится в /mycpt папке, и нужно скопировать /desktop/Cloudzy директорию с локальной системы, не включая её файлы. Введите следующую команду:
rsync -av -f"+ */" -f"- *" /desktop/Cloudzy [email protected]:/mycpt/
Другие полезные команды Rsync
Ниже рассмотрим несколько дополнительных команд Rsync, которые могут пригодиться на практике.
Ограничение максимального размера файла при передаче через Rsync
Вы можете задать ограничение на максимальный размер файла при передаче через Rsync. Это удобно, когда Rsync запускается регулярно между удалённым и локальным серверами, а пропускная способность и время имеют значение. Пример команды с ограничением размера файла:
rsync -avzhe ssh --max-size='100k' /desktop/Cloudzy [email protected]:/home/Public
Ограничение минимального размера файла при передаче через Rsync
Аналогично максимальному, можно задать минимальный размер передаваемого файла. В приведённой ниже команде минимальный размер файла установлен равным 10k:
rsync -avzhe ssh --min-size='10k' /desktop/Cloudzy [email protected]:/home/Public
Удаление файлов из источника после завершения синхронизации
После выполнения синхронизации файлы в источнике могут больше не понадобиться. В таком случае можно использовать следующую команду Rsync для их удаления:
rsync --remove-source-files -zvh /desktop/Cloudzy [email protected]:/home/Public
Пробный запуск
Если вы только начинаете работать с Rsync и ещё не знакомы со всеми его параметрами, стоит воспользоваться пробным запуском . При пробном запуске Rsync не вносит никаких изменений в файлы, но показывает результат выполнения команды. Убедившись, что команда делает именно то, что нужно, уберите параметр –сухой-запуск и выполните команду в терминале. Пример использования пробного запуска:
rsync --dry-run --remove-source-files -zvh /desktop/Cloudzy [email protected]:/home/Public
Итог: использование команд Rsync
В этой статье мы рассмотрели возможности Rsync для работы с удалённым и локальным серверами в различных сценариях, включая зеркалирование системы, создание резервных копий файлов, а также копирование файлов и каталогов локально и удалённо с использованием эффективного подхода. Эта широко известная команда Linux позволяет выполнять быструю передачу файлов с поддержкой SSH и сжатия данных.
Выберите экономный или премиальный Linux VPS для хостинга сайта или удалённого рабочего стола по минимальной цене. VPS работает на базе Linux KVM для повышения эффективности и использует производительное железо с хранилищем NVMe SSD для максимальной скорости.
Читать далееЧтобы получить максимум от этой операционной системы, воспользуйтесь Linux VPS решением от Cloudzy с планами хостинга на базе KVM. Мы предлагаем высокопроизводительные сервисы VPS с аптаймом 99.95%, стабильной работой, минимальной задержкой, дата-центрами по всему миру (12 локаций), сверхбыстрым хранилищем SSD и круглосуточной технической поддержкой. Вы можете начать использовать Linux VPS от $4.95 и перейти на более продвинутый план по мере необходимости.
Часто задаваемые вопросы
Какой TCP порт использует Rsync?
SSH по умолчанию использует порт 22. Соответственно, при работе rsync через SSH используется именно этот порт. При использовании демона Rsync задействуется порт 873.
Что такое Rsync?
Rsync — утилита Linux для синхронизации файлов и каталогов как локально, так и удалённо. С помощью команды Rsync можно выполнять различные операции с данными: синхронизацию, копирование и создание резервных копий.