使用PHP将文件备份到google drive

我在GoDaddy上有一个服务器和一个域名

我想为上传到Google Drive上的文件创建备份

所以我所有的文件和数据库都在谷歌硬盘上

我对我的数据库使用PHPMySQL

经过一些研究,我发现“用PHP自动将您的web服务器文件备份到GoogleDrive”,并照他说的做了

我已经从BackupGoogleDrive存储库下载了文件GoogleAPI php客户端

我有一个客户ID客户机密和一个身份验证码

我编辑了setting.inc,并将我自己的客户端ID客户端密码身份验证码。我还输入了我的MySQL用户名、密码和主机名

在这个页面backuptogoogledrive它应该创建一个.tar.gz文件夹,这个文件夹应该包含我的网站文件。然后,这个文件夹应该上传到我的谷歌硬盘,并对我的数据库做同样的事情

<?php
设置时间限制(0);
ini_集合(“内存限制”,“1024M”);
require_once(“google-api-php-client/src/google_-client.php”);
require_once(“google-api-php-client/src/contrib/google_-DriveService.php”);
包括(“settings.inc.php”);
如果($authCode==“”)死亡(“您需要先运行getauthcode.php!\n\n”);
/*准备要上载的文件*/
//使用当前日期/时间作为唯一标识符
$uid=日期(“YmdHis”);
//创建tar.gz文件
shell_exec(“cd“$homedir.”和tar cf-“$sitedir.”-C“$homedir.”gzip-9>“$homedir.$fprefix.$uid.”.tar.gz”);
//转储数据基
shell_exec(“mysqldump-u..$dbuser.-p..$dbpass...$dbname.>”$homedir.$dprefix.$uid..sql”);
shell_exec(“gzip”$homedir.$dprefix.$uid..sql”);
/*将文件发送到GOOGLEDRIVE*/
$client=新的Google_客户端();
//从API控制台获取您的凭据
$client->setClientId($clientId);
$client->setClientSecret($clientSecret);
$client->setRedirectUri($requestURI);
$client->固定示波器(阵列)https://www.googleapis.com/auth/drive"));
$service=新的谷歌驱动服务($client);
//访问令牌的交换授权代码
如果(!file_存在(“token.json”)){
//保存令牌以备将来使用
$accessToken=$client->身份验证($authCode);
文件内容(“token.json”,$accessToken);
}
else$accessToken=file_get_contents(“token.json”);
$client->setAccessToken($accessToken);
//上传文件到谷歌硬盘
$file=new Google_DriveFile();
$file->setTitle($fprefix.uid..tar.gz”);
$file->setDescription(“服务器备份文件”);
$file->setMimeType(“应用程序/gzip”);
$data=file_get_contents($homedir.$fprefix.$uid..tar.gz);
$createdFile=$service->文件->插入($file,array('data'=>$data,'mimeType'=>'application/gzip',);
//在这里处理响应。。。。
打印文件($createdFile);
//将数据库上载到Google Drive
$file=new Google_DriveFile();
$file->setTitle($dprefix.uid..sql.gz”);
$file->setDescription(“数据库备份文件”);
$file->setMimeType(“应用程序/gzip”);
$data=file_get_contents($homedir.$dprefix.$uid..sql.gz);
$createdFile=$service->文件->插入($file,array('data'=>$data,'mimeType'=>'application/gzip',);
//在这里处理响应。。。。
打印文件($createdFile);
/*清理*/
//删除创建的文件
取消链接($homedir.$fprefix.$uid..tar.gz”);
取消链接($homedir.$dprefix.$uid..sql.gz”);
?>

现在的问题是,我有两个文件夹用于数据库,没有问题,还有一个文件夹用于文件。但此文件夹上没有任何文件

我怎样才能解决这个问题

//用户主目录(绝对)
$homedir=“/home/mhmd2991/public_html/”;//如果这不起作用,您可以自己提供完整的路径
//站点目录(相对)
$sitedir=“public_html/”;

备份脚本似乎无法找到存储站点文件的目录

引用您进行备份时遵循的教程:

//用户主目录(绝对)
$homedir=修剪(shell_exec(“cd~&pwd”)。“/”;/如果这不起作用,您可以自己提供完整的路径
//站点目录(相对)
$sitedir=“www/”;

首先确保正确设置了$sitedir与站点文件目录的相对路径(从主目录)

它可能不同于www/,例如,对于托管在GoDaddy上的网站而言,它可能是public\u html/

如果上述内容正确,请尝试使用主目录的绝对路径手动设置$home变量


更新

$homedir是主目录,$sitedir是相对于$homedir

因此,查看您发布的代码,很可能存在错误,这两个变量应该是:

//用户主目录(绝对)
$homedir=“/home/mhmd2991/”;//<——固定在这里
//站点目录(相对)
$sitedir=“public_html/”;

这假设您的网站根目录是public\u html,并且位于主目录mhmd2991

再次确保您的网站根目录实际上是public\u html,而不是wwwhtml或其他任何内容。使用终端检查它

发表评论