backup para cliente final

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.

http://wiki.tecla.com.br/index.php?title=Backup_no_MySQL

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.