写点什么

创建阿里云 OSS 到 GCS 的自动同步

2020 年 3 月 06 日

创建阿里云OSS到GCS的自动同步

当用户需要用 Google Cloud 对象存储 GCS 对阿里云的 OSS 存储做存储备份,以保障数据安全,或者便于使用 Google Cloud CDN 等产品时,可以用本文描述的方法对二者做同步。本文采用 GCE 的虚机作为同步服务器,安装 ossfs 和 gcsfuse 等工具,并使用 rsync 进行定时同步。


准备工作

1.创建好阿里云 OSS 桶,本例为青岛区域的 aliyun-oss-qd-src


2.创建好 Google Cloud GCS 桶,本例为台湾区域的 gcs-tw


3.在 Google Cloud 与 GCS 桶同区域创建一台 GCE 虚机,分配公网 IP 使其可以访问公网,本例使用台湾区域的一台 g1-small (1C1.7GB) 虚机,并使用 Google Cloud 官方 Ubuntu 16 镜像


安装工具和配置同步

1. 安装 ossfs

不同 Linux 发行版的安装步骤可以具体参照阿里云文档


本例的具体步骤如下。


wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_ubuntu16.04_amd64.debsudo apt-get updatesudo apt-get install gdebi-coresudo gdebi your_ossfs_package
复制代码


2. 挂载 OSS 桶

从阿里云控制台获取用户访问密钥 access key。



运行下面命令把 OSS 桶挂载到本地/mnt/ossfs 目录。注意把和替换成有效的 key。


sudo su -echo aliyun-oss-qd-src:<accesskey-id>:<accesskey-secret> > /etc/passwd-ossfschmod 640 /etc/passwd-ossfsmkdir /mnt/ossfsossfs aliyun-oss-qd-src /mnt/ossfs -ourl=http://oss-cn-qingdao.aliyuncs.com
复制代码


往 OSS 桶里添加一个文件,并查看本地挂载目录是否可见。如果可以说明配置正确。


ls /mnt/ossfs/
复制代码


3. 安装 gcsfuse

gcsfuse 是用来把 GCS 桶挂载到 Linux 或 MacOS 的开源工具。具体说明和使用步骤参考代码文档


本例使用以下步骤。命令用 root 用户执行。


export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s`echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.listcurl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -apt-get updateapt-get install gcsfuse
复制代码


4. 挂载 GCS 桶

首先到 GCP 控制台 IAM 界面把 Compute Engine 的默认 Service Account (或其他要使用的 Service Account) 的角色配置增加 Storage Object Admin。




下载配置好的 Service Account 的 key 文件。




将下载的 JSON 格式 key 文件上传到前面的虚机上。最方便的方式是使用网页版 SSH 工具上传。



用下面的命令创建本地文件夹并挂载 GCS 桶。命令中要指定上面下载的 key 文件。命令用 root 用户执行。


mkdir /mnt/gcs-twgcsfuse --key-file /home/eugeneyu/project-key.json gcs-tw /mnt/gcs-tw
复制代码


如果有任何错误,可以增加日志输出,使用下面命令。


gcsfuse --key-file /home/eugeneyu/project-key.json --implicit-dirs --foreground --debug_gcs --debug_fuse gcs-tw /mnt/gcs-tw
复制代码


5. 创建同步

挂载好后用下面命令测试一下手动同步可以成功。


rsync -avu --delete /mnt/ossfs/ /mnt/gcs-tw
复制代码


如果没有问题,创建定时任务。每 5 分钟执行一次。


echo "0,5,10,15,20,25,30,35,40,45,50,55 * * * * root rsync -avu --delete /mnt/ossfs/ /mnt/gcs-tw" > /etc/cron.d/gcs-rsync
复制代码


  1. 配置开机自动挂载存储


上面挂载 OSS 和 GCS 存储桶的命令都只在本次启动有效。虚机重启后会丢失挂载。可以创建下面的脚本保证开机自动挂载。


vim /etc/init.d/mount-storage.sh
复制代码


在 mount-storage.sh 中填入下面内容。


#!/bin/sh
ossfs aliyun-oss-qd-src /mnt/ossfs -ourl=http://oss-cn-qingdao.aliyuncs.comgcsfuse --key-file /home/eugeneyu/project-key.json gcs-tw /mnt/gcs-tw
复制代码


创建不同 runlevel 的 symlink。


update-rc.d mount-storage.sh defaults

复制代码


重启一下并查看挂载成功。


文章版权归作者所有,未经许可不得转载


2020 年 3 月 06 日 21:49558

评论

发布
暂无评论
发现更多内容

第二周总结

等燕归

#第二周作业

vitaminc

从四个问题透析Linux下C++编译&链接

华为云开发者社区

c++ Linux 编程

架构师训练营—第二周学习总结

Geek_shu1988

第 2 周 作业

Pyr0man1ac

架构训练营 - 第 2周课后作业 - 学习总结

Pudding

深入理解JVM垃圾回收算法 - 标记整理算法

WANDEFOUR

标记整理 双指针算法 Lisp2 引线整理算法

金融科技推进数字金融“新基建”,着力建设三种类型数字金融基础设施

CECBC区块链专委会

金融 科技 科技革命

架构师训练营第二周学习总结

薛凯

电商小游戏火爆,开发者如何快速接入?看这里

白开水

egret 淘宝电商 淘宝小程序 淘宝小游戏 电商小游戏

graylog日志分析系统上手教程

MySQL从删库到跑路

Apache Linux 运维 日志分析 实时 Web 日志分析器

OOA-OOD:面向对象分析/设计练习

张荣召

国内首个区块链村正式落地:数字经济的裂变之路

CECBC区块链专委会

区块链 数字经济

请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

orchid9

Java中的遍历(遍历集合或数组的几种方式)

keaper

Java List 遍历

MySQL是如何实现可重复读的?

超超不会飞

MySQL

架构师训练营 - 第 2 周课后作业(1 期)

Pudding

为什么区块链巨头企业一定会诞生在中国的原因分析

CECBC区块链专委会

区块链 科技

架构师训练营 Week2 作业 1

lucian

极客大学架构师训练营

一个草根的日常杂碎(9月26日)

刘新吾

社会百态 生活随想 时评杂谈

案例分析--反应式编程框架Flower的设计

张荣召

作业-2020-09-27

芝麻酱

第二周学习框架设计总结

三板斧

极客大学架构师训练营

架构师训练营第二周心得

CmHuang

架构师训练营 1 期 - 第二周总结(vaik)

行之

第二周课后练习

薛凯

华为:与全球180万云与计算开发者共成长,共创行业新价值

华为云开发者社区

架构师训练营 Week2 作业 2【学习总结】

lucian

极客大学架构师训练营

架构师训练营—第二周作业

Geek_shu1988

第二周

等燕归

[架构师训练营第1期]第二周学习总结

猫切切切切切

极客大学架构师训练营

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

创建阿里云OSS到GCS的自动同步-InfoQ