Содержание
Иногда возникает необходимость сделать резервное копирование сайта (BACKUP), например, для локального хранения копии сайта, для переноса клиентского сайта на другой хостинг и т.д. Но как быть, если под рукой есть только FTP доступ?
Копия сайта (Dump) подразумевает дамп файловой системы и дамп БД. Соответственно, нам потребуется доступ к файловому менеджеру и msql.
При наличии лишь доступа к FTP (а это главное условие для нашей ситуации), мы можем скопировать сайт к себе локально, однако, если сайт на какой-нибудь CMS, то пофайловое копирование сайта может занять час и больше (удаленно архивировать файлы простые FTP-менеджеры не умеют).
Не ясен вопрос и с дампом БД. Если хостинг разрешает прямой доступ к msql, мы можем поискать его, поочередно добавляя к адресу нашего сайта приставки:
/admin/mysql/ /admin/phpmyadmin/ /admin/pma/ /db/ /dbadmin/ /myadmin/ /mysql/ /mysqladmin/ /mysql-admin/ /phpm/ /phpmy/ /phpMyA/ /phpmyad/ /phpMyAdmi/ /phpmyadmin/ /PMA/ /web/phpMyAdmin/
Если мы попали на страницу авторизации msql - нам повезло, мы сможем снять дамп БД для последующей работы!
Как видите, процедура снятия полного дампа сайта при наличии лишь доступа к FTP не выглядит радужной. Однако, не все так печально, как кажется. Полный дамп сайта (файловой системы и БД) снимается с хостинга буквально за пару минут: необходимы лишь некоторые инструменты, которые мы закинем на хостинг по FTP. Никакого громоздкого кода!
Как сделать Dump файловой системы сайта посредством FTP
Вы можете попробовать скачать файлы сайта (выделением и перетаскиванием) в FTP менеджере. Но нужно брать во внимание два обстоятельства:
- Сайт может копироваться полчаса, час и более;
- Очень велика вероятность, что на середине менеджер зависнет, оборвется связь с сервером, файлы скачаются не целиком и т.д.

Целесообразно упаковать содержимое файловой системы в архив и скачать одним файлом. Но FTP-менеджеры не умеют работать с архивами. Найти выход можно с помощью ftp-клиентов (например, ftpadmin или net2ftp), а можно не использовать постороннее ПО, а загрузить пару скриптов на копируемый сайт посредством FTP.
Используем библиотеку PclZip для работы с ZIP архивами
Библиотека PcLZip на PHP умеет работать с ZIP архивами (упаковывать и распаковывать файлы на сервере). Это один файл PHP весом чуть больше 200 Кб, который необходимо загрузить на сервер и обращаясь к этой библиотеке можно выполнять операции с упаковыванием и распаковыванием ZIP архивов на сервере.
Упаковка ZIP архивов на сервере
Например, чтобы упаковать весь сайт в архив, создадим файл add_to_archive.php и загрузим его в корень сайта (где поместим и файл библиотеки pclzip.lib.php):
<?php define('ROOT', rtrim(str_replace('\\', '/', dirname(__FILE__)), '/'). '/'); $name_arch = ROOT. 'archive.zip'; $files_dir = rtrim(ROOT, '/'); $files_to_arch = array(); require_once(ROOT. 'pclzip.lib.php'); for($d = @opendir($files_dir); $file = @readdir($d);) { if($file!='.' && $file!='..') { $files_to_arch[]= $file; } } chdir($files_dir); $archive = new PclZip($name_arch); $v_list = $archive->create(implode(',', $files_to_arch)); if($v_list == 0) { die("Error : ".$archive->errorInfo(true)); } else { echo 'OK'; } ?>
Достаточно обратиться к этому файлу из своего браузера ваш_сайт.ру/add_to_archive.php: в считанные секунды получим извещение "ОК" и архив всего сайта в корне под названием "archive.zip".
Распаковка ZIP архивов на сервере
С помощью библиотеки PclZip мы можем загрузить архив на сервер по FTP и там же его распаковать. Нам потребуется создать файл extract.php с содержимым:
<?php require_once('pclzip.lib.php'); $archive = new PclZip('archive.zip'); if ($archive->extract() == 0) { die("Error : ".$archive->errorInfo(true)); } ?>
Теперь, чтобы разархивировать архив сайта под названием "archive.zip" в корне сайта, нам необходимо обратимся в браузере по адресу: ваш_сайт.ру/extract.php
Преимущества предложенного мною метода в том, что на архивирование и разархивирование сайта по FTP уходят считанные секунды времени!
Как сделать Dump базы данных посредством FTP
Если хостинг не разрешает прямого доступа к msql, сам msql можно загрузить по FTP и обратиться к нему из браузера. Естественно, чтобы снять дамп (копию) базы данных, нам будет достаточно компактной версии msql с базовым функционалом. Таким требованиям отвечает "Adminer" - компактный скрипт для управления базами данных от Jakub Vrana. Это 1 php файл весом не более 200 Кб!
При обращении к файлу adminer.php потребуется доступ от базы данных. А поскольку у Вас есть доступ к FTP, то такие данные можно взять в конфигурационном файле вашей CMS (например, в WordPress данные от базы данных находятся в файле wp-config.php).

Осталось прикрепить все файлы к статье! Быстрого Вам резервного копирования!
Я давно искал эти скрипты !