root拥有的文件的file_get_contents

时间:2014-04-25 07:54:03

标签: php file-permissions file-get-contents

我正在为我的MariaDB服务器设置远程备份(在64位Ubuntu 12.04上运行)。

此过程的第一步很简单 - 我正在使用automysqlbackup,如此处所述。 下一步非常简单 - 我通过SFTP将文件夹 / var / lib / automysqlbackup / daily / dbname 中的最新备份上传到远程备份服务(本例中为EVBackup)。我遇到的唯一问题是这个

automysqlbackup在该文件夹中创建的文件的格式为 dbname_2014-04-25_06h47m.Friday.sql.gz ,并由root拥有。建立最新备份文件的名称不是问题。但是,一旦我得到它,我就无法使用file_get_contents,因为它由 root 用户拥有,并且其权限设置为600.也许有一种方法可以运行一个shell脚本来获取那些内容?在shell脚本方面我是新手。我非常感谢任何能够建议从PHP获取备份数据的人。

1 个答案:

答案 0 :(得分:0)

为了任何遇到这个线程的人的利益,我在下面给出了我创建的全功能脚本。它假设您已经创建并共享了公共ssh_key与远程服务器(在我的情况下为EVBackup),如here所述。

在我的情况下,我不得不处理一个额外的复杂问题 - 我正在设置我的第一台服务器,但还有其他几台服务器。他们的域名的形式为svN.example.com,其中N为1,2,3等。

在我的EVBackup帐户中,我创建了具有相同名称的文件夹,sv1,sv2等。我想创建一个可以安全地从我的任何服务器运行的脚本。这是带有一些注释的脚本

#! /bin/bash
# Backup to EVBackup Server

local="/var/lib/automysqlbackup/daily/dbname"
#replace dbname as appropriate

svr="$(uname -n)"
remote="$(svr/.example.com/)"
#strip out the .example.com bit to get the destination folder on the remote server
remote+="/"

evb="user@user.evbackup.com:"
#user will have to be replaced with your username
evb+=$remote

cmd='rsync -avz -e "ssh -i /backup/ssh_key" '
#your ssh key location may well be different

cmd+=$local
cmd+=$evb
#at this point cmd will be something like
#rsync -avz -e "ssh -i /backup/ssh_key" /home bob@bob.evbackup.com:home-data

eval $cmd