搬瓦工每天定时备份快照
备份是很重要的,最好有多个备份,曾经我只有一个宝塔的自动备份,直到有一天我的数据库被清空了,我才发现,宝塔的备份压根没起作用。
然而最近今天我才发现搬瓦工有自动备份快照的功能,只不过是一周一次,不知道当时有没有这个功能,如果有的话我就可以用这个还原了(虽然我也没看)。
然而一周一备份还是很慢,怎样才能做到一天一备份呢,这就涉及到搬瓦工的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自动创建快照进行备份了,怎么样,是不是很简单