Cristian Augusto Postado Março 16, 2013 Compartilhar Postado Março 16, 2013 Olá pessoal, tudo certo? Bom, estou com uma pequena ideia, porém irei precisar de um determinado script para executá-la. Do conhecimento de vocês, sabem me dizer se existe algum script em PHP que faça o backup de determinada pasta de conta uma cPanel, compacta a mesma e a envia para outro FTP? Via comando SSH seria possível criar um script utilizando a função ftp, porém em PHP não faço a mínima ideia de como montar algo.. Alguém saberia me ajudar? Obrigado! -- Apenas uma observação. Sim, já tentei scripts do Google, porém a maioria utiliza a função system() para compactar o arquivo em .tar. Esta função está desativada no servidor, por óbvia segurança. Link para o comentário Compartilhar em outros sites More sharing options...
Cristian Augusto Postado Março 16, 2013 Autor Compartilhar Postado Março 16, 2013 Primeiro tópico que eu mesmo resolvo! rs Vamos lá: <? $pasta = '/home/contacpanel/public_html/pasta/'; $pasta_local_backup = 'backups/'; $pasta_remota_backup = 'public_html/backups_novo/'; $arquivo = 'backup-'.date("d.m.y_H-i-s").'.zip'; $servidor = 'ftp.servidor'; // Endereço $usuario = 'usuario'; // Usuário $senha = 'senha'; // Senha $backup = $pasta_local_backup.$arquivo; if(compactar($pasta, $backup)) { echo "Compactado com sucesso.<br>"; if($ftp = ftp_connect($servidor)) echo "Conectado com sucesso.<br>"; else echo "Falha na conexão.<br>"; if($login = ftp_login($ftp, $usuario, $senha)) echo "Logado com sucesso.<br>"; else echo "Falha na autenticação.<br>"; if (($ftp) || ($login)) { $local = $pasta_local_backup.$arquivo; $remoto = $pasta_remota_backup.$arquivo; if($upload = ftp_put($ftp,$remoto,$local,FTP_BINARY)) echo "Enviado com sucesso.<br>"; else echo "Falha no envio.<br>"; } ftp_close($ftp); }else{ echo "Falha na compactação.<br>"; } function compactar($source, $destination) { if (!extension_loaded('zip') || !file_exists($source)) return false; $zip = new ZipArchive(); if (!$zip->open($destination, ZIPARCHIVE::CREATE)) return false; $source = str_replace('\\', '/', realpath($source)); if (is_dir($source) === true) { $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST); foreach ($files as $file) { $file = str_replace('\\', '/', $file); if( in_array(substr($file, strrpos($file, '/')+1), array('.', '..')) ) continue; $file = realpath($file); if (is_dir($file) === true) { $zip->addEmptyDir(str_replace($source . '/', '', $file . '/')); } else if (is_file($file) === true) { $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file)); } } } else if (is_file($source) === true) { $zip->addFromString(basename($source), file_get_contents($source)); } return $zip->close(); } Fiz* este script para compactar determinada pasta de uma conta cPanel, salvar na pasta "backups" e após isso enviar para uma pasta FTP chamada "backups_novo". As alterações devem ser feitas somente no cabeçalho, para operar no modo que planejei. Para finalizar, o código pode ser utilizado como base, ou como preferirem. *Créditos: http://query7.com/tutorial-automated-site-backup-with-php-ftp http://stackoverflow.com/questions/1334613/how-to-recursively-zip-a-directory-in-php?answertab=votes#tab-top Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados