Jump to content

Backup Específico - Php Cpanel


Recommended Posts

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 to comment
Share on other sites

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 to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...