Создание бекапа при переносе не всегда возможно, например закончилась дисковая квота, либо архив будет огромен. Да и зачем так делать, если объем слишком велик, то на упаковку, передачу огромного архива и последующий его разворот уйдет значительное время.
- rsync умеет копировать и синхронизировать файлы с локальной машины на удалённую — и наоборот;
- поддерживает копирование ссылок, файлов устройств, данные о владельцах, группах и права доступа;
- rsync работает быстрее, чем scp, потому что использует специальный протокол удалённого обновления, который позволяет передавать данные только об изменившихся файлах: первый раз копируется полное содержимое файла или директории, но при следующем копировании — rsync копирует только изменившиеся блоки данных;
- rsync использует меньше пропускной способности канала передачи данных, т.к. использует компрессию и декомпрессию данных;
Синтаксис команды при переносе по ssh:
rsync -avzhP user@src_host:/src_path/src_path/. /dest_path/dest_path/ # забираем с src_host все файлы в локальную директорию dest_path # или же rsync -avzhP /src_path/src_path/. user@dest_host:/dest_path/dest_path/ # отправляем файлы из src_path на удаленный сервер dest_host в директорию dest_path
Я использую первый синтаксис, чтобы сразу продолжить работу на локальном сервере. При первом использовании меня поразила скорость передачи. Сайт весил немного, всего то 80МБ, но количество мелких файлов приличное. Залетело — глазом не моргнул, секунды 1.5 и я сразу вспомнил, как переносил это же при помощи Filezilla — прога рекурсивно добавляла в задания файлы и папки, и весьма нудно загружала даже такой объем, причем делать это приходилось дважды — сначала на локальный комп и затем на удаленный сервак. Не говоря уже об огромных сайтах — дело затягивалось на сутки и более… rsync гораздо быстрее! Те сайты, которые я когда-то переносил целый день, удалось перенести менее чем за час. Кроме того утилита умеет не только переносить файлы с сервера на сервер, а синхронизировать(из названия ясно) локальные файлы/директории и делать бекапы.
А ещё очень круто забирать с сервера себе на комп бекапы одной командой:
rsync -avzhP [email protected]:/backup/. /drives/d/backups/
В данном случае на винде директория расположена по пути D:/backups и качаю через терминал MobaXterm
Шикарно видно ход процесса: прогресс барчик, объем скачанного, процент скачанного, скорость, оставшееся время.
P.S. Подключение с не стандартным портом ssh:
rsync -avzhP -e 'ssh -p 2483' root@src_host:/src_path/src_path/. /dest_path/dest_path/