Site de backup sem acesso SQL direto e somente acesso FTP

1
Um site que eu tenho ajudado com está hospedado em um host (não minha escolha) que só fornecem FTP para arquivos (sem acesso ao shell) eo banco de dados só pode ser acessado a partir do próprio host ou phpMyAdmin. p>

O site está sendo executado no Apache com o PHP versão 5.3.13.

Como coisas ruins e imprevistas acontecem em sites de tempos em tempos, eu gostaria de ter um backup do site. Claro que tenho a maior parte da infra-estrutura localmente (esquemas de banco de dados e arquivos-fonte de sites), mas se o site foi invadido ou algo ruim aconteceu, ficaria com um site em branco. Portanto, é claro que preciso fazer backup de todas as mídias enviadas pelo usuário e de todos os dados no banco de dados.

O problema é que eu não tenho certeza de como fazer isso de uma maneira boa quando tudo que eu tenho é acesso FTP e nenhum acesso direto ao banco de dados. Algum conselho sobre como obter um backup automático decente deste site que pode ser executado periodicamente sem muita dificuldade?

    
por Svish 12.06.2012 / 15:31

5 respostas

1

Você pode fazê-lo funcionar com um pouco de hacking (se 'não funcionar abaixo, tente exec , system , passthru , qualquer coisa que você puder). Você também pode desativar essas restrições se trabalhar um pouco, mas não acho que esse é o lugar para discuti-las.

O script seria o seguinte:

<?php
'mysqldump -uUSERNAME -pPASSWORD DATABASE > dump.sql';
'tar -cf backup.tar .';
// Download backup.tar
unlink('backup.tar');
?>

Claro, isso é básico, mas é só para você ter uma ideia. Para protegê-lo, tenha um diretório backup/ que seja protegido por senha com uma configuração .htaccess , para que apenas você possa fazer o download deles com a senha e colocar o backup.tar lá.

Se você tiver esse nível de "acesso ao shell", as possibilidades são infinitas.

    
por 12.06.2012 / 16:03
0

O phpMyAdmin é capaz de exportar um banco de dados, embora as restrições de tamanho e tempo limite possam tornar isso irrealista.

Se você tiver acesso aos arquivos de dados do MySQL por meio do FTP, interromper o banco de dados e, em seguida, copiar os arquivos provavelmente será sua melhor aposta.

    
por 12.06.2012 / 15:52
0

Devido a sua configuração, o backup automático será difícil. O provedor de hospedagem da web tem alguma opção de backup? Capacidade de executar trabalhos cron / agendados? Você provavelmente já sabe, mas o phpMyAdmin pode executar um mysqldump, e com o FTP, você pode pegar seus arquivos, mas isso não é automático.

Em teoria, você poderia programar FTP para sua conta de host e baixar arquivos, e fazer o script do download de um dump de dados MySQL, mas isso é uso ineficiente de tempo e recursos, e isn ' um backup adequado, IMO.

Outra opção que você pode considerar é espelhar seu site localmente ou para outro local de sua escolha usando wget , curl , etc. Isso fornecerá uma versão estática do seu site com os arquivos estáticos e ajudará a restaurar sua site se você precisar. Isso pode ser configurado via cron no seu sistema local, mas é claro, os dados para restaurar o banco de dados não estão incluídos nesta opção.

Para poder restaurar em um determinado momento, você está vendo regularmente backups / snapshots - algo que o provedor de hospedagem precisaria dar a você.

Alguns pensamentos de despedida:

  • Eu ficaria preocupado se meu host da web fornecesse apenas acesso FTP, pois o FTP transmite credenciais em texto não criptografado.
  • Se você espera que coisas ruins aconteçam, faça uma lista delas e veja como você pode resolvê-las. Por exemplo, sftp sobre ftp, senhas strongs, acesso limitado a componentes, etc.
  • Hora de procurar um novo host? (_:

HTH e boa sorte!

    
por 12.06.2012 / 15:53
0

Você pode despejar manualmente o banco de dados no phpMyAdmin em um arquivo no servidor, para evitar problemas de tempo limite de http com a exportação. Gostaria apenas de verificar o painel de controle do host para uma opção para fazer o db dump para o servidor em um agendamento automatizado. Obviamente, isso seria muito melhor! De qualquer forma, uma vez que o db é despejado para o servidor, você pode fazer o backup com os outros dados do sistema de arquivos do aplicativo.

Existem alguns programas que permitem essencialmente fazer um backup incremental no estilo rsync via ftp. Caso contrário, você estará preso fazendo um backup completo a cada vez. Por favor, veja esta questão do ServerFault . Minha experiência com o curlftps, mencionada na parte inferior, é que os tempos de espera / lentidão podem dificultar o backup de arquivos de tamanho médio (por exemplo, mais de 20 MB) - ele tem dificuldade em ler o final do arquivo. Mas, YMMV. Boa sorte!

    
por 12.06.2012 / 19:13
0

Você pode usar um cron-service (veja link ou seu host pode oferecer um) em conjunto com o MySQLDumper ( link ) se você não tiver acesso a um shell.

Se você tiver acesso a um shell (não acredito em sua descrição), recomendo usar mysqldump e cronjobs.

Para o conteúdo dos arquivos, você pode criar um script php que feche tudo, mas ainda precisará baixar esses arquivos por conta própria.

    
por 12.06.2012 / 15:51