Возобновите частично переданные файлы через SSH с помощью Rsync
Возобновите копирование файлов через SSH с помощью Rsync в Linux
Представьте себе этот сценарий. Вы копируете несколько больших файлов из одной системы в другую через SSH, используя команду scp
. Внезапно пропало питание, поэтому сетевое соединение разрывается, и процесс копирования прерывается на полпути. Что бы вы сделали? Просто перезапустить процесс копирования, как только питание снова будет подключено? Да, это работает. Однако команда scp
не имеет опции возобновления, поэтому она просто начнет копировать файлы с начала и перезапишет существующие файлы. Это немного раздражающая и отнимающая много времени задача. Вот тут-то и придет на помощь утилита Rsync! Мы можем легко возобновить частично переданные файлы через SSH с помощью Rsync. Это поможет вам возобновить прерванный процесс копирования или загрузки с того места, где вы его остановили.
Что такое Rsync?
Для тех, кому интересно, Rsync — это быстрая и универсальная утилита копирования файлов, которую можно использовать для копирования и передачи файлов или папок в удаленные и локальные системы и обратно.
Он имеет большое количество опций, которые контролируют каждый аспект его поведения и позволяют очень гибко задавать набор копируемых файлов.
Rsync известен своим алгоритмом дельта-передачи, который уменьшает объем данных, отправляемых по сети, передавая только различия между исходными файлами и существующими файлами в месте назначения.
Rsync широко используется для резервного копирования и зеркалирования, а также в качестве улучшенной команды копирования для повседневного использования.
Как и scp
, rsync также может копировать файлы через SSH. Если вы хотите загрузить или передать файлы и папки большого размера через SSH, я рекомендую вам использовать утилиту rsync, как описано ниже.
Установите Rsync в Linux
Пожалуйста, убедитесь, что утилита rsync должна быть установлена на обеих сторонах (т. е. на удаленной и локальной системах), чтобы возобновить частично переданные файлы. Rsync доступен в официальных репозиториях большинства дистрибутивов Linux, поэтому вы можете установить его с помощью менеджера пакетов дистрибутива по умолчанию.
В Alpine Linux мы можем установить Rsync, как показано ниже:
sudo apk add rsync
В Arch Linux и его вариантах установите Rsync с помощью команды:
sudo pacman -S rsync
В Debian, Ubuntu, Linux Mint:
sudo apt-get install rsync
В Fedora, RHEL, CentOS, AlmaLinux и Rocky Linux:
sudo dnf install rsync
В SUSE/openSUSE:
sudo zypper install rsync
Возобновите частично переданные файлы с помощью Rsync
Теперь давайте посмотрим пример. Я собираюсь скопировать ISO-файл Ubuntu из моей локальной системы в удаленную систему, используя следующую команду:
scp ubuntu.iso sk@192.168.225.22:/home/sk/
Здесь,
- sk — имя пользователя моей удаленной системы.
- 192.168.225.22 — IP-адрес удаленного компьютера.
/home/sk/
— это удаленный пункт назначения.
Теперь я принудительно завершил процесс копирования, нажав CTRL+C
.
Пример вывода:
sk@192.168.43.2's password:
ubuntu-16.04-desktop-amd64.iso 26% 372MB 26.2MB/s 00:39 ETA^c
Скопируйте файл с помощью команды scp в Linux
Как вы видите в приведенном выше выводе, я завершил процесс копирования, когда он достиг 33%.
Если я повторно запущу приведенную выше команду, она просто перезапишет существующий файл. Другими словами, процесс копирования не возобновится с того места, где я его остановил.
Чтобы возобновить процесс копирования частично переданного файла ISO, используйте команду rsync, как показано ниже.
rsync -P -rsh=ssh ubuntu.iso sk@192.168.225.22:/home/sk/
Пример вывода:
sk@192.168.225.22's password:
sending incremental file list
ubuntu.iso
834.00M 100% 14.81MB/s 0:00:56 (xfr#1, to-chk=0/1)
Возобновите частично переданные файлы с помощью Rsync через SSH в Linux
Видеть? Теперь процесс копирования возобновляется с того места, где мы его остановили ранее.
Вы также можете использовать «--partial
» вместо параметра «-P
», как показано ниже.
rsync --partial -rsh=ssh ubuntu.iso sk@192.168.225.22:/home/sk/
Здесь параметры «--partial
» или «-P
» сообщают команде rsync, что нужно сохранить частично загруженный файл и возобновить процесс.
Проверьте, действительно ли файл скопирован в удаленную систему, с помощью команды:
$ ssh sk@192.168.225.22 ls -lh
sk@192.168.225.22's password:
total 835M
-rw-rw-r-- 1 sk sk 834M Jul 26 2019 ubuntu.iso
Запускайте команды на удаленных системах через SSH
Как вы видите в приведенном выше выводе, файл Ubuntu.iso копируется в удаленную систему, и его размер составляет 835 МБ.
В качестве альтернативы мы также можем использовать следующие команды для возобновления частично переданных файлов через SSH.
rsync -avP ubuntu.iso sk@192.168.225.22:/home/sk/
Или,
rsync -av --partial ubuntu.iso sk@192.168.225.22:/home/sk/
Вот и все. Теперь вы знаете, как возобновить отмененные, прерванные и частично загруженные файлы с помощью команды rsync. Как видите, это не так уж и сложно. Если rsync установлен в обеих системах, мы можем легко возобновить процесс копирования файлов через SSH, как описано выше.
Рекомендуем прочитать:
- Примеры команд Linux Rsync для начинающих
- Как возобновить частично загруженный файл с помощью Wget
- Выполнение команд в удаленных системах Linux через SSH