o cliente acaba de me pedir isso: backup dos dados para o ftp dele. Idéias ?
FTP dele?
O cliente irá te passar os dados do ftp dele para que de sua hospedagem gere o backup e transporte para o ftp dele?
o backup dos dados do cliente geram um arquivo bem grande. Grande o suficiente para dizer que é tolice enviá-lo para o email dele.
a ideia é criar um link (menu) no sistema, e, entao, exportar os dados e enviá-los para o ftp dele, já que ele tem um ftp à parte.
o Cliente não pode fazer download direto para a maquina dele?
lembre-se, será um upload (ftp) do servidor da sua hospedagem para o servidor dele, isso consome banda, e queda na performance de seu servidor.
se for, terá que controlar, para o cliente não ficar lá toda hora gerando backup.
palhaçada…
tem razao !!
é isso. sei lá porque escrevi daquele jeito. Hoje nao to muito legal nao…
obrigado por entender mesmo assim…
Esse é um exemplo de código:
[code]backup_bd(‘localhost’,‘utilizador’,‘password’,‘blog’);
/* Fazer Backup da BD ou só de uma Tabela /
function backup_bd($host,$utilizador,$password,$nome,$tabelas = '’)
{
$link = mysql_connect($host,$utilizador,$password);
mysql_select_db($nome,$link);
//obter todas as tabelas
if($tabelas == '*')
{
$tabelas = array();
$resultado = mysql_query('SHOW TABLES');
while($coluna = mysql_fetch_row($resultado))
{
$tabelas[] = $coluna[0];
}
}
else
{
$tabelas = is_array($tabelas) ? $tabelas: explode(',',$tabelas);
}
foreach($tabelas as $tabelas)
{
$resultado = mysql_query('SELECT * FROM '.$tabelas);
$num_campos = mysql_num_fields($resultado);
$return.= 'DROP TABLE '.$tabelas.';';
$coluna2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$tabelas));
$return.= "\n\n".$coluna2[1].";\n\n";
for ($i = 0; $i < $num_campos; $i++)
{
while($coluna = mysql_fetch_row($resultado))
{
$return.= 'INSERT INTO '.$tabelas.' VALUES(';
for($j=0; $j<$num_campos; $j++)
{
$coluna[$j] = addslashes($coluna[$j]);
$coluna[$j] = ereg_replace("\n","\\n",$coluna[$j]);
if (isset($coluna[$j])) { $return.= '"'.$coluna[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_campos-1)) { $return.= ','; }
}
$return.= ");\n";
}
}
$return.="\n\n\n";
}
//guarda ficheiro
$ficheiro = fopen('bd-backup-'.time().'-'.(md5(implode(',',$tabelas))).'.sql','w+');
fwrite($ficheiro,$return);
fclose($ficheiro);
}[/code]
obrigado haroldo. isso vai servir muito.
estava testando um codigo que achei no google, mas nao teve jeito…
vou testar teu codigo.
obrigado novamente
você pode zipar o arquivo antes de baixar.
e pode isar macros do sc para executar os selects.
do codigo fornecido:
ERRO
Undefined variable: return
implode() [function.implode]: Invalid arguments passed
examinando se entendo e tentando corrigir…
nunca usei esse código, apenas foi um dos que pesquisei na web.
tá explicado…
na verdade eu faço algo diferente, rs.
LuizMarin, sua hospedagem é linux? Permite rodar tarefas no Cron? É MySql?
No meu caso, eu criei um shell script que toda madrugada gera um dump do banco do cliente e disponibiliza pra ele mesmo baixar. Gero um por dia da semana, sempre sobrepondo na semana seguinte.
Se for uma exigência o envio por ftp, talvez vc consiga usando sftp, mas só se sua hospedagem permitir.
Acompanhando.
deseja divagar lentamente sua filosofia a tal inquirição fortuita ?
inteligente ideia tambem… minha hospedagem é linux sim, porem nao sei se posso usar o cron ali. Creio que sim…
todavia, sua ideia me parece interessante. Tal rotina eu já possuia.
o criterio “ftp” descartei no momento.
se quiser expor mais a ideia…
permite usar cron sim. já examinei.
No meu caso criei um shell script
[size=8pt]#!/bin/sh
DIA=date '+%A'
if [ $DIA = “Monday” ]; then
mysqldump -elq -h 127.0.0.1 -u UsuarioDoBanco -pSenhaDoBanco NomeDoBanco > /pasta_download_cliente/segunda/NomeDoBanco.sql
fi
if [ $DIA = “Tuesday” ]; then
mysqldump -elq -h 127.0.0.1 -u UsuarioDoBanco -pSenhaDoBanco NomeDoBanco > /pasta_download_cliente/terca/NomeDoBanco.sql
fi
if [ $DIA = “Wednesday” ]; then
mysqldump -elq -h 127.0.0.1 -u UsuarioDoBanco -pSenhaDoBanco NomeDoBanco > /pasta_download_cliente/quarta/NomeDoBanco.sql
fi
if [ $DIA = “Thursday” ]; then
mysqldump -elq -h 127.0.0.1 -u UsuarioDoBanco -pSenhaDoBanco NomeDoBanco > /pasta_download_cliente/quinta/NomeDoBanco.sql
fi
if [ $DIA = “Friday” ]; then
mysqldump -elq -h 127.0.0.1 -u UsuarioDoBanco -pSenhaDoBanco NomeDoBanco > /pasta_download_cliente/sexta/NomeDoBanco.sql
fi
if [ $DIA = “Saturday” ]; then
mysqldump -elq -h 127.0.0.1 -u UsuarioDoBanco -pSenhaDoBanco NomeDoBanco > /pasta_download_cliente/sabado/NomeDoBanco.sql
fi
if [ $DIA = “Sunday” ]; then
mysqldump -elq -h 127.0.0.1 -u UsuarioDoBanco -pSenhaDoBanco NomeDoBanco > /pasta_download_cliente/domingo/NomeDoBanco.sql
fi
exit 0[/size]
No painel da hospedagem é só criar a tarefa no serviço cron e estipular o horário e dias para executar.
Depois disse passei pra ele a url completa pra ele mesmo baixar os arquivos.
mysqldump –h $HOST –u $USER -p$PASSWORD -A | gzip > $NOME
com o pipe gzip você já pode gerar o dump compactado.
Se ainda quiser enviar via ftp pro cliente, crie outro shell script:
#!/bin/bash
ftp IP_do_cliente << EOF
prompt
put /diretorio_do_cliente/seu_arquivo_backup_destino.sql seu_arquivo_backup_origem.sql
bye
EOF
Você pode criar um script de ftp para cada dia da semana, e no script de backup vc chama o script de ftp correspondente ao dia.