2013-09-24 2 views
0

В моем Codeigniter Controller у меня есть следующий код, который zip файл резервной копии из базы данных. Проблема в том, что когда я извлекаю zip-файл, вместо одного файла внутри, есть другая папка из пути внутри него.Создание зашифрованного почтового индекса в Codeigniter

$this->load->dbutil(); 
    $this->load->helper('date'); 
    $this->load->helper('file'); 

    set_time_limit(0); 

    $prefs = array(
    'format'  => 'txt',      // gzip, zip, txt 
    'filename'  => 'backup.sql',    // File name - NEEDED ONLY WITH ZIP FILES 
    'add_drop'  => TRUE,      // Whether to add DROP TABLE statements to backup file 
    'add_insert' => TRUE,      // Whether to add INSERT data to backup file 
    'newline'  => "\n"       // Newline character used in backup file 
    ); 


    $backup = $this->dbutil->backup($prefs); 


    $file = FCPATH.'GB_dump_backup/backup.txt'; 
    $zip = FCPATH.'GB_dump_backup/'.now().'backup'; 

    write_file($file, $backup); 

    system('zip -P pass '.$zip.' '.$file .' '); 

Я не уверен, почему zip создает папку пути внутри zip. Я имею в виду вместо того, чтобы просто архивировать backup.txt, это резервное копирование из папки приложения до файла backup.txt. После извлечения файла зип я получаю на рисунке ниже:

enter image description here

ответ

1

zip включает пути к файлам в папке почтового индекса он создает по умолчанию. Добавьте флаг -j в j unk путь и включите файл.

system('zip -j -P pass '.$zip.' '.$file .' '); 

Заканчивать страницу человека для zip для получения дополнительной информации.

$man zip 
... 
    -p 
    --paths 
      Include relative file paths as part of the names of files stored in the ar- 
      chive. This is the default. The -j option junks the paths and just stores 
      the names of the files. 
Смежные вопросы