Как использовать команду rsync для копирования данных локально и через SSH
Копирование файлов из одного места в другое — довольно простая задача, и ее легко выполнить с помощью команды cp. Однако иногда нужно сделать немного больше. Именно здесь используется команда rsync, особенно когда вы передаете файлы большего размера. Rsync (Remote Sync) — это инструмент командной строки на базе Linux, который можно использовать для синхронизации и копирования файлов между локальными и удаленными серверами. Он позволяет синхронизировать файлы между двумя каталогами на одном компьютере, между каталогами на двух разных компьютерах в одной сети, между двумя каталогами в удаленной системе.
Основное преимущество rsync заключается в том, что вместо слепого копирования всего содержимого он анализирует и передает только различия между источником и местом назначения, что позволяет экономить системные ресурсы и пропускную способность. Некоторые другие преимущества rsync заключаются в следующем:
- Сжимает файлы перед передачей
- Можно просматривать индикатор выполнения во время передачи данных
- Процесс копирования можно приостановить и возобновить позже.
- Разрешает передачу через SSH-соединение.
В этой статье мы объясним, как использовать rsync для копирования данных в Linux. Мы будем использовать Debian 10 для описания процедуры, упомянутой в этой статье.
Rsync установлен в большинстве операционных систем Linux по умолчанию. Однако, если он не установлен, вы можете установить его, выполнив следующие действия:
Запустите приложение «Терминал» в своей системе, перейдя на вкладку Действия в верхнем левом углу рабочего стола Debian. Затем в строке поиска введите терминал. Когда появится значок Терминала, щелкните его, чтобы запустить.
Теперь выполните следующую команду в терминале, чтобы установить утилиту rsync:
apt install rsync
Каждая команда rsync начинается с rsync, за которым следует опция, в которой вы можете указать различные параметры. Rsync предоставляет ряд опций, которые дают вам возможность формировать спецификации передачи. Затем есть источник и пункт назначения, которые зависят от того, являются ли они удаленным или локальным компьютером.
Основной синтаксис rsync:
rsync [option] [source] [destination]
Некоторые общие параметры, используемые с командами rsync:
- -v: многословный
- -a: режим архивирования, позволяет рекурсивно копировать файлы и сохранять символические ссылки, права доступа к файлам, права собственности пользователей и групп, а также временные метки.
- -z: сжимает данные.
- -h : удобочитаемый, выводит числа в удобочитаемом формате.
- --max-size=SIZE, передать файлы с указанным минимальным РАЗМЕРОМ
- --min-size=РАЗМЕР, передать файлы с указанным максимальным РАЗМЕРОМ
Теперь мы объясним несколько примеров использования rsync с этими параметрами.
Копирование файлов и каталогов на локальный сервер
Копирование файлов локально
Вы можете скопировать один или несколько файлов из исходного каталога в целевой каталог на одном компьютере. Примером может служить копирование всех файлов .jpg из каталога ~/Downloads в каталог ~/Documents с помощью следующей команды:
rsync -zvh /home/tin/Downloads/*.jpg /home/tin/Documents
После выполнения указанной выше команды все файлы .jpg в исходном каталоге /home/tin/Downloads будут скопированы в целевой каталог /home/tin/Documents . .
В приведенном выше примере мы использовали такие параметры, как -z для сжатия, -v для подробного вывода и -h для удобочитаемого вывода. .
Копировать каталоги локально
Подобно файлам, вы также можете скопировать всю папку и файлы, содержащиеся в каталоге, с помощью команды rsync. Примером может быть копирование всех файлов из каталога ~/Downloads в каталог ~/Documents с помощью следующей команды:
rsync -zavh /home/tin/Downloads/ /home/tin/Documents
Копирование файлов на удаленный сервер
Вы можете скопировать один или несколько файлов из исходного каталога в целевой каталог на удаленном компьютере. Например, чтобы скопировать файлы с локального на удаленный компьютер, используйте следующий синтаксис команды:
rsync [options] [local path] [user]@[remote server]:[remote path]
Копирование файлов на основе максимального размера
Вы также можете указать максимальный размер файла, который можно скопировать из источника в место назначения с помощью rsync. Для этого используйте следующий синтаксис команды:
rsync --max-size=”” [source] [destination]
Примером может служить копирование файлов с максимальным размером 4000 КБ из исходного каталога ~/Downloads в целевой каталог ~/Documents. В этом случае файлы размером более 4000 КБ не будут скопированы в место назначения.
rsync --max-size=4000k /home/tin/Downloads/*.iso /home/tin/Documents/
Копирование файлов на основе минимального размера
Аналогичным образом вы также можете указать минимальный размер, который можно скопировать из источника в место назначения с помощью rsync. Для этого используйте следующий синтаксис команды:
rsync --min-size=”” [source] [destination]
Примером этого может быть копирование файлов с максимальным размером 2 МБ из исходного каталога ~/Downloads в целевой каталог ~/Documents. Файлы размером менее 2 МБ не будут скопированы с помощью rsync.
rsync --min-size=2M /home/tin/Downloads/*.iso /home/tin/Documents/
Просмотр прогресса
Вы также можете просмотреть прогресс при копировании файлов с помощью rsync. Добавьте флаг --progress после команды rsync, как показано ниже:
rsync --progress [source] [destination]
Примером может служить просмотр хода копирования файла из исходного каталога ~/Downloads в целевой каталог ~/Documents:
rsync --progress /home/tin/Downloads/VTS_03_1.VOB /home/tin/Documents
Исключить файлы
Вы также можете исключить определенные файлы при копировании файлов из источника в место назначения с помощью rsync. Примером может служить исключение всех файлов .pdf при копировании файлов из исходного каталога ~/Downloads в целевой каталог ~/Documents.
rsync -zavh --exclude="*.pdf" /home/tin/Downloads/ /home/tin/Documents
При вводе следующей команды все файлы будут скопированы из источника в место назначения, за исключением файлов .pdf.
Вот и все! Мы объяснили основные принципы использования утилиты rsync для копирования файлов между разными каталогами локально и удаленно. Мы также объяснили несколько распространенных и полезных опций rync. Помимо этих, существует множество других опций, которые вы можете использовать для управления каждым аспектом процесса передачи. Чтобы использовать эти параметры, см. справочные страницы rsync.