Rsync означает "удаленная синхронизация". Команда rsync позволяет передавать и синхронизировать данные между различными машинами и каталогами. Используя протокол Secure Shell (SSH), вы можете безопасно копировать файлы в другое место.
Инструмент rsync имеет множество преимуществ по сравнению с другими методами копирования файлов. Он использует сжатие и декомпрессию при отправке и получении файлов. Инструмент передает только новые или обновленные файлы, экономя пропускную способность и ускоряя передачу.
Следуя этому руководству, вы узнаете, как использовать rsync через SSH для передачи или копирования файлов.
Проверка установки Rsync
В большинстве последних дистрибутивов Linux по умолчанию установлен rsync. Чтобы проверить, установлен ли в вашей системе rsync, выполните команду установки.
Для машин Debian и Ubuntu используйте apt-get:
1 | sudo apt-get install rsync |
Если rsync уже установлен, в выводе будет показана текущая версия инструмента.
На машинах на базе RPM, таких как CentOS, используйте:
1 | sudo yum install rsync |
Передача файлов с помощью Rsync по SSH
Прежде чем начать передачу файлов и каталогов с помощью rsync по SSH, убедитесь, что вы можете использовать SSH для подключения к удаленному серверу. Убедившись в этом, можно приступать к резервному копированию данных. Убедитесь, что на целевой системе достаточно места для хранения данных.
Синтаксис для копирования файлов на удаленный сервер по SSH с помощью команды rsync следующий:
1 | rsync OPTION [SourceFile] [user]@[IP]:[Target] |
[SourceFile] - Имя файла или каталога для передачи
[user] - Пользователь, для авторизации на удаленном сервере
[IP] - IP адрес или доменное имя удаленного сервера
[Target] - Путь для копирования файлов на удаленном сервере
При каждом запуске команды rsync необходимо вводить пароль. Чтобы избежать этого, вы можете установить аутентификацию на основе ключей SSH. Вы можете опустить имя пользователя в команде, если хотите использовать текущего зарегистрированного пользователя.
Примеры команд rsync
Далее в руководстве приведены примеры наиболее распространенных случаев использования rsync.
Передача определенного файла с помощью Rsync
Чтобы передать один файл на удаленную машину, введите полный путь к исходному файлу. Например:
1 | rsync ~/Dir1/source.txt test@192.168.153.131:~/Desktop/test |
Обязательно используйте кавычки для файлов, содержащих пробелы в имени. Например:
1 | rsync ~/Desktop/Dir1/"source sample.txt" test@192.168.153.131:~/Desktop/test |
Передача содержимого каталога с помощью Rsync
Есть несколько вариантов синхронизации содержимого каталога с помощью rsync через SSH.
Чтобы передать все файлы из исходного каталога в целевой на удаленном хосте, введите:
1 | rsync ~/SourceDirectory/* username@[IP]:~/Destination |
Звездочка (*) указывает инструменту включить все файлы в исходный каталог. Подкаталоги не передаются.
Чтобы включить все подкаталоги из исходного каталога, используйте опцию -r (рекурсивный) или -a (архивный). Мы рекомендуем использовать флаг -a. Эта опция синхронизирует рекурсивно и сохраняет все разрешения и настройки файлов. В этот раз не используйте звездочку в исходном пути.
1 | rsync -a /opt/ user@192.168.153.130:/home/user/ |
При выполнении команды в таком формате rsync переносит все файлы и подкаталоги из исходного каталога в целевой. В нашем примере, приведенном выше, папка test будет иметь содержимое исходного каталога Dir1, когда передача завершится.
Косая черта в конце пути к источнику играет важную роль. Если вы введете путь к исходному каталогу без косой черты в конце, rsync сначала передаст исходный каталог, а затем его содержимое.
Проверка хода передачи файлов Rsync
Чтобы проверить статус передачи файлов rsync, используйте опцию -P. Эта опция отображает время передачи, а также имена синхронизируемых файлов и каталогов.
Если возникли проблемы с соединением и синхронизация прервалась, опция -P возобновит передачу.
Выполните команду в этом формате для рекурсивной синхронизации и проверки состояния передачи:
1 | rsync -aP ~/SourceDirectory/ [username]@[IP]:~/Destination |
Например:
1 | rsync -aP /opt/ user@192.168.153.130:/home/user/ |
Если вы повторно выполните ту же команду, когда в исходном каталоге не было никаких изменений, перенос не произойдет. Причина в том, что rsync передает только изменения в файлах и новые файлы. В этом случае в выводе отображается только следующая строка:
Когда происходит изменение даже в одном исходном файле, rsync обнаруживает его и синхронизирует с целевым.
Заключение
С помощью команд Linux, приведенных в этом руководстве, вы сможете передавать файлы с помощью rsync через SSH. Мы перечислили наиболее распространенные варианты работы с rsync, чтобы вы могли успешно выполнять резервное копирование данных в удаленное место.