使用 bash 脚本把 GCE 的数据备份到 GCS
一、Google Cloud Storge 介绍
Google Cloud Storage,是 Google Cloud Platform 的一项服务,为广泛的数据类型提供了统一的对象存储,包括活跃数据和存档数据。它可分为中个存储类别:区域、多区域、近线和远线。所有类别都提供了无限数据、用于数据访问的相同工具和 API、OAuth 和细粒度访问控制、访问其他 Google Cloud Storage 服务和按使用付费模式的功能。
1.1、四种存储类别的比较
您可能无法马上确定我们四种类别中的哪一种适合您的项目。但您可以随意挑选一种开始使用,以后可以轻松切换方案。随着您的需求出现变化,对象生命周期管理功能可以帮助您自动运用各种类别来优化性价比。
| 存储类别 | 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.2、需求
我们现在需要把我们在 Google 虚拟机上面的文件备份到 GCS(Google Cloud Storage) 上面去,我们这是使用 Gsutil工具,Gsutil工具是一个通过Google云软件开发工具包提供的Python应用。管理员可以使用此工具从命令行中执行存储桶和对象管理任务,例如删除对象和存储桶。
1.3、给虚拟机添加授权认证
我们登陆到虚拟机上面,默认已经给我们添加了gsutil命令,如果没有,请安装 Google Cloud SDK 。
然后我们登陆虚拟机使用命令gcloud auth login进行授权。
[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:

然后生成随机码,我们输入到终端,然后就授权完成了。

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
现在授权已经完成。
注意:如果您使用的是 Google Cloud Shell 或 Google Compute Engine 实例,则会预先安装并验证 Python 和 gsutil。如果您设置的 Google Compute Engine 实例没有范围限定为 Cloud Storage 的服务帐号,请运行 gsutil config 并按照说明操作。
二、备份操作
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
三、备份计划
我们已经了解了备份的命令,非常简单,那我们做一个脚本,添加到定时任务中,每天同一时间把数据备份到存储中。
#! /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
使用 bash 脚本把 GCE 的数据备份到 GCS的更多相关文章
- 使用 bash 脚本把 AWS EC2 数据备份到 S3
目录 一.IAM 秘钥授权方式(普通) 1.1.打开 IAM 1.2.添加用户 1.3.安装和配置 AWS CLI 1.4.配置授权 二.IAM 角色授权方式(安全) 2.1.创建一个 EC2 访问 ...
- 案例:通过shell脚本实现mysql数据备份与清理
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行,实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核,不仅如此,Sh ...
- Linux Bash 脚本:自己定义延迟代码块(裸数据保存方案)
结合 alias 和 read 使用方法.能够保存一些将要延迟执行的脚本,或者裸数据(字符串不被扩展)到一个变量中.以备后用. $ alias BEGIN='read -d "" ...
- 两种适用于中小量数据的mysql数据备份
近来项目的业务量开始大了,感觉如果数据不周期性地备份一下,很可能会出现问题,虽然我每天都有阿里云的自动快照,上网找了一下方法,找到两种相对简单而又适合中小项目或者中小公司的数据备份策略,以下都是数据库 ...
- Linux文件系统应用---系统数据备份和迁移(用户角度)
1 前言 首先承诺:对于从Windows系统迁移过来的用户,困扰大家的 “Linux系统下是否可以把系统文件和用户文件分开到C盘和D盘中” 的问题也可以得到完满解决. 之前的文章对Linux的文 ...
- 开源服务专题之-------rsync数据备份
RSYNC是Remote Sync 远程同步的简称,与SCP的比较,SCP= 无法备份大量数据,类似windows的复制,而rsync=边复制 ,边统计,边比较,可以备份大量数据.可以镜像保存整个目录 ...
- MySQL数据备份之mysqldump使用(转)
mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...
- MySQL(十五)之数据备份中mysqldump详解
前言 其实前面一篇数据备份已经是非常的详细了,这里我想单独的讲解一下mysqldump,相信很多程序员都是用过这个命令的! 一.MySQL数据库的备份与还原 1.1.MySQL数据库备份 1)语法 m ...
- Mysql(六):数据备份、pymysql模块
一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: #1. 测试+链接 ...
随机推荐
- [ 转载 ] Java基础
1.String a = “123”; String b = “123”; a==b的结果是什么? 这包含了内存,String存储方式等诸多知识点.ans:同样序列的字符串直接量为一个实例,所以其实引 ...
- centos ntfs-3g not find
1,CentOS默认源里没有ntfs3g,想要添加ntfs支持,需要自己下载编译安装或者加源yum安装.我这里使用的是添加aliyun的epel源来yum安装的方式. 2,添加epel yum源wge ...
- pandas处理json脱坑(二)--jsonError: Expecting ',' delimiter: line 1 column 2674
Expecting ',' delimiter: line 1 column 2674 json_dict = json.loads(row[json_columns].replace("' ...
- [Google Guava] 3-缓存
原文地址 译文地址 译者:许巧辉 校对:沈义扬 范例 01 LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() ...
- 解决每次执行Java等命令时都要重新source /etc/profile后才能执行,否则找不到命令
linux mint 我们通常将环境变量设置在/etc/profile这个文件中,这个文件是全局的. /etc/profile:在登录时,操作系 统定制用户环境时使用的第一个文件 ,此文件为系统的每个 ...
- 一些特殊的矩阵快速幂 hdu5950 hdu3369 hdu 3483
思想启发来自, 罗博士的根据递推公式构造系数矩阵用于快速幂 对于矩阵乘法和矩阵快速幂就不多重复了,网上很多博客都有讲解.主要来学习一下系数矩阵的构造 一开始,最一般的矩阵快速幂,要斐波那契数列Fn=F ...
- ubuntu14.04重启网卡的三种方法
Linux重启网卡的三种方法: 一.network 利用root帐户 # service network restart 或者/etc/init.d/networking restart 二.ifdo ...
- Flask-第三方插件
Flask-Session 因为flask自带的session是将session存在cookie中: 所以才有了第三方Flask_session插件,可以将session存储在我们想存储的数据库中(r ...
- Fiddler 安装使用
Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获.重发.编辑.转存等操作.也可以用来检测网络安全.反正好处多多,举之不尽呀!当年学习的时候也蛮费劲,一些蛮实用隐藏的小功能 ...
- win10下linux子系统的文件夹的布局
我这里的目录为:C:\Users\com\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\Loca ...