Galera, preciso gerar um zip de uma pasta do c: como forma de backup do sistema!
Alguém sabe me dizer como?
Cara se for BKP de banco mysql esse código abaixo funciona.
De pasta mesmo tenho um em c++ que roda todo dia para fazer bkp`s
Vou pegar ele aki e já postar
[code]<?php
// dados de conexão com o banco de dados a ser backupeado
session_start();
$cliente = “SEU BANCO”;
$usuario = “LOGIN”;
$senha = “SENHA”;
$dbname = $cliente;
// conectando ao banco
mysql_connect(“localhost”,$usuario,$senha) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());
// gerando um arquivo sql. Como?
// a função fopen, abre um arquivo, que no meu caso, será chamado como: nomedobanco.sql
// note que eu estou concatenando dinamicamente o nome do banco com a extensão .sql.
$back = fopen($dbname.".sql",“w”);
// aqui, listo todas as tabelas daquele banco selecionado acima
$res = mysql_list_tables($dbname) or die(mysql_error());
//Em seguida, vamos, verificar quais são as tabelas daquela base, lista-las, e em um laço for, vamos mostrar //cada uma delas, e resgatar as funções de criação da tabela, para serem gravadas no arquivo sql mais adiante.
// resgato cada uma das tabelas, num loop
while ($row = mysql_fetch_row($res)){
$table = $row[0];
if($table != “tblrestorebds”){
// usando a função SHOW CREATE TABLE do mysql, exibo as funções de criação da tabela,
// exportando também isso, para nosso arquivo de backup
$res2 = mysql_query(“SHOW CREATE TABLE $table”);
// digo que o comando acima deve ser feito em cada uma das tabelas
while ( $lin = mysql_fetch_row($res2)){
// instruções que serão gravadas no arquivo de backup
fwrite($back,“DROP TABLE IF EXISTS $table;”);
fwrite($back,"$lin[1] ;");
//Teremos então de pegar os dados que estão dentro de cada campo de cada tabela, e abri-los também para serem //gravados no nosso arquivo de backup.
// seleciono todos os dados de cada tabela pega no while acima
// e depois gravo no arquivo .sql, usando comandos de insert
$res3 = mysql_query(“SELECT * FROM $table”);
while($r=mysql_fetch_row($res3)){
$sql=“INSERT INTO $table VALUES (”;
//Agora vamos pegar cada dado do campo de cada tabela, e executar tarefas como, quebra de linha, substituição //de //aspas, espaços em branco, etc. Deixando o arquivo confiável para ser importado em outro banco de dados.
// este laço irá executar os comandos acima, gerando o arquivo ao final,
// na função fwrite (gravar um arquivo)
// este laço também irá substituir as aspas duplas, simples e campos vazios
// por aspas simples, colocando espaços e quebras de linha ao final de cada registro, etc
// deixando o arquivo pronto para ser importado em outro banco
for($j=0; $j<mysql_num_fields($res3);$j++)
{
if(!isset($r[$j]))
$sql .= " ‘’,";
elseif($r[$j] != “”)
$sql .= " ‘".addslashes($r[$j])."’,";
else
$sql .= " ‘’,";
}
$sql = ereg_replace(",$", “”, $sql);
$sql .= “);\n”;
fwrite($back,$sql);
}
}
}
}
//E finalmente, vamos fechar (internamente, no servidor) o arquivo que geramos, dando um nome para o mesmo, e //gerando o arquivo que será então disponibilizado para download.
// fechar o arquivo que foi gravado
fclose($back);
$arquivosql = $dbname.".sql";
$arquivo = $dbname."-".date(“d-m-Y”).".zip";
/*// gerando o arquivo para download, com o nome do banco e extensão sql.
$arquivo = $dbname.".sql";
Header(“Content-type: application/sql”);
Header(“Content-Disposition: attachment; filename=$arquivo”);
// lê e exibe o conteúdo do arquivo gerado
readfile($arquivo);
*/
$zip = new ZipArchive();
// Zip will open and overwrite the file, rather than try to read it.
$zip->open($arquivo, ZipArchive::CREATE);
$zip->addFile($arquivosql, $arquivosql);
$zip->close();
// Stream the file to the client
header(“Content-Type: application/zip”);
header("Content-Length: " . filesize($arquivo));
header(“Content-Disposition: attachment; filename=$arquivo”);
readfile($arquivo);
?>[/code]
Cara eu não achei o código aqui mano mais funciona assim você se conecta via ftp no servidor ai e baixa os arquivos na maquina.
Caso queira zipar os arquivos pasta usar o Código de zip do acima.
Dei uma pesquisada e encontrei esse código em php.
[code]< ?php
/**
- Conexão via FTP com o PHP
- 05 de maio de 2009
- Thiago Belem ~ http://blog.thiagobelem.net/
*/
// Dados do servidor
$servidor = ‘thiagobelem.net’; // Endereço
$usuario = ‘usuario’; // Usuário
$senha = ‘senha’; // Senha
// Abre a conexão com o servidor FTP
$ftp = ftp_connect($servidor); // Retorno: true ou false
// Faz o login no servidor FTP
$login = ftp_login($ftp, $usuario, $senha); // Retorno: true ou false
// ======
// Define variáveis para o envio de arquivo
$local_arquivo = ‘./arquivos/documento.doc’; // Localização (local)
$ftp_pasta = ‘/public_html/arquivos/’; // Pasta (externa)
$ftp_arquivo = ‘documento.doc’; // Nome do arquivo (externo)
// Envia o arquivo pelo FTP em modo ASCII
$envia = ftp_put($ftp, $ftp_pasta.$ftp_arquivo, $local_arquivo, FTP_ASCII); // Retorno: true / false
// ======
// Define variáveis para o recebimento de arquivo
$local_arquivo = ‘./arquivos/planilha.xls’; // Localização (local)
$ftp_pasta = ‘/public_html/arquivos/’; // Pasta (externa)
$ftp_arquivo = ‘planilha.xls’; // Nome do arquivo (externo)
// Recebe o arquivo pelo FTP em modo ASCII
$recebe = ftp_get($ftp, $ftp_pasta.$ftp_arquivo, $local_arquivo, FTP_ASCII); // Retorno: true / false
?>
[/code]
Estava pensando em compactar a pasta do sistema todo, pq tem várias imagens também e não ficam no banco!
- o script que você passo ai já ajudo, obrigado.
ola
voce usa linux ?
precisa ser especificamente pelo scriptcase?
porque se for backup por fora uso o cron do linux.
caso queira , te passo o codigo aqui.
Interessante o Cron, não conhecia ele!
Existe algum software Windows que faça backup da pasta do sistema?
Algum que você especifique um horário e ele faça um arquivo .zip ou algo do tipo todo dia ou os dias que forem configurados?
pois é amigo,
abandonei o windows em favor do software livre há alguns meses e estou por fora disso, mas com certeza encontrará algo nesse respeito.
no linux eu utilizo o cron que faz o que voce quer. e talvez melhor…
vou te dar um exemplo abaixo como guia (para voce e outros interessados)
note que:
- em dois horario diferentes (as 11:45 e 17:58) o cron faz uma remessa ao ftp executando o arquivo indicado.
- mysqldump faz um backup do banco de dados e grava onde quero (faço um para cada banco, inclusive do scriptcase)
- a linha seguinte (7z) compacta o arquivo para outro noe (criptografado), criando o arquivo com o dia da semana
- remove o arquivo do dump
- joga o arquivo zipado para o ftp
- remove esse arquivo do computador.
as ultimas tres linhas: compactam o diretorio escolhido, ignorando os arquivos do “excluirsrc.txt”, jogam para o ftp e remove o arquivo criado.
a partir dai, é com a imaginação.
…claro que, com a opção de instalar o scriptcase remotamente, voce nao precisaria dessas coisas… (que este é meu proximo passo nessa semana)
abraços
- comandos para “crontab -e”
- coloque os caminhos corretos conforme sua maquina
- observem que “backupmysql.sh” se trata de um arquivo cujo conteudo esta ilustrado abaixo
45 11 * * * /home/usuario/Backup/backupmysql.sh 2>&1 /dev/null
58 17 * * * /home/usuario/Backup/backupmysql.sh 2>&1 /dev/null
- conteudo do arquivo “excluirsrc.txt”
- estes arquivos/pastas serão excluidos do backup
scriptcase/app/*
scriptcase/backup/*
scriptcase/doc/*
scriptcase/examples/*
scriptcase/file/*
scriptcase/install/*
scriptcase/log/*
scriptcase/prod/*
scriptcase/tmp/*
- ARQUIVO "backupmysql.sh
#!/bin/bash
DATA=date | cut -d" " -f1
/usr/bin/mysqldump --databases nome-do-banco-de-dados --quote-names -hlocalhost -uroot -psenha-de-acesso-do-mysql > /home/usuario/Backup/nome-do-banco-de-dados.sql
/usr/bin/7z a -t7z -mx9 -psenha-para-compactação /home/usuario/Backup/sqlnome-do-banco-de-dados-$DATA.7z /home/usuario/Backup/nome-do-banco-de-dados.sql
/bin/rm -f /home/usuario/Backup/nome-do-banco-de-dados.sql
/usr/bin/ncftpput -u’usuario-do-teu-provedor-ftp’ -p’senha-do-teu-provedor-ftp’ ‘ftp.endereço-do-teu-provedor-ftp.com.br’ chn/ /home/usuario/Backup/sqlnome-do-banco-de-dados-$DATA.7z
/bin/rm -f /home/usuario/Backup/sqlnome-do-banco-de-dados-$DATA.7z
/usr/bin/7z a -t7z -mx9 -psenha-de-compactação -x@excluirscr.txt /home/usuario/Backup/prjscriptcase-$DATA.7z /opt/nm/www/scriptcase/
/usr/bin/ncftpput -u’usuario-do-teu-provedor-ftp’ -p’senha-do-teu-provedor-ftp’ ‘ftp.endereço-do-teu-provedor-ftp.com.br’ chn/ /home/usuario/Backup/prjscriptcase-$DATA.7z
/bin/rm -f /home/usuario/Backup/prjscriptcase-$DATA.7z
Synckback free