Ir para conteúdo
View in the app

A better way to browse. Learn more.

Portal do Host

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Backup Específico - Php Cpanel

Featured Replies

Postado

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.


Postado
  • Autor

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


Visitante
Este tópico está impedido de receber novos posts.

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Informação Importante

Concorda com os nossos termos?

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.