como zipo uma pasta pelo scriptcase?

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
/**

// 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:

  1. em dois horario diferentes (as 11:45 e 17:58) o cron faz uma remessa ao ftp executando o arquivo indicado.
  2. mysqldump faz um backup do banco de dados e grava onde quero (faço um para cada banco, inclusive do scriptcase)
  3. a linha seguinte (7z) compacta o arquivo para outro noe (criptografado), criando o arquivo com o dia da semana
  4. remove o arquivo do dump
  5. joga o arquivo zipado para o ftp
  6. 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