PHP скачать всю папку (рекурсивно) через FTP - PullRequest
2 голосов
/ 10 апреля 2011

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

Ответы [ 3 ]

3 голосов
/ 10 апреля 2011

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

Во-первых, вы можете использовать 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/

* * * * * * * * * * * * * * * * * * * *

* * * * * * * * * * * * * * *.
1 голос
/ 21 марта 2017

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

Я только что выпустил 2 новые библиотеки для таких вещей в 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);

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

1 голос
/ 10 апреля 2011

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

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

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

...