PHP загружает целую папку (рекурсивную) через FTP

В настоящее время у меня очень большой сайт размером около 5 ГБ с 60 000 файлами. Текущий хост не очень помогает мне переносить сайт на новый хост, и я думал, что нужно сделать простой сценарий на моем новом хосте для FTP в старом хосте и загрузить всю папку public_html (рекурсивно ) на новый сервер. Возможно ли это, и если да, есть ли у кого-нибудь какие-либо ссылки, которыми они могли бы поделиться, чтобы помочь в этом? Очень признателен.

Solutions Collecting From Web of "PHP загружает целую папку (рекурсивную) через FTP"

Вероятно, есть более эффективные механизмы, чтобы делать то, что вы хотите сделать.

Во-первых, вы можете использовать sftp или scp с одного хоста на другой?

 scp -R username@oldhost:path/to/directory/ /path/to/destination/directory 

или

 sftp username@oldhost # then use 'get -r' to download recursively 

или

 rsync -avz -P username@oldhost:/path/to/directory/ /path/to/destination/directory/ 

-P упрощает перезагрузку загруженной / мертвой загрузки.

Если хорошие инструменты не будут работать, посмотрите, установлен ли wget :

 wget --mirror --continue --ftp-user=username ftp://oldhost/path/to/directory/ 

Функция --continue упрощает перезагрузку загруженной / мертвой загрузки.

Если файлов много, я настоятельно рекомендую вам создать архив .tar.gz. Я не знаю, какие ограничения для php у вас есть, но вы можете попробовать это в php:

 $archive = "backup.tar.gz"; $directory = "./www"; exec( "tar -czf $archive $directory"); 

Затем вы можете просто загрузить один один архив с gziped через http / ftp или любым другим способом.

Да, вы можете сделать это в чистом PHP!

Я только что выпустил две новые библиотеки, чтобы делать такие вещи в FTP / SFTP

Рекурсивно копировать файлы и папки на удаленном SFTP-сервере (если local_path заканчивается содержимым папки с косой чертой, иначе загружается сама папка)

 Ftp::upload_dir($server, $user, $password, $local_path, $remote_path, $port = 22); 

Загрузите каталог с удаленного FTP-сервера (если remote_dir заканчивается содержимым папки слэш-данных, иначе загрузите папку)

 Ftp::download_dir($server, $user, $password, $remote_dir, $local_dir, 

$ port = 22);

Если вы хотите посмотреть на код, вы увидите рекурсивные функции, которые делают магию;)