Перед внесением изменений бывает полезно сохранить файлы в безопасном месте, чтобы можно было их восстановить. С этой задачей поможет утилита rsync, которая минимизирует трафик, копируя только изменившиеся части файлов.
Первым делом установим пакет на оба сервера, если его ещё нет. Используем следующую команду:
sudo apt-get install rsync (для пользователей CentOS используем yum вместо apt-get)
Для копирования с удалённого сервера нам естественно понадобится доступ к нему, так как перед началом копирования придётся ввести пароль. В нашем примере данные будут скопированы из директории /remote/source в /local/destination причём в случае отсутствия директории она будет создана, а существующие в ней файлы не будут перезаписаны:
rsync -avzP --stats [email protected]:/remote/source/ /local/destination/
- -a сохраняет информацию о датах, симлинках и разрешениях файлов
- -z архивирует данные
- -v увеличивает детализацию сообщений процесса работы программы
- -P сочетает в себе «progress» (отображение прогресса во время копирования) и «partial» (для продолжения копирования при разрыве связи)
При желании убедиться, что всё пройдёт хорошо, можно дополнительно дописать опцию «dry-run» — в этом случае утилита запустит симуляцию копирования с записью лога, но реального копирования файлов не произойдёт.
Для копирования на удалённый сервер устанавливаем подключение для директории, куда будет вестись копирование:
rsync -avzP --stats /local/source/ [email protected]:/remote/destination/
Ремарка о закрывающем слэше:
При указании пути к директории в качестве источника, следует обращать внимание на закрывающий слэш – символ / в конце имени директории. Закрывающий слэш означает внутреннее содержимое, т.е. если в конце /source/ есть слэш, rsync скопирует содержимое /source/ в /destination/. Но если слэша в /source не будет, то rsync создаст директорию dir внутри /destination/ и скопирует все содержимое /source/ в /destination/source/. При этом, наличие или отсутствие закрывающего слэша в имени директории, в которую будет происходить копирование, значения не имеет.
Источники:
- https://help.ubuntu.com/community/rsync
- https://www.servers.ru/knowledge/linux-administration/how-to-copy-files-between-linux-servers-using-rsync