PDA

View Full Version : سوال: تهییه پشتیبان از دایرکتوریها و فایل ها؟



mrrajabi
چهارشنبه 26 تیر 1387, 15:27 عصر
با سلام خدمت اساتید محترم

من میخوام از سایتم پشتیبان بگیرم,از دیتابیس رو مشکلی ندارم ولی از فایلها و پوشه ها به طوری که پوشه بندیهارو رعایت کنه یکم به مشکل خوردم.



// GRD ZIP ARCHIVER
// by Piotr GRD
// http://grd.go.pl/
// grd@gazeta.pl
// created 2008-05-05
// free to use and modify as long as you keep info above

// requirements: php zip extensions with ZipArchive class

// SETTINGS
// directory you want to compress with everything inside
// . - for root
// folder - for some folder
// folder/subfolder - for some subfolder
// do not add ending slash

$directory = '.';
//$directory = 'folder';

// the name of your zip archive to be created
$zipfile = 'myziparchive.zip';



// DO NOT TOUCH BELOW IF YOU DONT KNOW WHAT IT IS
// all the process below

$filenames = array();

// function that browse the directory and all subdirectories inside

function browse($dir) {
global $filenames;
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && is_file($dir.'/'.$file)) {
$filenames[] = $dir.'/'.$file;
}
else if ($file != "." && $file != ".." && is_dir($dir.'/'.$file)) {
browse($dir.'/'.$file);
}
}
closedir($handle);
}
return $filenames;
}

browse($directory);

// creating zip archive, adding browsed files

$zip = new ZipArchive();

if ($zip->open($zipfile, ZIPARCHIVE::CREATE) !== TRUE) {
exit("cannot open <$zipfile>\n");
}

foreach ($filenames as $filename) {
echo "Adding " . $filename . "<br/>";
$zip->addFile($filename,$filename);
}

echo "numfiles: " . $zip->numFiles . "\n";
echo "status:" . $zip->status . "\n";
$zip->close();


راستش این کدارو گیر آوردم ولی کلاس ziparchive رو پیدا نکردم.هر چی گشتم پیدا نشد.توی همه ی سایتا هم فقط اشاره به این کلاس کردن ولی کدای خود کلاس رو نذاشتن.

حالا میخوام ببینم از عزیزان کسی آدرس این کلاسو داره یا اصلا یه کد پشتیبان گیری آماده هست یا نه؟
با تشکر پیشاپیش

org.kiani
چهارشنبه 26 تیر 1387, 17:04 عصر
سلام دوست عزیز،
ZipArchive یک اکستنشن هست. اگه از ویندوز استفاده میکنید کافیه در فایل php.ini اونو فعال کنید.
توی لینوکس بسته به اینکه php رو از سورس کد نصب کردید یا باینری باید بسته مربوطه رو پیدا کنید و روی سیستم نصب کنید! معمولا توی هاستها این اکستنشن نصب نیست. بنابراین میتونید از کلاسها برای تولید zip استفاده کنید.
تعدادی از این کلاسها در سایت phpclasses.org موجوده!
اینم چندتا از همون کلاسها :

majoran
چهارشنبه 26 تیر 1387, 18:10 عصر
من در مورد سرور های لینوکس خوب متوجه نشدم اگه لطف کنید توضیح کامل در مورد این سرور ها به ما بدهید

org.kiani
چهارشنبه 26 تیر 1387, 18:51 عصر
میشه گفت توی لینوکس نرم افزار ها به دو صورت عمده قابل نصب هستند.
- از کد منبع
- از بسته های باینری
php رو میشه به هر ۲ صورت نصب کرد. نصب از روی بسته باینری که می تونه rpm یا deb باشه مانند نصب installer در ویندوز هست. برای همین اکستنشنهایی مثل ziparchive همراه با php نصب نمیشه. در توزیعی مثل opensuse بسته آر پی ام ziparchive همراه با php در سی دی نصب موجوده.

ولی روش دوم : در این روش کد برنامه آرشیو شده. پس باید بسته رو extract کرد و سورس رو کامپایل کرد.
اگه php اینجوری نصب شده برای فعال کردن اکستنشنی مثل ziparchive باید هنگام کامپایل php از گزینه :
enable-zip--
استفاده کنیم. بعضی اکستنشن ها مثل gd باید اول کتابخونشو نصب کرد و بعد php رو با گزینه های مربوطه کامپایل کرد.
امید وارم مطالبی که ذکر شد اگه مشکلی یا نقصی داره دوستان مطرح کنند. من همیشه توی سیستمم php رو از روی rpm نصب کردم.

vahid4134
چهارشنبه 26 تیر 1387, 19:08 عصر
البته با pecl هم میشه نصب کرد

mrrajabi
چهارشنبه 26 تیر 1387, 23:23 عصر
بله خیلی ممنون بابت جوابها.

من همه ی کارارو کرده بودم جز کار راحترو.

باید php_zip extenssion رو تو Php.ini تنظیم می کردم که نکرد ه بودم.

majoran
پنج شنبه 27 تیر 1387, 09:16 صبح
خوب راهی وجود نداره که بدون تنظیم کردن این اتفاق رخ بده یعنی فایل php.ini رو نخواد تغییر بدیم

org.kiani
پنج شنبه 27 تیر 1387, 11:59 صبح
سلام،
من میتونم استفاده از کلاسهای تولید zip رو بهتون معرفی کنم.
- کافی اون کلاس در هاست قرار بدید.
- include کنید.
- و از متد هاش برای خوندن یا نوشتن فایلهای زیپ استفاده کنید.

۲تا از این کلاسها رو توی همین تاپیک گذاشتم. می تونید چیزای دیگه ای توی http://www.phpclasses.org پیدا کنید. حتی کلاس برای تولید tar !

majoran
پنج شنبه 27 تیر 1387, 12:26 عصر
یعنی این کلاسهایی که معرفی فرمودید بدون دستکاری فایلهای سرور صورت می گیره

org.kiani
پنج شنبه 27 تیر 1387, 13:01 عصر
گرچه این کلاس ها برای کار کردن نیازی به اکستنشن ziparchive ندارن ولی گاهی ممکن از توابعی استفاده کنند که اکستنشن خاصی رو بخواد. مثلا کلاس phpzip (در فایل بالا هست) از تابع gzcompress استفاده میکنه که مربوطه به اکستنشن zlib .