Cristian Augusto Postado Março 16, 2013 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.
Cristian Augusto Postado Março 16, 2013 Autor 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
Posts Recomendados