网站首页 > 博客文章 正文
应用场景
1.实现通过go的传参方式备份恢复
2.go学会使用flag库的
3.go函数的传参
4.go脚本实现 minio备份恢复
脚本依赖
1.服务器安装mc命令
脚本使用方法
//进行编译
root@wadequ-ThinkPad-L13:/opt/go/gorm-study# go build minio_back.go
root@wadequ-ThinkPad-L13:/opt/go/gorm-study# ls
go.mod go.sum main.go minio_back minio_back.go select.go
//查看操作参数方法
root@redis-cluster:~/minio-bak# ./minio_back -h
Usage: ./minio_back -bucket_name devminio/bucketname -folder /tmp -buck_type restore/buckup
-buck_type string
请输入你的备份类型buckup/restore (default "buckup")
-bucket_name string
请输入存储通的名称
-folder string
请输入你的备份或者恢复目录 (default "/tmp")
//执行备份以及恢复的命令
root@redis-cluster:~/minio-bak# ./minio_back -bucket_name devminio/test -folder /root/minio-bak-buck_type buckup
root@redis-cluster:~/minio-bak# ./minio_back -bucket_name devminio/test -folder /root/minio-bak -buck_type restore
go脚本
package main
import (
"flag"
"fmt"
"os"
"os/exec"
)
type bucketInfo struct {
Bucket string `json:"bucket"`
Folder string `json:"folder"`
}
func main() {
//命令行参数
var bucket_name string
var folder string
var buck_type string
flag.StringVar(&bucket_name,"bucket_name","","请输入存储通的名称")
flag.StringVar(&folder,"folder","/tmp","请输入你的备份或者恢复目录")
flag.StringVar(&buck_type,"buck_type","buckup","请输入你的备份类型buckup/restore")
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: %s -bucket_name devminio/bucketname -folder /tmp -buck_type restore/buckup\n", os.Args[0])
flag.PrintDefaults()
}
flag.Parse()
if buck_type == "buckup"{
info := bucketInfo{bucket_name,folder}
error := backupMinioDate(info)
if error !=nil {
fmt.Println("执行备份任务失败:",error)
}else {
fmt.Println("执行备份任务成功")
}
}else if buck_type == "restore" {
info := bucketInfo{bucket_name,folder}
error := restoreMinioData(info)
if error !=nil {
fmt.Println("执行恢复任务失败:",error)
}else {
fmt.Println("执行恢复任务成功")
}
}
}
//实现备份
func backupMinioDate(info bucketInfo) error {
fmt.Println("bucket名称:",info.Bucket,"存储目录为:",info.Folder)
cmd := exec.Command("mc","mirror",info.Bucket,info.Folder)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
fmt.Println("Backing up miniO data")
return cmd.Run()
}
//实现还原
func restoreMinioData(info bucketInfo) error {
fmt.Println("bucket名称:",info.Bucket,"恢复的存储目录为:",info.Folder)
cmd := exec.Command("mc","mirror",info.Folder,info.Bucket)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
fmt.Println("Restoring MinIO data...")
return cmd.Run()
}
猜你喜欢
- 2024-10-03 关于go语言中的协程相关知识点总结(三)
- 2024-10-03 详解MS SQL日常维护管理脚本--第二部分
- 2024-10-03 go语言goroutine调度原理以及channel详解
- 2024-10-03 SQL SERVER:索引概述及创建与使用(41)
- 2024-10-03 SQL Server 联接概述(sqlserver连接工具有哪些)
- 2024-10-03 从OOM的角度,带你了解虚拟内存机制
- 2024-10-03 golang开发:select多路选择(golang elseif)
- 2024-10-03 从0开始学Golang编程-基础语法(golang语言基础)
- 2024-10-03 非阻塞的Go channel(非阻塞的症状)
- 2024-10-03 数据库加锁原理举例说明(数据库加锁解锁)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)