Перед внесением изменений бывает полезно сохранить файлы в безопасном месте, чтобы можно было их восстановить. С этой задачей поможет утилита rsync, которая минимизирует трафик, копируя только изменившиеся части файлов.

Первым делом установим пакет на оба сервера, если его ещё нет. Используем следующую команду:

sudo apt-get install rsync (для пользователей CentOS используем yum вместо apt-get)

Для копирования с удалённого сервера нам естественно понадобится доступ к нему, так как перед началом копирования придётся ввести пароль. В нашем примере данные будут скопированы из директории /remote/source в /local/destination причём в случае отсутствия директории она будет создана, а существующие в ней файлы не будут перезаписаны:

rsync -avzP --stats user@99.99.99.99:/remote/source/ /local/destination/
  • -a сохраняет информацию о датах, симлинках и разрешениях файлов
  • -z архивирует данные
  • -v увеличивает детализацию сообщений процесса работы программы
  • -P сочетает в себе “progress” (отображение прогресса во время копирования) и “partial” (для продолжения копирования при разрыве связи)

При желании убедиться, что всё пройдёт хорошо, можно дополнительно дописать опцию “dry-run” – в этом случае утилита запустит симуляцию копирования с записью лога, но реального копирования файлов не произойдёт.

Для копирования на удалённый сервер устанавливаем подключение для директории, куда будет вестись копирование:

rsync -avzP --stats /local/source/ user@99.99.99.99:/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