搬瓦工每天定时备份快照

备份是很重要的,最好有多个备份,曾经我只有一个宝塔的自动备份,直到有一天我的数据库被清空了,我才发现,宝塔的备份压根没起作用

然而最近今天我才发现搬瓦工有自动备份快照的功能,只不过是一周一次,不知道当时有没有这个功能,如果有的话我就可以用这个还原了(虽然我也没看)。

然而一周一备份还是很慢,怎样才能做到一天一备份呢,这就涉及到搬瓦工的API功能了,进入搬瓦工的后台,点API进入页面,获取VEID和API KEY,然后在随便一个服务器(我是选在了我自己的服务器)新建一个需要定时执行的脚本,这里我使用的是php脚本:

Class ServiceTools
{
    protected $VEID = '你的veid';
    protected $API_KEY = '你的api_key';
    protected $SERVER_URL = 'https://api.64clouds.com/v1/';
    protected $start_url = '';

    protected $ACTION_STR = '__ACTION__';

    public function __construct()
    {
        $this->start_url = $this->SERVER_URL . $this->ACTION_STR . "?veid={$this->VEID}&api_key={$this->API_KEY}";
    }

    function get_start_url($action)
    {
        $start_url = str_replace($this->ACTION_STR, $action, $this->start_url);

        return $start_url;
    }

    function del_older_file()
    {
        $request = $this->get_start_url('snapshot/list');
        $serviceInfo = json_decode(file_get_contents($request), true);
        $files = [];
        foreach ($serviceInfo['snapshots'] as $snapshot) {
            $filename_array = explode('-', $snapshot['fileName']);
            if ($snapshot['sticky']) {
                continue;
            }
            $files[$filename_array[2]] = $snapshot['fileName'];
        }
        ksort($files);
        if (count($files) >= 3) {
            $del_filename = array_shift($files);
            $this->del_snapshot($del_filename);
        }
        return true;
    }

    function del_snapshot($filename)
    {
        $request = $this->get_start_url('snapshot/delete') . "&snapshot={$filename}";
        $serviceInfo = json_decode(file_get_contents($request), true);
        return $serviceInfo;
    }

    function create_snapshot($description = null)
    {
        $description = $description ?: time();
        $request = $this->get_start_url('snapshot/create') . "&description={$description}";
        $serviceInfo = json_decode(file_get_contents($request));
        return $serviceInfo;
    }

    function run()
    {
        try {
            $this->del_older_file();
            $res = $this->create_snapshot();
            var_dump($res);
        } catch (Exception $exception) {
            var_dump($exception->getMessage());
        }
    }
}

$tools = new ServiceTools();
$files = $tools->run();

然后输入crontab -e,新增一行命令:

30 2 * * *  /usr/bin/php 你的定时脚本路径

重启crontab使之生效:

/etc/init.d/crond restart

这样你的搬瓦工服务器就会在每天凌晨2:30自动创建快照进行备份了,怎么样,是不是很简单

发表回复

您的电子邮箱地址不会被公开。