Removendo a estrutura de pastas ao fazer um tar de uma pasta

1

Ok, eu realmente não quero perder mais tempo investigando isso, mas eu quero oferecer uma opção .tar para download em vez de apenas zip.

    $archive = "/home/stevenbu/public_html/temp/".$twitter_name.".tar";
    $directory = "/home/stevenbu/public_html/temp/".$twitter_name;
    exec("tar -cf $archive $directory");

O problema é que quando eu extraio o .tar ele tem 5 pastas de profundidade eu não gostaria de pastas e apenas os arquivos no .tar

Muito obrigado

    
por StevenBullen 23.05.2011 / 15:28

2 respostas

1

Já faz um tempo desde a última vez que usei o php, mas

exec("cd /home/stevenbu/public_html/temp/;tar -cf $archive $directory");

ajudaria no shell.

    
por 23.05.2011 / 15:43
0
$parent = "/home/stevenbu/public_html/temp";
$dir = $twitter_name;
$archive = $twitter_name.".tgz";

exec('tar -cz -f '.escapeshellarg($archive).' -C '.escapeshellarg($parent).' '.escapeshellarg($dir));

Este é um pouco melhor, porque gera o arquivo .tar.gz diretamente no navegador, em vez de criar um arquivo temporário:

$parent = "/home/stevenbu/public_html/temp";
$dir = $twitter_name;
$archive = $twitter_name.".tar.gz";

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.addslashes($archive).'"');
passthru('tar -cz -C '.escapeshellarg($parent).' '.escapeshellarg($dir));
    
por 23.05.2011 / 16:59

Tags