使用 bash 脚本把 GCE 的数据备份到 GCS

1、Google Cloud Storge 介绍

Google Cloud Storage,是 Google Cloud Platform 的一项服务,为普遍的数据类型提供了统一的对象存储,包括活跃数据和存档数据。它可分为中个存储类别:区域、多区域、近线和远线。全部类别都提供了无限数据、用于数据访问的相同工具和 API、OAuth 和细粒度访问控制、访问其余 Google Cloud Storage 服务和按使用付费模式的功能。linux

1.一、四种存储类别的比较

您可能没法立刻肯定咱们四种类别中的哪种适合您的项目。但您能够随意挑选一种开始使用,之后能够轻松切换方案。随着您的需求出现变化,对象生命周期管理功能能够帮助您自动运用各类类别来优化性价比。git

存储类别 Multi-Regional Regional Nearline Coldline
价格 每个月每 GB $0.026 - $0.036 每个月每 GB $0.02 - $0.035 每个月每 GB $0.01 - $0.02 每个月每 GB $0.007 - $0.014
适用场景 适合为频繁访问的数据提供最高的可用性 适合在单个区域内频繁访问的数据 适合访问频率低于一月一次的数据 适合访问频率低于一年一次的数据
冗余 地理位置冗余 区域级,跨可用性地区实现冗余 区域级 区域级
可用性 服务等级协议承诺为 99.95% 服务等级协议承诺为 99.9% 服务等级协议承诺为 99% 服务等级协议承诺为 99%
耐用性 99.999999999% 99.999999999% 99.999999999% 99.999999999%
响应速度 毫秒级访问速度,一致的 API 毫秒级访问速度,一致的 API 毫秒级访问速度,一致的 API 毫秒级访问速度,一致的 API
使用场景 内容存储和分发、业务连续性 在区域内存储数据和进行数据分析 存储不常访问的内容 归档存储、备份和恢复
应用 视频、多媒体、业务连续性 转码、数据分析、计算密集型数据处理 备份长尾内容、极少访问的文档 归档源文件备份、灾难恢复

1.二、需求

咱们如今须要把咱们在 Google 虚拟机上面的文件备份到 GCS(Google Cloud Storage) 上面去,咱们这是使用 Gsutil工具,Gsutil工具是一个经过Google云软件开发工具包提供的Python应用。管理员可使用此工具从命令行中执行存储桶和对象管理任务,例如删除对象和存储桶。web

1.三、给虚拟机添加受权认证

咱们登录到虚拟机上面,默认已经给咱们添加了gsutil命令,若是没有,请安装 Google Cloud SDK
而后咱们登录虚拟机使用命令gcloud auth login进行受权。api

[root@sspanel ~]# gcloud auth login

You are running on a Google Compute Engine virtual machine.
It is recommended that you use service accounts for authentication.

You can run:

  $ gcloud config set account `ACCOUNT`

to switch accounts if necessary.

Your credentials may be visible to others with access to this
virtual machine. Are you sure you want to authenticate with
your personal account?

Do you want to continue (Y/n)?  Y

Go to the following link in your browser:

    https://accounts.google.com/o/oauth2/auth?redirect_uri=uxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.googleapis.com%2Fauth%2Fcloud-platform+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Faptype=offline


Enter verification code:

而后生成随机码,咱们输入到终端,而后就受权完成了。bash

Enter verification code: 4/RQGq4RAUBrp0pA_R3SvuREXyLtczDuy-WLi1sqo23jJhAxEgchEMsos
WARNING: `gcloud auth login` no longer writes application default credentials.
If you need to use ADC, see:
  gcloud auth application-default --help

You are now logged in as [wzlinux18@gmail.com].
Your current project is [proxy1-179115].  You can change this setting by running:
  $ gcloud config set project PROJECT_ID

如今受权已经完成。app

注意:若是您使用的是 Google Cloud Shell 或 Google Compute Engine 实例,则会预先安装并验证 Python 和 gsutil。若是您设置的 Google Compute Engine 实例没有范围限定为 Cloud Storage 的服务账号,请运行 gsutil config 并按照说明操做。工具

2、备份操做

2.1 建立存储分区

存储分区是 Cloud Storage 中用于存放数据的基本容器。
要建立存储分区,请执行如下操做:使用gsutil mb命令建立一个存储分区并为其指定一个惟一的名称:开发工具

[root@sspanel ~]# gsutil mb -l asia-east1 gs://myweb-backup/
Creating gs://myweb-backup/...

咱们也能够在 Google Cloud Platform Console 看到建立的存储分区,能够对存储分区进行详细的设定。测试

好比咱们的数据是不多访问的,能够修改一下存储类别为 Coldline,也能够添加对象生命周期,以节省咱们的空间。

2.2 上传对象到存储分区

命令的操做和咱们平时在 Linux 的操做命令差很少,咱们把个人整个网站目录上传上去,对一些多任务的操做,咱们能够添加一个-m参数。

[root@sspanel wwwroot]# gsutil cp -r www.wzlinux.xyz gs://myweb-backup/
Copying file://www.wzlinux.xyz/index.html [Content-Type=text/html]...
Copying file://www.wzlinux.xyz/404.html [Content-Type=text/html]...             
Copying file://www.wzlinux.xyz/.htaccess [Content-Type=application/octet-stream]...
Copying file://www.wzlinux.xyz/.gitattributes [Content-Type=application/octet-stream]...
- [4 files][  1.6 KiB/  1.6 KiB]                                                
==> NOTE: You are performing a sequence of gsutil operations that may
run significantly faster if you instead use gsutil -m cp ... Please
see the -m section under "gsutil help options" for further information
about when gsutil -m can be advantageous.

Copying file://www.wzlinux.xyz/.gitignore [Content-Type=application/octet-stream]...

而后咱们到 Console 上面查看一下上传的文件,为了增长传输速度,建议你们给文件打包以后再进行传输。

2.3 从存储分区下载对象

下载也很简单,我这里就拿着官方的案例写上吧,偷个懒。

gsutil cp gs://my-awesome-bucket/kitten.png Desktop/kitten2.png
若是操做成功,此命令会返回如下内容:

Copying gs://my-awesome-bucket/kitten.png...
Downloading file://Desktop/kitten2.png:               0 B/164.3 KiB
Downloading file://Desktop/kitten2.png:               164.3 KiB/164.3 KiB

2.4 将对象复制到存储分区的文件夹

gsutil cp gs://my-awesome-bucket/kitten.png gs://my-awesome-bucket/just-a-folder/kitten3.png

2.5 列出存储分区或文件夹内容

gsutil ls gs://my-awesome-bucket

3、备份计划

咱们已经了解了备份的命令,很是简单,那咱们作一个脚本,添加到定时任务中,天天同一时间把数据备份到存储中。

#! /bin/bash
export HOME="/home/wangzan"

cd /root/
tar -zcPf www.wzlinux.xyz$(date +%Y%m%d).tar.gz /www/wwwroot/www.wzlinux.xyz;
/bin/gsutil cp www.wzlinux.xyz$(date +%Y%m%d).tar.gz gs://myweb-backup/;
rm -f www.wzlinux.xyz$(date +%Y%m%d).tar.gz;

添加定时任务,让其天天凌晨2点钟进行备份。

0 2 * * * /home/data/scripts/www_backup.sh

咱们测试了一下,看下效果。

以前一直上传不成功,缺乏一个环境变量HOME,加上就能够,证书在什么路径就加在哪里。

参考文档: https://cloud.google.com/storage/docs/quickstart-gsutil

相关文章
相关标签/搜索