I have a server and a domain name on GoDaddy.
I want to create a backup for my files to be uploaded on Google Drive
So that all my files and my database have their data on Google Drive.
I use PHP
and MySQL
for my database
After some research, I found "Automatically backing up your web server files to GoogleDrive with PHP" and did what he said.
I have downloaded the file google-api-php-client
from the backuptogoogledrive repository.
And I have a client ID, client secret and an authCode
I edited the setting.inc and I put my own client ID, client secret, and authCode. I also put my MySQL
username, password, and hostname.
On this page backuptogoogledrive
it should create a .tar.gz
folder and this folder should contain my website files. Then, this folder should upload to my Google Drive and do the same thing for my database.
<?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 a 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 database
shell_exec("mysqldump -u".$dbuser." -p".$dbpass." ".$dbname." > ".$homedir.$dprefix.$uid.".sql");
shell_exec("gzip ".$homedir.$dprefix.$uid.".sql");
/* SEND FILES TO GOOGLE DRIVE */
$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 authorization code for the 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");
?>
The problem now is that I have two folders for the database and there's no problem with it, and a second folder for the files. But this folder doesn't have any files on it.
How can I solve this problem?
// 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/";
In GoDaddy, or any other platforms. The shared hosting generally do not provide shell access or do not allow ssh access. Many times, you will face issues running command in the shell, as shell executable command are banned by the hosting provider.
This helps them to provide resource to all the shared hosting users in a better way without hampering the isolation of one another.
You can still see options to turn on SSH nad other similar shell access options in different hosting platforms. Refer to the link below to activate SSH on GoDaddy https://in.godaddy.com/help/enable-ssh-for-my-linux-hosting-account-16102
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With