Rsync также известен как remote sync– это инструмент командной строки, используемый для копирования и синхронизации файлов и каталогов как удаленно, так и локально в системах Linux/Unix.
Мы создали список с различными примерами команд Rsync, включающий примеры использования резервного копирования Rsync и другие советы, которые помогут вам извлечь максимум пользы из этого замечательного инструмента.
- Зачем вообще использовать команды Rsync?
- 17 различных команд Rsync
- Установка Rsync на Linux
- Копирование и синхронизация файлов или каталога (локально на удаленный сайт)
- Копирование или синхронизация удаленного каталога с локальным десктопом
- Отображение прогресса передачи данных Rsync
- Rsync через SSH
- Резервное копирование файлов с облачного сервера на локально размещенный сервер через SSH
- Копирование файла с локального сервера на удаленный сервер с помощью SSH
- Rsync -delete
- Установка максимального размера файлов для первой передачи
- Выполним пробный запуск с помощью Sync
- Заключение
Зачем вообще использовать команды Rsync?
Думал, что вы спросите, поэтому вот почему:
- Эффективно копирует и синхронизирует файлы на удаленную систему или с нее.
- Поддерживает копирование ссылок, устройств, владельцев, групп и разрешений.
- Он намного быстрее, чем Secure Copy (scp), поскольку использует протокол удаленного обновления, позволяющий передавать данные между двумя наборами файлов. В первый раз он копирует все содержимое файла или каталога из источника в пункт назначения, а в следующий раз копирует только измененные блоки и байты в пункт назначения.
- Он потребляет меньше полосы пропускания, так как использует метод сжатия и декомпрессии при отправке и получении данных на обоих концах.
17 различных команд Rsync
Синтаксис Rsync
sync options source destination
Общие аргументы Rsync
- -r: копирует данные рекурсивно.
- -v: для вывода подробной информации.
- -a: архивный режим, который позволяет копировать файлы рекурсивно. Более того, он также сохраняет символические ссылки, разрешения на файлы, пользователя и группу.
- -z: сжатие данных.
- -h: человекочитаемый формат, выводит числа в формате, читаемом человеком.
Установка Rsync на Linux
Установите его с помощью следующей команды
yum install rsync (На RedHat OS)
apt-get install rsync (На Debian подобных)
Копирование и синхронизация файлов или каталога (локально на удаленный сайт)
Это действие синхронизирует директории с локальной машины на удаленную, например, на локальном компьютере есть папка “rpmpkgs”, которая содержит некоторые пакеты RPM, и вы хотите, чтобы содержимое локальных директорий было отправлено на удаленный сервер, используйте следующую команду:
rsync -avz rpmpkgs/ root@192.168.1.100:/home/
sending incremental file list
Копирование или синхронизация удаленного каталога с локальным десктопом
Этот пример поможет синхронизировать удаленный каталог с локальным.
В примере, показанном ниже каталог /home/shaheer/rpmpkgs удаленного сервера перенесен в локальную систему в каталог /tmp/myrpms.
rsync -avzh root@192.168.1.100:/home/shaheer/rpmpkgs /tmp/myrpms
receiving incremental file list
created directory /tmp/myrpms
Этот пример позволит синхронизировать один файл на локальной машине из одного места в другое.
В примере файл с именем backup.tar нужно скопировать или синхронизировать в папку /tmp/backups/.
rsync -zvh yourfiles.tar /tmp/yourfiles/
created directory /tmp/yourfiles
yourfiles.tar
Следующая команда должна перенести или синхронизировать все файлы из одного каталога в другой каталог на той же машине.
В примере /root/rpmpkgs содержит некоторые файлы пакетов rpm, и вы хотите скопировать этот каталог в папку /tmp/backups/.
rsync -avzh /root/rpmpkgs /tmp/yourdekifiles/
sending incremental file list
rpmpkgs/
Отображение прогресса передачи данных Rsync
Мы используем опцию -progress для отображения прогресса при передаче данных с одной машины на другую.
Она также отображает файлы и время, оставшееся до завершения передачи.
rsync -avzhe ssh --progress /home/rpmpkgs
Rsync через SSH
С помощью этого протокола мы можем использовать SSH (Secure shell) для передачи данных, используя этот протокол при сетевом взаимодействии, мы можем быть уверены, что данные передаются в защищенном соединении с шифрованием, и никто не сможет прочитать данные при их передаче.
Также при использовании этого протокола нам необходимо предоставить пароль пользователя/root пользователя для выполнения определенной задачи, поэтому при использовании этой опции логины передаются в зашифрованном виде, так что пароль остается в безопасности.
Резервное копирование файлов с облачного сервера на локально размещенный сервер через SSH
Чтобы указать протокол, необходимо указать опцию -e с именем протокола, который вы хотите использовать.
В примере мы будем использовать ssh с опцией -e и выполнять передачу данных.
rsync -avzhe ssh root@192.168.1.200:/root/install.log /tmp/
Копирование файла с локального сервера на удаленный сервер с помощью SSH
rsync -avzhe ssh backup.tar root@192.168.1.200:/dekibackup/
Rsync -delete
Если какой-либо файл или каталог не существует в источнике, но существует в месте назначения, то вы можете захотеть удалить этот существующий файл или каталог во время синхронизации.
Опция -delete может быть использована для удаления файла, которого нет в каталоге источника.
Источник и цель синхронизированы, теперь создаем новые файлы test.txt на целевом сервере.
touch dekisoftryncpost.txt
rsync -avz --delete root@192.168.1.200:/var/lib/rpm/
Установка максимального размера файлов для первой передачи
Пользователи могут указать максимальный размер файлов для передачи или синхронизации.
Это можно сделать с помощью параметра -max-size.
В примере максимальный размер составляет 200k, поэтому команда будет передавать только те файлы, которые равны или меньше этого размера.
rsync -avzhe ssh --max-size='400k' /var/lib/rpm/ root@192.168.1.200:/root/tmprpm
shaheer@192.168.1.200's password:
sending incremental file list
created directory /root/tmprpm
./
Выполним пробный запуск с помощью Sync
Если вы новичок и не знаете, что будет делать ваша команда, можно использовать “драйран”.
Это может испортить все в папке назначения, а отмена может оказаться довольно утомительным занятием.
Использование этой опции не вносит никаких изменений, а только выполняет пробный запуск команды и показывает вывод команды, если вывод показывает тот же результат, который вы хотите сделать, то вы можете удалить опцию -dry-run из команды и запустить боевую команду в терминале.
rsync --dry-run --remove-source-files -zvh mybackup.tar /tmp/mybackup/
mybackup.tar
Заключение
Remote sync – это отличный инструмент, который облегчил жизнь многим системным администраторам для создания резервных копий и перемещения данных между серверами.
Именно поэтому я поделился своими знаниями о практических примерах команд Rsync, которые вы можете использовать для резервного копирования, использования SSH, перемещения и синхронизации каталогов.
см. также:
- 🐧 Как клонировать сервер CentOS с помощью Rsync
- 🖧 Как ограничить / уменьшить скорость передачи rsync на Linux
- 🐧 Как возобновить частично переданные файлы по SSH Используя Rsync
- 🕡 Как сохранить права доступа acl при использовании команд tar и rsync
- Как сделать ежедневные резервные копии с помощью rsync и cronjobs
- Shell скрипт для резервного копирования файлов / каталогов используя rsync
- 5 лучших инструментов для резервного копирования серверов для Linux