簡體   English   中英

root擁有的文件的file_get_contents

[英]file_get_contents for file owned by root

我正在為我的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獲取備份數據的方法的人,我將非常感激。

為了使任何人都可以使用此線程,我在下面提供了我創建的功能完整的腳本。 它假定您已經創建和共享您與遠程服務器的公共ssh_key(EVBackup在我的情況)所描述的在這里

就我而言,我不得不處理一個額外的麻煩-我正在設置我的第一台服務器,但還要另外幾台。 它們的域名格式為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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM