add sync command

This commit is contained in:
tickstep 2022-06-10 22:39:54 +08:00
parent 979b3d9bde
commit 232ab535ed

View File

@ -35,7 +35,7 @@ func CmdSync() cli.Command {
UsageText: cmder.App().Name + " sync",
Description: `
备份功能指定本地目录和对应的一个网盘目录以备份文件
备份功能支持下三种模式
备份功能支持下三种模式
1. upload
备份本地文件即上传本地文件到网盘始终保持本地文件有一个完整的备份在网盘
2. download
@ -43,61 +43,102 @@ func CmdSync() cli.Command {
3. sync
双向备份保持网盘文件和本地文件严格一致
示例:
1. 启动同步备份任务
aliyunpan-go sync start
请输入以下命令查看如何配置和启动
aliyunpan sync start -h
`,
Category: "阿里云盘",
Before: cmder.ReloadConfigFunc,
Action: func(c *cli.Context) error {
if config.Config.ActiveUser() == nil {
fmt.Println("未登录账号")
return nil
}
dp := c.Int("dp")
if dp == 0 {
dp = config.Config.MaxDownloadParallel
}
if dp == 0 {
dp = 2
}
up := c.Int("up")
if up == 0 {
up = config.Config.MaxUploadParallel
}
if up == 0 {
up = 2
}
downloadBlockSize := int64(config.Config.CacheSize)
if downloadBlockSize == 0 {
downloadBlockSize = int64(256 * 1024)
}
uploadBlockSize := int64(c.Int("ubs") * 1024)
if uploadBlockSize == 0 {
uploadBlockSize = aliyunpan.DefaultChunkSize
}
RunSync(up, dp, uploadBlockSize, downloadBlockSize)
cli.ShowCommandHelp(c, c.Command.Name)
return nil
},
Flags: []cli.Flag{
cli.IntFlag{
Name: "dp",
Usage: "download parallel, 下载并发数量即可以同时并发下载多少个文件。0代表跟从配置文件设置取值范围:1 ~ 10",
Value: 0,
},
cli.IntFlag{
Name: "up",
Usage: "upload parallel, 上传并发数量即可以同时并发上传多少个文件。0代表跟从配置文件设置取值范围:1 ~ 10",
Value: 0,
},
cli.IntFlag{
Name: "ubs",
Usage: "upload block size上传分片大小单位KB。推荐值1024 ~ 10240",
Value: 10240,
Subcommands: []cli.Command{
{
Name: "start",
Usage: "启动sync同步备份任务",
UsageText: cmder.App().Name + " sync start [arguments...]",
Description: `
使用备份配置文件启动sync同步备份任务备份配置文件必须存在不然启动失败
同步备份任务的配置文件保存在(配置目录)/sync_drive/sync_drive_config.json样例如下
{
"configVer": "1.0",
"syncTaskList": [
{
"name": "设计文档备份",
"localFolderPath": "D:\\tickstep\\Documents\\设计文档",
"panFolderPath": "/sync_drive/我的文档",
"mode": "upload"
}
]
}
相关字段说明如下
name - 任务名称
localFolderPath - 本地目录
panFolderPath - 网盘目录
mode - 模式: upload(备份本地文件到云盘),download(备份云盘文件到本地),sync(双向同步备份)
例子:
1. 查看帮助
aliyunpan sync start -h
2. 使用默认配置启动同步备份服务
aliyunpan sync start
3. 启动sync服务并配置下载并发为2上传并发为1上传分片大小为1MB
aliyunpan sync start -dp 2 -up 1 -ubs 1024
`,
Action: func(c *cli.Context) error {
if config.Config.ActiveUser() == nil {
fmt.Println("未登录账号")
return nil
}
dp := c.Int("dp")
if dp == 0 {
dp = config.Config.MaxDownloadParallel
}
if dp == 0 {
dp = 2
}
up := c.Int("up")
if up == 0 {
up = config.Config.MaxUploadParallel
}
if up == 0 {
up = 2
}
downloadBlockSize := int64(config.Config.CacheSize)
if downloadBlockSize == 0 {
downloadBlockSize = int64(256 * 1024)
}
uploadBlockSize := int64(c.Int("ubs") * 1024)
if uploadBlockSize == 0 {
uploadBlockSize = aliyunpan.DefaultChunkSize
}
RunSync(dp, up, downloadBlockSize, uploadBlockSize)
return nil
},
Flags: []cli.Flag{
cli.IntFlag{
Name: "dp",
Usage: "download parallel, 下载并发数量即可以同时并发下载多少个文件。0代表跟从配置文件设置取值范围:1 ~ 10",
Value: 0,
},
cli.IntFlag{
Name: "up",
Usage: "upload parallel, 上传并发数量即可以同时并发上传多少个文件。0代表跟从配置文件设置取值范围:1 ~ 10",
Value: 0,
},
cli.IntFlag{
Name: "ubs",
Usage: "upload block size上传分片大小单位KB。推荐值1024 ~ 10240",
Value: 10240,
},
},
},
},
}