0

我正在尝试使用 codeigniter 创建一个 Web 应用程序,它将在家庭或办公室网络上使用。现在我正在寻找可以从 web protal 完成的备份选项。例如,在我的 htdocs 文件夹中,我有:App1、App2 等。我想直接从 webapp 备份和下载 App1 文件夹,这可以从连接到服务器的任何客户端计算机上完成。可能吗。如果是,那么你能告诉我怎么做吗?~muttalebm

4

3 回答 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 回答