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


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

Author: Brian, 2011-04-10

3 answers

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

Во-первых, можете ли вы использовать 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 упрощает перезапуск остановленной/мертвой загрузки.

 3
Author: sarnold, 2011-04-10 02:33:10

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

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

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

 1
Author: s3v3n, 2011-04-10 04:00:58

Да, вы можете сделать это на чистом 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, 

$порт = 22);

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

 1
Author: hugsbrugs, 2017-03-20 22:46:57