Transer большое количество файлов между двумя серверами
Возможный дубликат:
Самый быстрый способ перенести 55 ГБ изображений на новый сервер
Я мигрирую с одного сервера на другой. Я хочу перенести тысячи файлов с одного сервера на другой.
Каков наилучший подход здесь?
Обе системы работают CentOs. Один, с которого я перехожу, использует DirectAdmin, другой cPanel. У меня есть SSH-доступ на обоих.
В настоящее время я проверяю различные папки, но когда файлы большие и объем файла большой, это занимает слишком много времени)
5 ответов
С исходного хоста:
$ rsync -avz --progress /path/to/files/ user@host2.example.com:/path/to/files/
По своему опыту я могу сказать, что tar поверх ssh работает быстрее, чем rsync, при работе с большим количеством маленьких файлов.
Я предлагаю попробовать.
Команда была что-то вроде этого (она сохраняет права доступа):
tar cXpf - / data | ssh user @ new-server "tar xpf - -C / new-location /"
Причиной может быть тот факт, что tar создает непрерывный поток, а ssh сжимает его.
Попробуйте и сообщите нам результаты.
Я хотел бы взглянуть на использование rsync со сжатием между двумя серверами, использование SSH в качестве "туннеля" для установления соединения по сети.
RSync over SSH, вероятно, будет вашим лучшим выбором. Посмотрите здесь, как это можно настроить.
Лучше всего использовать rsync, но почему?
Причина в том, что когда вы переносите большой кусок файлов и соединение по какой-то причине обрывается, вам не нужно беспокоиться о том, какие файлы были переданы, а какие - нет.
Rsync позаботится об этом, поскольку он быстро сравнит файлы, имеющиеся в месте назначения, с источником и перенесет только соответствующие файлы. Такой подход экономит пропускную способность и время.
Вы можете использовать следующий синтаксис для rsync
rsync -avz /path/to/source user@host.com:/path/to/destination
Очевидно, если у вас есть ключ SSH и аутентификация пароля отключена на целевом сервере, используйте это
rsync -avz /path/to/source -e "ssh -i /path/to/ssh-key" user@host.com:/path/to/destination