Вот ситуация:

Необходимо скопировать около 10 миллионов небольших файлов (по 1–50 тыс. Каждый) из одного каталога между двумя удаленными серверами через Интернет. Пробовал с FTP и SCP, но не удалось, так как все файлы находятся в одном каталоге и как-то замораживает передачу.

Проблема в том, что нельзя использовать TAR, так как на исходном сервере SSH недоступен, только на целевом сервере, где у меня есть полный контроль.

Ежедневное количество файлов увеличивается на 10-40 тыс., Поэтому делать окончательную копию становится все труднее, любые предложения будут высоко оценены.

Спасибо, Р.

Изменить: Чтобы прояснить ситуацию: исходный сервер (где все файлы расположены) является обычным сервером общего хостинга с доступом к PHP/Mysql и прочее (хотя PHP может выполнять общие команды Linux). Целевым сервером, на который я хочу передать файлы, является полный root-доступ (SSH и т.д.) На экземпляре VPS.

Теперь я могу использовать tar/zip и т.д., Но мне интересно, сколько времени займет архивирование всех моих 10/20 миллионов файлов (файлов небольшого размера). Если я сделаю это через PHP в какой-то момент, появится тайм-аут или я могу отправить shell exec с запуском в фоновом режиме, или что-то еще?

Другой вариант - вытащить файлы с конечного сервера как-нибудь, в небольших количествах или? Любые предложения будут оценены, так как я уже разочарован. Большое спасибо за уже сделанные ответы.

2 ответа2

0

Вы сказали:«Каждый день количество файлов увеличивается». Если вы можете остановить это, рекурсивно извлеките все файлы с FTP-сервера, используя wget:

wget -m ftp://username:password@ip.of.old.host

Если вы не можете остановить добавление нового файла, пока полностью не перейдете на новый сервер, используйте curlftpfs (на новом сервере), чтобы смонтировать FTP-хост как локальный каталог. Затем используйте cp с флагами -u и r . Вы можете использовать это в нескольких сеансах после прерывания работы (-u позаботится об этом).
После монтирования хоста FTP вы также можете использовать rsync .

0

В зависимости от того, как названы файлы, вы можете попытаться скопировать фрагменты tar/zip, а затем попробовать SCP или FTP. Вы не указали тип файла, но если они являются журналами или другим текстом, вы должны получить разумное сжатие. Используйте подстановочные знаки для архивирования всех файлов, начинающихся с a, foo, bar123 и т.д.
Например:
tar -czvf chunk01.tar.gz a *
tar -czvf chunk02.tar.gz b *
tar -czvf chunk03.tar.gz c *
tar -czvf chunk03.tar.gz d *
tar -czvf chunk03.tar.gz e *
...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .