我正在尝试使用 codeigniter 创建一个 Web 应用程序,它将在家庭或办公室网络上使用。现在我正在寻找可以从 web protal 完成的备份选项。例如,在我的 htdocs 文件夹中,我有:App1、App2 等。我想直接从 webapp 备份和下载 App1 文件夹,这可以从连接到服务器的任何客户端计算机上完成。可能吗。如果是,那么你能告诉我怎么做吗?~muttalebm
问问题
2378 次
3 回答
1
这么晚才回复很抱歉。我发现了一个非常简单的内置 codeigniter 备份选项。希望这可以帮助某人
$this->load->library('zip');
$path='C:\\xampp\\htdocs\\CodeIgniter\\';
$this->zip->read_dir($path);
$this->zip->download('my_backup.zip');
我直接从视图中使用代码,然后使用控制器调用它。
~muttalebm
于 2012-12-30T17:37:24.697 回答
1
基本上你想要做的是压缩应用程序文件夹并下载它,这很简单。请查看:
关于如何压缩文件夹以供下载。
如果您没有该扩展名,可以使用一个简单的命令代替,我假设您在 Linux 上运行,如果没有将命令替换为 zip/rar Windows 等效项:
$application_path = 'your full path to app folder without trailing slash';
exec('tar -pczf backup.tar.gz ' . $application_path . '/*');
header('Content-Type: application/tar');
readfile('backup.tar.gz');
注意:尽一切努力保护此文件不被未经授权的用户访问,否则恶意用户将拥有您的站点代码的副本,包括配置详细信息。
于 2012-12-27T07:05:07.227 回答
0
// to intialize the path split the real path by dot .
public function init_path($string){
$array_path = explode('.', $string);
$realpath = '';
foreach ($array_path as $p)
{
$realpath .= $p;
$realpath .= '/';
}
return $realpath;
}
// backup files function
public function archive_folder($source = '' , $zip_name ='' , $save_dir = '' , $download = false){
// Get real path for our folder
$name = 'jpl';
if($zip_name == '')
{
$zip_name = $name."___(".date('H-i-s')."_".date('d-m-Y').")__".rand(1,11111111).".zip";
}
$realpath = $this->init_path($source);
if($save_dir != '')
{
$save_dir = $this->init_path($save_dir);
}else{
if (!is_dir('archives/'))
mkdir('archives/', 0777);
$save_dir = $this->init_path('archives');
}
$rootPath = realpath( $realpath);
// echo $rootPath;
// return;
// Initialize archive object
$zip = new ZipArchive();
$zip->open($save_dir . '\\' . $zip_name, ZipArchive::CREATE | ZipArchive::OVERWRITE);
// Create recursive directory iterator
/** @var SplFileInfo[] $files */
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($rootPath),
RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($files as $name => $file)
{
// Skip directories (they would be added automatically)
if (!$file->isDir())
{
// Get real and relative path for current file
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($rootPath) + 1);
// Add current file to archive
$zip->addFile($filePath, $relativePath);
}
}
// Zip archive will be created only after closing object
$zip->close();
if($download){
$this->download($zip);
}
}
于 2017-03-18T13:48:03.687 回答