Бекап данных сайта средствами PHP

GeT

Новичок
Бекап данных сайта средствами PHP

Вот тут серьезно встала проблема бекапа контента сайта.

Если бы это был простой бекап базы, я б не спрашивал, но тут дело немного сложнее.
Надо сделать еще бекап данных, залитых пользователями, тоесть картинок, файлов и темплейтов страниц (это админами).

Как лучше всего проделать подобное?

P.S. Функцию для бекапа/рестора БД я написал, остались файлы - как бы их запихнуть в один архив вместе с файлом БД, чтоб потом можно было делать upload этого файла?
 

GeT

Новичок
valyala
Спасибо, как раз то что надо. Хотя тут возникла проблемка.
Нужно создать архив, в котором будут файлы из 2 папок + файл бекапа базы. С помощью твоей функции это довольно проблематично (нужно сделать отдельную папку с бекапом, туда забекапить 2 папки и этот файл и потом сделать бекап этой папки).
Можно ли какнить попроще?

P.S. Не могли бы свою ICQ оставить? =)
 

untied

Сдвинутый новичок
А что мешает сделать бэкап базы скриптом PHP, а файлы -- заархивировать TAR-ом-GZ через ssh?
 

GeT

Новичок
untied
Ты имеешь в виду shell-команду tar? Нет у меня root-доступа
 

bgm

 
Так основная проблема в том, как архивировать дерево объектов или в чём-то другом?
 

GeT

Новичок
bgm
В топике, на котором мне дали ссылку выше, дано решение проблемы. Но с помощью функции, которая написана там, можно заархивировать содержимое одной папки.

Таким образом, чтобы заархивировать 2 папки + файл, надо либо перенести все эти 3 объекта в одну папку, либо сначала заархивировать обе папки, потом перенести обе архива+файл в отдельную папку и ее еще раз заархивировать.
1ое мне не подходит, т.к. в папках может быть от 100мб и больше. Второе не подходит по похожим причинам, да еще и придется 2 раза разархивировать.

Моэет, я туплю?
 

bgm

 
Это я немного затормозил :)
Собственно на средних размеров проекте (200 метров) используем Tar file management class , который вполне успешно архивирует всё содержимое указанной папки (включая вложенные папки).
Код выглядит примерно вот так:
PHP:
include("Archive/Tar.php");
$tar_object = new Archive_Tar("/usr/backup/backup.tar.gz");
$tar_object->setErrorHandling(PEAR_ERROR_PRINT);
$var[0]="/home/path/for/backup/";
$tar_object->create($var);
Если имя архива указывать без расширения .gz (gz работает если только PHP идёт с Zlib), то будет обычный tar, который можно потом ужать любым другим архиватором. Подводный камень - самое главное, чтобы архив находился вне архивируемой папки, иначе эффект рекурсии :)
 
Сверху