Быстрое копирование файлов с сервера на сервер в фоновом режиме. Rsync и scp.

Для быстрого копирования файлов напрямую с одного сервера на другой существуют множество утилит. Рассмотрим самые популярные из них.

Rsync и scp.

Статья не для опытных администраторов. А для программистов и начинающих администраторов, которые сталкиваются с задачами по администрированию.

Сразу покажу финальную команду, которую я использую для быстрого копированя большого числа файлов:

nohup rsync -avz user@remote-server.ru:/dir/ /local/ &

Ну а ниже, ее модификации.

1) Простое копирование файлов с сервера на сервер

SCP

scp -r remote-server.ru:/dir/ /local/

Эта команда копирует файлы с одного сервера на другой, в ответ на эту команду вы получите предложение указать пароль для пользователя root

scp -r user@remote-server.ru:/dir/ /local/

В интерактивном режиме будет предложено ввести пароль для пользователя user

Rsync

1) На оба сервера устанавливаем rsync

apt-get install rsync

Копируем файлы

rsync -av remote-server.ru:/dir/ /local/

Эта команда копирует файлы с одного сервера на другой, в ответ на эту команду вы получите предложение указать пароль для пользователя root

rsync -av user@remote-server.ru:/dir/ /local/

В интерактивном режиме будет предложено ввести пароль для пользователя user

2) Ускоряем скорость копирования

Для обычных ситуаций эти команды вам подойдут. Но вот для ситуаций когда необходимо скопировать несколько сотен гигабайт данных, да еще возможно множества мелких файлов, этого может не хватить.

Сегодня утром я запустил копирование изображений с одного сервера на другой. Командой scp -r спустя 5 часов я подошел и увидел что скопировано 4Gb (а впереди еще 200 GB)

Эта ситуация совсем не подоходит.

Обе утилиты позволяют добавлять компрессию.

-z опция для rsync

-C опция для scp

По умолчанию в обеих утилитах компрессия выключена, потому как она несет в себе накладные расходы на процессорные ресурсы. А пропускная способность сети является ограничивающим фактором чаще всего.

Поэтому модифицируем команды:

SCP 

scp -r -C -o 'CompressionLevel 9' user@remote-server.ru:/dir/ /local/

Для scp есть еще одна опция, которая ускоряет копирование файлов.

-c blowfish
scp -r -с blowfish -C -o 'CompressionLevel 9' user@remote-server.ru:/dir/ /local/

Rsync

rsync -avz user@remote-server.ru:/dir/ /local/

На данный момент я запустил rsync и за 10 минут работы скопировано уже 12Gb

3) Фоновый режим

Ну и последняя модицикация, а что если у вас оборвется интернет соединение с консолью в самый неподходящий момент?

В случае с rsync в принципе ничего страшного потому как он умеет копировать только различия между файлами. Но с scp — это провал.

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

nohup rsync -avz user@remote-server.ru:/dir/ /local/ &

Надо сделать так, но этого не достаточно, интерактивного режима от консоли при этом запущено не будет, а как же указать пароль?

Для начала нужно настроить авторизацию между серверами по ключам.

Генерируем ключ на машине на которую будем копировать файлы:

ssh-keygen -t rsa -b 4096

При этом ключ генерируем без пароля!

Отправляем на удаленный сервер.

ssh-copy-id user@remote-server.ru

в этот раз мы последний раз укажем пароль от сервера. remote-server.ru

Удачи! И быстрого бесперебойного копирования вам!

All Comments (0)
No Comments