Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Backup files to google drive using PHP

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?

enter image description here enter image description here

// 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/"; 
like image 556
mohamad mohamad Avatar asked Sep 05 '25 08:09

mohamad mohamad


1 Answers

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

like image 183
Vikash Mishra Avatar answered Sep 08 '25 08:09

Vikash Mishra