copia de seguridad de archivos en Google Drive usando PHP
Tengo un servidor y un nombre de dominio enVe papi.
Quiero crear una copia de seguridad para que mis archivos se carguen enGoogle Drive
Para que todos mis archivos y mi base de datos tengan sus datos enGoogle Drive.
yo sueloPHP
yMySQL
para mi base de datos
Después de un poco de investigación, encontré "Copia de seguridad automática de los archivos de su servidor web en GoogleDrive con PHP"e hizo lo que dijo.
He descargado los archivosgoogle-api-php-client
desde elrepositorio de backuptogoogledrive.
Y tengo unIdentificación del cliente, secreto del cliente y uncódigo de autenticación
Edité el setting.inc y puse el míoIdentificación del cliente, secreto del cliente ycódigo de autenticación. Yo tambien pongo miMySQL
nombre de usuario, contraseña y nombre de host.
En esta paginabackuptogoogledrive
debería crear un.tar.gz
carpeta y esta carpetadebería contener los archivos de mi sitio web. Entonces, esta carpeta debería subirlo a miGoogle Drive y hago lo mismo para mi base de datos.
<?php
set_time_limit(0);
ini_set('memory_limit', '1024M');
require_once("google-api-php-client/src/Google_Client.php");
require_once("google-api-php-client/src/contrib/Google_DriveService.php");
include("settings.inc.php");
if($authCode == "") die("You need to run getauthcode.php first!\n\n");
/* PREPARE FILES FOR UPLOAD */
// Use the current date/time as unique identifier
$uid = date("YmdHis");
// Create tar.gz file
shell_exec("cd ".$homedir." && tar cf - ".$sitedir." -C ".$homedir." | gzip -9 > ".$homedir.$fprefix.$uid.".tar.gz");
// Dump datamabase
shell_exec("mysqldump -u".$dbuser." -p".$dbpass." ".$dbname." > ".$homedir.$dprefix.$uid.".sql");
shell_exec("gzip ".$homedir.$dprefix.$uid.".sql");
/* SEND FILES TO GOOGLEDRIVE */
$client = new Google_Client();
// Get your credentials from the APIs Console
$client->setClientId($clientId);
$client->setClientSecret($clientSecret);
$client->setRedirectUri($requestURI);
$client->setScopes(array("https://www.googleapis.com/auth/drive"));
$service = new Google_DriveService($client);
// Exchange authorisation code for access token
if(!file_exists("token.json")) {
// Save token for future use
$accessToken = $client->authenticate($authCode);
file_put_contents("token.json",$accessToken);
}
else $accessToken = file_get_contents("token.json");
$client->setAccessToken($accessToken);
// Upload file to Google Drive
$file = new Google_DriveFile();
$file->setTitle($fprefix.$uid.".tar.gz");
$file->setDescription("Server backup file");
$file->setMimeType("application/gzip");
$data = file_get_contents($homedir.$fprefix.$uid.".tar.gz");
$createdFile = $service->files->insert($file, array('data' => $data, 'mimeType' => "application/gzip",));
// Process response here....
print_r($createdFile);
// Upload database to Google Drive
$file = new Google_DriveFile();
$file->setTitle($dprefix.$uid.".sql.gz");
$file->setDescription("Database backup file");
$file->setMimeType("application/gzip");
$data = file_get_contents($homedir.$dprefix.$uid.".sql.gz");
$createdFile = $service->files->insert($file, array('data' => $data, 'mimeType' => "application/gzip",));
// Process response here....
print_r($createdFile);
/* CLEANUP */
// Delete created files
unlink($homedir.$fprefix.$uid.".tar.gz");
unlink($homedir.$dprefix.$uid.".sql.gz");
?>
El problema ahora es que tengo dos carpetas para la base de datos y no hay ningún problema, y una segunda carpeta para los archivos. Pero esta carpeta no tiene ningún archivo.
¿Como puedó resolver esté problema?
// User home directory (absolute)
$homedir = "/home/mhmd2991/public_html/"; // If this doesn't work, you can provide the full path yourself
// Site directory (relative)
$sitedir = "public_html/";