Encontrei aqui no stackoveflow alguns códigos sobre como ZIP um arquivo específico, mas e uma pasta específica?
Folder/
index.html
picture.jpg
important.txt
dentro para dentro My Folder
, existem arquivos. depois de fechar o zíper My Folder
, eu também quero excluir todo o conteúdo da pasta, exceto important.txt
.
Encontrei isso aqui na pilha
Preciso da tua ajuda. obrigado.
Respostas:
Código atualizado em 22/04/2015.
Compacte uma pasta inteira:
Compacte uma pasta inteira e exclua todos os arquivos, exceto "important.txt":
fonte
$zip->close()
não funcionará. Verifique minha resposta aquiExiste um método não documentado útil na classe ZipArchive: addGlob ();
Agora documentado em: www.php.net/manual/en/ziparchive.addglob.php
fonte
addGlob
recursivo?Tente o seguinte:
Isso não será compactado recursivamente.
fonte
My folder
, mas eu também tenho uma pasta dentro de uma pastaMy folder
que me dá um erro de: Permissão negada desvinculando a pasta com emMy folder
if (!is_dir($file) && $file != 'target_folder...')
vez disso. Ou marque a opção @kread answer se quiser compactar recursivamente, é a maneira mais eficiente.My folder
arquivo ainda não foi excluída, mas não há mais erros de qualquer maneira.$zip->close()
não funcionará. Verifique minha resposta aquiPresumo que isso esteja sendo executado em um servidor em que o aplicativo zip esteja no caminho de pesquisa. Deve ser verdade para todos os baseados em unix e acho que a maioria dos servidores baseados em janelas.
O archive residirá em archive.zip posteriormente. Lembre-se de que os espaços em branco nos nomes de arquivos ou pastas são uma causa comum de erros e devem ser evitados sempre que possível.
fonte
Eu tentei com o código abaixo e está funcionando. O código é auto-explicativo. Entre em contato se tiver alguma dúvida.
fonte
ini_set('memory_limit', '512M');
antes da execução do script eini_restore('memory_limit');
no final. Era necessário evitar a falta de memória no caso de pastas pesadas (era uma pasta maior que 500 MB).Esta é uma função que fecha uma pasta inteira e seu conteúdo em um arquivo zip e você pode usá-lo de maneira simples assim:
função:
fonte
Por que não tentar o script EFS PhP-ZiP MultiVolume ... Eu compactuei e transferi centenas de shows e milhões de arquivos ... ssh é necessário para criar arquivos efetivamente.
Mas acredito que os arquivos resultantes podem ser usados com o exec diretamente do php:
Não sei se funciona Eu não tentei ...
"o segredo" é que o tempo de execução do arquivamento não deve exceder o tempo permitido para a execução do código PHP.
fonte
Este é um exemplo prático de criação de ZIPs em PHP:
fonte
Encontrei este post no google como o segundo melhor resultado, primeiro estava usando exec :(
De qualquer forma, embora isso não atendesse exatamente às minhas necessidades. Decidi postar uma resposta para outras pessoas com minha versão rápida, porém extensa.
RECURSOS DO SCRIPT
Enfim, no script .. Embora possa parecer muito .. Lembre-se de que há excesso aqui .. Portanto, sinta-se à vontade para excluir as seções de relatórios conforme necessário ...
Também pode parecer bagunçado também e certas coisas podem ser limpas facilmente ... Portanto, não comente, é apenas um script rápido com comentários básicos lançados .. NÃO PARA USO AO VIVO .. Mas fácil de limpar para uso ao vivo !
Neste exemplo, ele é executado a partir de um diretório que está dentro da pasta raiz www / public_html. Portanto, é necessário apenas subir uma pasta para chegar à raiz.
O QUE ISSO FAZ??
Ele simplesmente compactará o conteúdo completo da variável $ pathBase e armazenará o zip na mesma pasta. Ele faz uma detecção simples para backups anteriores e os ignora.
BACKUP CRON
Este script eu acabei de testar no linux e funcionou bem em um trabalho cron com o uso de uma URL absoluta para o pathBase.
fonte
Use esta função:
Exemplo de uso:
fonte
Use isso está funcionando bem.
fonte
Crie uma pasta zip no PHP.
Método de criação de zip
Chame o método zip
fonte
Eu fiz uma pequena melhoria no script.
fonte
Isso resolverá seu problema. Por favor tente.
fonte
Para quem está lendo este post e procura um porquê compactar os arquivos usando addFile em vez de addFromString, que não compacta os arquivos com seu caminho absoluto (apenas fecha os arquivos e nada mais), veja minha pergunta e resposta aqui
fonte