Я нашел достаточно удобный способ решения этой проблемы.
Для начала на обеих машинах должны быть установлены следующие пакеты: openssh-server, openssh-client, tar, bzip2, pv, screen, rsync
Установить их можно так:
Для Debian/Ubuntu
apt-get install -y openssh-server openssh-client tar bzip2 pv screen rsync
Для RHEL/CentOS
yum install -y openssh-server openssh-clients tar bzip2 pv screen rsync
Кстати. Все команды лучше запускать в screen он доступен в пакетной практически всех дистрибутивах.
Итак зайдём по SSH на 1ый хост, и запустим screen.
Для тех кто не очень понимает bash синтаксис поясню что делает этот скрипт.Не забудьте заменить "$HOST1" "$HOST2" на свои адреса хостов, а /mnt/data/ на свой путь к данным.
tar'om мы сжимаем содержимое директории /mnt/data/ и с помощью ключа "-" отправляем его в стандартный поток вывода, но не выводим на дисплей, а через пайп отправляем команде pv которая считает сколько данных через неё прошло, и выводит данные на экран. Таким образом мы будем наблюдать за процессом передачи данных. После подсчёта команда pv отправит данные в неизменном виде в следующий пайп который передаст данные ssh сессии где мы перейдём в корневой каталог и начнём распаковку tar'om уже на втором хосте. Переход в корневой каталог необходим по той причине, что при архивации tar вырезает / и из абсолютного пути мы получим относительный.
После окончания сей мистерии следует проверить rsync'om все ли данные верно передались.
Теперь следует обговорить screen он умеет многое, и достоин отдельной статьи.ssh "$HOST1" screen tar cjf - /mnt/data/ | pv | ssh root@"$HOST2" "cd / && tar xjf - " rsync -vcazr -e ssh /mnt/data root@"$HOST2":/mnt/
Сейчас о его устройстве вам следует знать 4 вещи.
ctrl a d # Используется для того чтобы свернуть терминал
screen -ls # Используется для того чтобы просмотреть список существующих терминалов
screen -r pid.pts-0.hostname # Используется для того чтобы вернуться в указанный терминал
screen -r # Используется для того чтобы вернуться в терминал если он открыт у вас один
На сим всё.
Могу сказать только что на сильно проседающем канале 6GB данных за ночь передались безошибочно.
Комментариев нет:
Отправить комментарий