GithubHelp home page GithubHelp logo

tickstep / aliyunpan Goto Github PK

View Code? Open in Web Editor NEW
3.7K 33.0 332.0 5.31 MB

阿里云盘命令行客户端,支持JavaScript插件,支持同步备份功能。

License: Apache License 2.0

Shell 1.28% Go 98.03% Batchfile 0.40% Dockerfile 0.29%
linux macos windows backup sync adrive

aliyunpan's Introduction

关于

阿里云盘CLI。仿 Linux shell 文件处理命令的阿里云盘命令行客户端,支持JavaScript插件,支持同步备份功能,支持相册批量下载。

特色

  1. 多平台支持, 支持 Windows, macOS, linux(x86/x64/arm), android, iOS 等
  2. 阿里云盘多用户支持
  3. 支持同步盘,资源库无缝切换
  4. 下载网盘内文件, 支持多个文件或目录下载, 支持断点续传和单文件并行下载。支持软链接(符号链接)文件。
  5. 上传本地文件, 支持多个文件或目录上传,支持排除指定文件夹/文件(正则表达式)功能。支持软链接(符号链接)文件。
  6. 同步备份功能支持备份本地文件到云盘,备份云盘文件到本地,双向同步备份保持本地文件和网盘文件同步。常用于嵌入式或者NAS等设备,支持docker镜像部署。
  7. 命令和文件路径输入支持Tab键自动补全,路径支持通配符匹配模式
  8. 支持JavaScript插件,你可以按照自己的需要定制上传/下载中关键步骤的行为,最大程度满足自己的个性化需求
  9. 支持个人相册的相关操作,支持批量下载相册所有照片、视频文件到本地

目录

如何安装

直接下载安装

可以直接在本仓库 发布页 下载安装包,解压后使用。

要特别注意安装包的标签,不同的标签对应不同架构的系统,相关版本文件的标签说明如下:

  1. arm / armv5 / armv7 : 适用32位ARM系统
  2. arm64 : 适用64位ARM系统
  3. 386 / x86 : 适用32系统,包括Intel和AMD的CPU系统
  4. amd64 / x64 : 适用64位系统,包括Intel和AMD的CPU系统
  5. mips : 适用MIPS指令集的CPU,例如中标麒麟的系统。MIPS要注意大小端字序的不同对应的版本也不同。
  6. macOS amd64适用Intel CPU的机器,macOS arm64目前主要是适用苹果M系列芯片的机器
  7. iOS arm64适用iPhone手机,并且必须是越狱的手机才能正常运行
  8. loong64 : 适用于LoongArch64架构的机器,例如国产龙芯CPU

参考例子:

wget https://github.com/tickstep/aliyunpan/releases/download/v0.3.1/aliyunpan-v0.3.1-linux-amd64.zip
unzip aliyunpan-v0.3.1-linux-amd64.zip
cd aliyunpan-v0.3.1-linux-amd64
./aliyunpan

apt安装

适用于apt包管理器的系统,例如Ubuntu,国产deepin深度操作系统等。目前只支持amd64和arm64架构的机器。

sudo curl -fsSL http://file.tickstep.com/apt/pgp | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/tickstep-packages-archive-keyring.gpg > /dev/null && echo "deb [signed-by=/etc/apt/trusted.gpg.d/tickstep-packages-archive-keyring.gpg arch=amd64,arm64] http://file.tickstep.com/apt aliyunpan main" | sudo tee /etc/apt/sources.list.d/tickstep-aliyunpan.list > /dev/null && sudo apt-get update && sudo apt-get install -y aliyunpan
 

yum安装

适用于yum包管理器的系统,例如CentOS、RockyLinux等。目前只支持amd64和arm64架构的机器。

sudo curl -fsSL http://file.tickstep.com/rpm/aliyunpan/aliyunpan.repo | sudo tee /etc/yum.repos.d/tickstep-aliyunpan.repo > /dev/null && sudo yum install aliyunpan -y
 

brew安装

适用于brew包管理器的系统,主要是苹果macOS系统。目前只支持amd64和arm64架构(Apple Silicon)的机器。

brew install aliyunpan
    

由于brew默认安装在系统目录下面,这样配置文件也默认存放在系统目录里了,建议设置系统变量进行配置文件的单独存储,例如

export ALIYUNPAN_CONFIG_DIR=/Users/tickstep/Applications/adrive/config

winget安装

适用于Windows系统的winget包管理器。目前只支持x86和x64架构的机器。

更新源(可选)

winget source update
 

安装

winget install tickstep.aliyunpan --silent
 

docker安装

sync同步盘

同步备份功能,支持备份本地文件到云盘,备份云盘文件到本地两种模式。支持JavaScript插件对备份文件进行过滤。 备份功能支持以下模式:

  1. 备份本地文件,即上传本地文件到网盘,始终保持本地文件有一个完整的备份在网盘
  2. 备份云盘文件,即下载网盘文件到本地,始终保持网盘的文件有一个完整的备份在本地

备份功能支持指定备份策略:

  1. exclusive,排他备份文件(一比一镜像备份),目标目录多余的文件会被删除。保证备份的源目录,和目标目录文件一比一备份。源目录文件如果文件被删除,则对应的目标目录的文件也会被删除。
  2. increment,增量备份文件,目标目录多余的文件不会被删除。只会把源目录修改的文件,新增的文件备份到目标目录。如果源目录有文件删除,或者目标目录有其他文件新增是不会被删除。

同步的基本逻辑如下所示,一次循环包括:扫描-对比-执行,一共三个环节。

docker run -d --name=aliyunpan-sync --restart=always -v "<your aliyunpan_config.json>:/home/app/config/aliyunpan_config.json" -v "<your local dir>:/home/app/data" -e ALIYUNPAN_PAN_DIR="<your drive pan dir>" -e ALIYUNPAN_SYNC_MODE="upload" -e ALIYUNPAN_SYNC_POLICY="increment" -e ALIYUNPAN_SYNC_DRIVE="backup" -e ALIYUNPAN_SYNC_LOG="true" tickstep/aliyunpan-sync:v0.3.1 
  
<your aliyunpan_config.json>: 用户已经登录成功并保存好的aliyunpan_config.json凭据文件
<your local dir>:本地目标目录,绝对路径,例如:/tickstep/Documents/设计文档
ALIYUNPAN_PAN_DIR:云盘目标目录,绝对路径
ALIYUNPAN_SYNC_MODE:备份模式,支持: upload(备份本地文件到云盘),download(备份云盘文件到本地)
ALIYUNPAN_SYNC_POLICY:备份策略,支持:exclusive(排他备份文件,目标目录多余的文件会被删除),increment(增量备份文件,目标目录多余的文件不会被删除)
ALIYUNPAN_SYNC_DRIVE: 网盘,支持:backup(备份盘), resource(资源盘)
ALIYUNPAN_SYNC_LOG: 同步日志,true-开启同步日志显示,false-关闭同步日志

docker-compose启动方式请查看:docker-compose.yml
更详情文档请参考dockerhub网址:tickstep/aliyunpan-sync

如何使用

完整和详细的命令说明请查看手册:命令手册

  1. Windows 程序应在 命令提示符 (Command Prompt) 或 PowerShell 中运行.
    也可直接双击程序运行, 具体使用方法请参见 命令列表及说明

  2. Linux / macOS 程序应在 终端 (Terminal) 运行.
    具体使用方法请参见 命令列表及说明

如果程序运行时输出乱码, 请检查下终端的编码方式是否为 UTF-8.

如果没有带任何参数运行程序, 程序将会进入仿Linux shell系统用户界面的CLI交互模式, 可直接运行相关命令.
在交互模式下, 光标所在行的前缀应为 aliyunpan >, 如果登录了帐号则格式为 aliyunpan:<工作目录> <用户昵称>$

程序内置了相关命令的使用说明,你可以通过运行命令 -h的方式获取命令的使用说明,例如:upload -h获取上传命令的使用说明。

基本使用

本程序支持阿里云盘大多数命令操作,这里只介绍基本的使用,更多更详细的命令请查看手册:命令手册

修改配置目录

你可以指定程序配置文件的存储路径,如果没有指定,程序会使用默认的目录。
方法为设置环境变量ALIYUNPAN_CONFIG_DIR并指定一个存在的目录,例如linux下面可以这样指定

export ALIYUNPAN_CONFIG_DIR=/home/tickstep/tools/aliyunpan/config

启动程序

直接启动进入交互命令行

[tickstep@MacPro ~]$ aliyunpan
提示: 方向键上下可切换历史命令.
提示: Ctrl + A / E 跳转命令 首 / 尾.
提示: 输入 help 获取帮助.
aliyunpan > 

查看帮助

aliyunpan > help

...
   阿里云盘:
     album, abm   相簿(Beta)
     cd           切换工作目录
     download, d  下载文件/目录
     ls, l, ll    列出目录
     mkdir        创建目录
     mv           移动文件/目录
     pwd          输出工作目录
     recycle      回收站
     rename       重命名文件
     rm           删除文件/目录
     share        分享文件/目录
     sync         同步备份功能
     upload, u    上传文件/目录
...

登录

需要先登录,已经登录过的可以跳过此步。登录是在浏览器上进行,你需要进行两次登录。

aliyunpan > login
请在浏览器打开以下链接进行登录,链接有效时间为5分钟。
注意:你需要进行一次授权一次扫码的两次登录。
https://openapi.alipan.com/oauth/authorize?client_id=cf9f70e8fc61430f8ec5ab5cadf31375&redirect_uri=https%3A%2F%2Fapi.tickstep.com%2Fauth%2Ftickstep%2Faliyunpan%2Ftoken%2Fopenapi%2F8206f0.....fb5db6b40336%2Fauth&scope=user:base,file:all:read,file:all:write
阿里云盘登录成功:  tickstep
aliyunpan:/ tickstep$ 

切换网盘

支持切换备份盘、资源库,默认工作在备份盘下。

aliyunpan:/ tickstep(备份盘)$ drive
  #   DRIVE ID   网盘名称  
  1    11519221   备份盘   
  2  1311893110   资源库   
  
输入要切换的网盘 # 值 > 2
切换到网盘:资源库                     
aliyunpan:/ tickstep(资源库)$ 

查看文件列表

aliyunpan:/ tickstep$ ls

  #  文件大小       修改日期               文件(目录)                             
  0         -  2021-11-03 13:32:22  临时/                     
  1         -  2021-07-10 07:44:34  好友的分享/               
  2         -  2021-07-09 22:11:22  我的项目/                 
  3         -  2021-07-09 22:10:37  我的游戏/       
  4         -  2021-07-09 22:10:10  我的文档/       
  5  349.86KB  2021-06-06 11:46:02  使用统计.xls                                            
  6  503.57KB  2021-06-06 11:46:02  IMG_0098.JPG                                            
  7   72.20KB  2021-06-06 11:46:02  IMG_0103.PNG 
       总: 3.20MB                   文件总数: 3, 目录总数: 7  
----

下载文件

aliyunpan:/ tickstep$ download IMG_0106.JPG

[0] 当前文件下载最大并发量为: 5, 下载缓存为: 64.00KB
[1] 加入下载队列: /IMG_0106.JPG
[1] ----
文件ID: 60bc44f855814e19692a4958b4a8823a1a06e5de
文件名: IMG_0106.JPG
文件类型: 文件
文件路径: /IMG_0106.JPG

[1] 准备下载: /IMG_0106.JPG
[1] 将会下载到路径: /root/Downloads/4d001d48564f43b..62874f04bbe6/IMG_0106.JPG
[1] 下载开始
[1] ↓ 704.00KB/1.48MB 0B/s(1.69MB/s) in 1.88s, left - ............
[1] 下载完成, 保存位置: /root/Downloads/4d001d48564f43b..62874f04bbe6/IMG_0106.JPG
[1] 检验文件有效性成功: /root/Downloads/4d001d48564f43b..62874f04bbe6/IMG_0106.JPG

下载结束, 时间: 4秒, 数据总量: 1.48MB
aliyunpan:/ tickstep$ 

上传文件

aliyunpan:/ tickstep$ upload /Users/tickstep/Downloads/apt.zip /tmp

[0] 当前文件上传最大并发量为: 10, 上传分片大小为: 10.00MB
[1] 加入上传队列: /Users/tickstep/Downloads/apt.zip
[1] 2022-08-13 13:41:22 准备上传: /Users/tickstep/Downloads/apt.zip => /tmp/apt.zip
[1] 2022-08-13 13:41:22 正在检测和创建云盘文件夹: /tmp
[1] 2022-08-13 13:41:22 正在计算文件SHA1: /Users/tickstep/Downloads/apt.zip
[1] 2022-08-13 13:41:22 检测秒传中, 请稍候...
[1] 2022-08-13 13:41:22 秒传失败,开始正常上传文件
[1] ↑ 21.00MB/21.00MB 702.53KB/s(702.70KB/s) in 15s ............
[1] 2022-08-13 13:41:22 上传文件成功, 保存到网盘路径: /tmp/apt.zip
[1] 2022-08-13 13:41:22 文件上传结果: 成功! 耗时 18秒

上传结束, 时间: 18秒, 数据总量: 21.00MB

同步备份文件

同步备份功能,支持备份本地文件到云盘,备份云盘文件到本地,双向同步备份三种模式。支持JavaScript插件对备份文件进行过滤。

例如:将本地目录 /tickstep/Documents/设计文档 中的文件备份上传到云盘目录 /备份盘/我的文档

aliyunpan:/ tickstep$ sync start -ldir "/tickstep/Documents/设计文档" -pdir "/备份盘/我的文档" -mode "upload" -drive "backup"

启动同步备份进程
备份配置文件:(使用命令行配置)
链接类型:默认链接
下载并发:2
上传并发:2
下载分片大小:1.00MB
上传分片大小:10.00MB

启动同步任务
任务: 设计文档(de3d6b69a607497b73624bcca0845f19)
同步模式: 备份本地文件(只上传)
本地目录: /tickstep/Documents/设计文档
云盘目录: /备份盘/我的文档

更多命令

更多更详细的命令请查看手册:命令手册

常见问题

如何开启Debug调试日志

当需要定位问题,或者提交issue的时候抓取log,则需要开启debug日志。步骤如下:

第一步

Linux&MacOS
命令行运行

export ALIYUNPAN_VERBOSE=1

Windows
不同版本会有些许不一样,请自行查询具体方法
设置示意图如下:

第二步

打开aliyunpan命令行程序,任何云盘命令都有类似如下日志输出

如何登出和下线客户端

阿里云盘单账户最多只允许同时登录 10 台设备
当出现这个提示:你账号已超出最大登录设备数量,请先下线一台设备,然后重启本应用,才可以继续使用
说明你的账号登录客户端已经超过数量,你需要先登出其他客户端才能继续使用,如下所示

APP手机端
Web网页端

交流反馈

提交issue: issues页面
联系邮箱: [email protected]

鸣谢

本项目大量借鉴了以下相关项目的功能&成果

tickstep/aliyunpan-api
tickstep/cloudpan189-go
kazutoiris/ali_ecc

aliyunpan's People

Contributors

reveever avatar sowevo avatar stamhe avatar tickstep avatar xiaoyaofenfen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aliyunpan's Issues

错误 syntax error near unexpected token `newline'

您好 下载您的aliyunpan-v0.0.5-freebsd-amd64.zip版本
chmod 777 aliyunpan

运行 ./aliyunpan
显示
./aliyunpan: line 1: syntax error near unexpected token newline' ./aliyunpan: line 1: '

我的机器
uname -a:
Linux d6d2a1500408f011ec08bb20f3128d160513-dingjh179-0 4.15.0-45-generic #48~16.04.1-Ubuntu SMP Tue Jan 29 18:03:48 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

backup正常上传文件报错

设备树莓派4B,经常上传到一半就报这个错,而且报错之前会长时间0KB/s

[2] 秒传失败,开始正常上传文件
[2] ↑ 181.56MB/314.13MB 288.04KB/s in 27m9s ............panic: runtime error: slice bounds out of range [:131072] with capacity 65536

goroutine 35080 [running]:
bufio.(*Reader).Read(0x240ac90, 0x4700000, 0x8000, 0x8000, 0xa6a9b570, 0x0, 0x3ff)
	/usr/local/go/src/bufio/bufio.go:238 +0x3e8
github.com/tickstep/aliyunpan/internal/file/uploader.(*bufioFileBlock).Read(0x1f88118, 0x4700000, 0x8000, 0x8000, 0x8000, 0x4700000, 0x1c80000)
	/Users/tickstep/Documents/Workspace/go/projects/aliyunpan/internal/file/uploader/block.go:80 +0x38
io.(*LimitedReader).Read(0x2015e50, 0x4700000, 0x8000, 0x8000, 0x0, 0x468c00, 0xa6b5bf48)
	/usr/local/go/src/io/io.go:473 +0xb8
io.copyBuffer(0xa6b5bf48, 0x1dc7000, 0x502f6c, 0x2015e50, 0x4700000, 0x8000, 0x8000, 0x418b08, 0x435b80, 0x18e01, ...)
	/usr/local/go/src/io/io.go:423 +0xd8
io.Copy(...)
	/usr/local/go/src/io/io.go:382
net/http.persistConnWriter.ReadFrom(0x22fc3c0, 0x502f6c, 0x2015e50, 0xa6b5bf30, 0x22fc3c0, 0x418b01, 0x44f130)
	/usr/local/go/src/net/http/transport.go:1768 +0x68
bufio.(*Writer).ReadFrom(0x1c0b000, 0x502f6c, 0x2015e50, 0xa6c6e4a8, 0x1c0b000, 0x2015e01, 0x10)
	/usr/local/go/src/bufio/bufio.go:730 +0x31c
io.copyBuffer(0x502814, 0x1c0b000, 0x502f6c, 0x2015e50, 0x0, 0x0, 0x0, 0xa6c6e460, 0x0, 0x200, ...)
	/usr/local/go/src/io/io.go:409 +0x340
io.Copy(...)
	/usr/local/go/src/io/io.go:382
net/http.(*transferWriter).doBodyCopy(0x218e9b0, 0x502814, 0x1c0b000, 0x502f6c, 0x2015e50, 0x1dc7114, 0x1dc71d0, 0x1dc7114, 0x497350)
	/usr/local/go/src/net/http/transfer.go:409 +0x48
net/http.(*transferWriter).writeBody(0x218e9b0, 0x502814, 0x1c0b000, 0x0, 0x0)
	/usr/local/go/src/net/http/transfer.go:367 +0x6c8
net/http.(*Request).write(0x1cca700, 0x502814, 0x1c0b000, 0x0, 0x1c0b020, 0x0, 0x0, 0x0)
	/usr/local/go/src/net/http/request.go:697 +0x5b8
net/http.(*persistConn).writeLoop(0x22fc3c0)
	/usr/local/go/src/net/http/transport.go:2385 +0x140
created by net/http.(*Transport).dialConn
	/usr/local/go/src/net/http/transport.go:1744 +0x9d0

作为NAS同步 备份 提示 “警告: 遍历错误: lstat sync: no such file or directory”

使用过aliyunpan upload sync 和 aliyunpan upload delte 均有 “警告: 遍历错误” 报错, 最终导致了 每个文件都重复了
我不确定是不是我设置有问题 设置 也贴在了下方

root@debian:~# aliyunpan upload sync /mnt/ldisk/sync/DDL-DESKTOP01-DDL/学习/CCNA /sync
警告: 遍历错误: lstat sync: no such file or directory
2021-10-10 13:31:57 [1] 加入上传队列: /mnt/ldisk/sync/DDL-DESKTOP01-DDL/学习/CCNA/ACL.png
2021-10-10 13:31:57 [2] 加入上传队列: /mnt/ldisk/sync/DDL-DESKTOP01-DDL/学习/CCNA/CLI帮助.png
2021-10-10 13:31:57 [3] 加入上传队列: /mnt/ldisk/sync/DDL-DESKTOP01-DDL/学习/CCNA/IP地址基础-二进制.png
2021-10-10 13:31:57 [4] 加入上传队列: /mnt/ldisk/sync/DDL-DESKTOP01-DDL/学习/CCNA/RIP.txt
2021-10-10 13:31:57 [5] 加入上传队列: /mnt/ldisk/sync/DDL-DESKTOP01-DDL/学习/CCNA/STP.txt
2021-10-10 13:31:57 [6] 加入上传队列: /mnt/ldisk/sync/DDL-DESKTOP01-DDL/学习/CCNA/vlan.txt
2021-10-10 13:31:57 [7] 加入上传队列: /mnt/ldisk/sync/DDL-DESKTOP01-DDL/学习/CCNA/vtp.txt
2021-10-10 13:31:57 [8] 加入上传队列: /mnt/ldisk/sync/DDL-DESKTOP01-DDL/学习/CCNA/工程三招.png
[4] 准备上传: /mnt/ldisk/sync/DDL-DESKTOP01-DDL/学习/CCNA/RIP.txt=>/sync/CCNA/RIP.txt
[3] 准备上传: /mnt/ldisk/sync/DDL-DESKTOP01-DDL/学习/CCNA/IP地址基础-二进制.png=>/sync/CCNA/IP地址基础-二进制.png
[2] 准备上传: /mnt/ldisk/sync/DDL-DESKTOP01-DDL/学习/CCNA/CLI帮助.png=>/sync/CCNA/CLI帮助.png
[1] 准备上传: /mnt/ldisk/sync/DDL-DESKTOP01-DDL/学习/CCNA/ACL.png=>/sync/CCNA/ACL.png
[4] 检测秒传中, 请稍候...
[4] 秒传失败,开始正常上传文件
...................................................以下省略

设置情况
root@debian:~# aliyunpan config

运行 aliyunpan config set 可进行设置配置

当前配置:
名称 值 建议值 描述
cache_size 0B 1KB ~ 256KB 下载缓存, 如果硬盘占用高或下载速度慢, 请尝试调大此值
max_download_parallel 0 1 ~ 64 最大下载并发量
max_upload_parallel 4 1 ~ 100 最大上传并发量,即同时上传文件最大数量
max_download_load 0 1 ~ 5 同时进行下载文件的最大数量
max_download_rate 不限制 限制最大下载速度, 0代表不限制
max_upload_rate 2.00MB/s 限制最大上传速度, 0代表不限制
savedir /mnt/mdisk/alidown 下载文件的储存目录
proxy 设置代理, 支持 http/socks5 代理,例如:http://127.0.0.1:8888
local_addrs 设置本地网卡地址, 多个地址用逗号隔开

Docker-Compose安装,如何切换到相册网盘?

切换网盘
程序默认工作在文件网盘下,如需切换到相册网盘,可以使用本命令进行切换。

aliyunpan drive
aliyunpan drive

输入要切换的网盘 # 值 >

WebDav挂载显示的文件网盘。能切换到相册网盘吗?

backup 命令无效

执行aliyunpan backup local_file.txt /remote_folder 时,返回空值,进程并未执行
执行aliyunpan upload local_file.txt /remote_folder 则没问题
是否backup 命令需要修复一下?

准备长时间下载,结果不久就下载失败了。

不知道为什么下载的时候下着下着就失败了。有时候下载1个多小时就失败了,有时候下载4,5小时就不行了。附件中的前4个图是晚上下载了4个多小时就下失败了的截图,后面4张是早上重新执行下载,然后支上班了,回来一看,只下载了1个多小时就失败了。白费了一天时间。最后一张是设置的参数情况。我使用的系统是debian 10
2021-12-17 06-40-22屏幕截图
2021-12-17 06-40-45屏幕截图
2021-12-17 06-41-25屏幕截图
2021-12-17 06-41-57屏幕截图
2021-12-17 20-27-43屏幕截图
2021-12-17 20-28-02屏幕截图
2021-12-17 20-28-44屏幕截图
2021-12-17 20-28-58屏幕截图
2021-12-17 20-35-18屏幕截图

上传过程时不时出现这种错误

centos7系统

[1] 准备上传: /home/down/apache_1.3.22-powerpc-apple-darwin1.4.tar.gz=>/download/apache_1.3.22-powerpc-apple-darwin1.4.tar.gz
[1] 检测秒传中, 请稍候...
[1] 秒传失败,开始正常上传文件
[1] ↑ 3.35MB/3.35MB 18.00KB/s in 4m41s ............2021-11-29 22:00:21 [1] 文件上传结果:失败!上传文件失败,The input parameter content_hash is not valid. file content hash is not matched with content_hash in complete file request 耗时 4分45秒

源代码

aliyunpan这个项目的源代码能发布一下吗

文件夹下载的一些建议的优化

谢谢大佬的程序!

我是试图在阿里云盘上得网页版下载一整个文件夹,但是文件夹内文件数目非常多,下载总是失败。后来查了才知道,阿里云对下载的限制是一次最多一千个文件。这个是在是太坑了,如果是文件多的话,基本就相当于进去出不来了。但是幸好找到了大佬的程序,本来我以为您的程序的逻辑也会受到单次下载1000文件的限制,我得计划是找到您程序之后,自己写一个自动化的流程。但是我后来发现省事了,因为您程序的逻辑是直接扫描所有文件,并逐个文件下载。至此,您的程序完美解决了我得问题!

我写这个建议是建议您可以对某些文件实行云盘得压缩下载的策略。(网盘是把所有的文件整理起来打包下载)提出这个建议的原因是,既然云盘设置了单次下载最多一千文件的限制,就说明后续可能打压您的这个“扫描并下载所有文件”的操作,或封号,或强制断开连接。所以为了程序以后可以更鲁棒。另外我也认为单次下载大文件会比单次重复下载小文件要更快。

代码异常

我下载下来的代码,好多报错,是不是代码没传完整的啊??

有没有比RefreshToken更好的登录方式?

这个RefreshToken每3天就过期了,都需要重新获取来登录,不能作为自动化备份工具,非常头疼,能有办法优化吗?或者能让其自动获取RefreshToken来登录吗?

关于sync的用法

首先感谢您的作品。
你好,工具运行起来很流程。
现在遇到1个情况,我想使用sync,但是提示未找到命令: sync。
使用help 也未查询到,请教一下SNYC的具体用法,谢谢

配置文件和历史命令可以存放在 `~/.config/aliyunpan/` 下,或者增加一个选项可以选择配置文件的位置

Hello,

目前 aliyunpan 的配置文件和历史命令都是和程序放在同一个目录下,有些情况使用起来可能不太方便。

例如对于 Linux 用户来说,可执行文件放在了 /usr/local/bin 目录下(多用户使用的话)。如果不加 sudo,会提示无法加载配置文件。

FATAL ERROR: config file error: config file permission denied

建议修改默认配置文件位置,或者添加可以额外指定配置文件位置的选项。

(现在是把程序放在了 ~/bin

无法进入一些目录

谢谢提供软件,我使用的是vps centos7 下载很方便,但有些目录识别为文件了 它不带有 / 。使用cd 后提示文件不存在,在更改文件夹名字后正常,更改为原文件名也正常,都识别为文件夹了,可以进入了。
识别成文件很麻烦,不知道是什么原因?不知道我说明白了没

backup 备份失效

aliyunpan:/$ backup /data/download /NAS
[2021-11-15 15:02:37.312] do request url: https://api.aliyundrive.com/v2/file/list
[2021-11-15 15:02:38.100] parse file list result json error unexpected end of JSON input
警告: 上传文件, 获取云盘路径 /NAS 错误, 文件不存在
/data/download 同步数据库打开失败,跳过该目录的备份 timeout

上传结束, 时间: 5秒, 总大小: 0B
aliyunpan:/$ backup /data/download /
/data/download 同步数据库打开失败,跳过该目录的备份 timeout

上传结束, 时间: 5秒, 总大小: 0B
aliyunpan:/ hx10$

之前上传正常,现在突然失败了,重新退出登录也不行,求帮助

请问,现在是不能秒传吗?

我几天才上传完了E盘的数据,现在用这个命令行工具再上传一次E盘到不同的文件夹,发现所有文件都不能秒传。

upload和backup的时候检测秒传中没有效果

upload和backup的时候检测秒传中没有效果,一个文件上传多次都没有出发秒传,都是重新传

E:\nas\aliyunpan-v0.0.2-windows-x64
λ aliyunpan.exe upload README.md /
2021-10-17 20:19:37 [1] 加入上传队列: README.md
[1] 准备上传: README.md=>/README.md
[1] 检测秒传中, 请稍候...
[1] 秒传失败,开始正常上传文件

[1] 上传文件成功, 保存到网盘路径: /README.md
2021-10-17 20:19:21 [1] 文件上传结果:成功! 耗时 2.755193s

上传结束, 时间: 2.759s, 总大小: 18.365234KB

E:\nas\aliyunpan-v0.0.2-windows-x64
λ aliyunpan.exe upload README.md /
2021-10-17 20:19:42 [1] 加入上传队列: README.md
[1] 准备上传: README.md=>/README.md
[1] 检测秒传中, 请稍候...
[1] 秒传失败,开始正常上传文件

[1] 上传文件成功, 保存到网盘路径: /README.md
2021-10-17 20:19:21 [1] 文件上传结果:成功! 耗时 2.7351247s

上传结束, 时间: 2.739s, 总大小: 18.365234KB

E:\nas\aliyunpan-v0.0.2-windows-x64
λ aliyunpan.exe upload README.md /
2021-10-17 20:19:47 [1] 加入上传队列: README.md
[1] 准备上传: README.md=>/README.md
[1] 检测秒传中, 请稍候...
[1] 秒传失败,开始正常上传文件

[1] 上传文件成功, 保存到网盘路径: /README.md
2021-10-17 20:19:21 [1] 文件上传结果:成功! 耗时 2.6981471s

上传结束, 时间: 2.702s, 总大小: 18.365234KB

backup好像没有用?

$ ./aliyunpan backup /mnt/datastore/games/NS /Games
[2021-9-11 15:32:50.673] do request url: https://api.aliyundrive.com/v2/user/get
[2021-9-11 15:32:50.793] do request url: https://api.aliyundrive.com/v2/databox/get_personal_info
[2021-9-11 15:32:51.173] do request url: https://api.aliyundrive.com/v2/sbox/get
[2021-9-11 15:32:51.276] do request url: https://api.aliyundrive.com/adrive/v1/user/albums_info
[2021-9-11 15:32:51.374] do request url: https://api.aliyundrive.com/v2/file/list
/mnt/datastore/games/NS 同步数据库打开失败,跳过该目录的备份 no locks available

上传结束, 时间: 6.264s, 总大小: 0B

大佬建议增加触发服务器端视频转码的功能

打个比方,我上传了一个新的视频文件(没有秒传),此时打开阿里云盘app去观看这个视频,再随意拖动一个进度,会发现卡住了,要等10几秒才能播放,原因是这个视频正在服务器端转码,要等待转码完成才能继续播放。

服务器端大概要10分钟左右可以把视频转码完成,此时再随意拖动进度会发现非常快。

简单说就是新上传的视频服务器端不会自动转码,只有点过播放才会转码,所以大佬能否增加一个触发服务器端转码的功能?

挂载为Webdav

请问一下后续有计划开发挂载到本地WebDAV的功能吗?谢谢。

安卓手机 termux软件安装 登录出错

安卓手机软件termux安装(aliyunpan)之后和其他的BaiduPCS-Go一样 会出现网络连接错误,在这个地址:qjfoidnh/BaiduPCS-Go#107 有人编译了一下解决了。
阿里网盘有安卓客户端,但还是用这样的方式去用阿里云盘,确实有点欠打。但这确实是个问题
Screenshot_20210820_104222

建议添加上传限速功能

针对部分较低带宽的服务器,使用上传或备份功能时存在阻塞上传通道而影响其他服务的情况。

建议为上传、下载功能添加限制最高速度的参数。

登录失败

环境:树莓派3b, armv7内核,ping百度首页46ms,windows10端putty ssh登录

其他功能测试正常,不能登录,信息如下
pi@pi:~/jk/ftp/ftpuser/download $ sudo aliyunpan login
请输入RefreshToken, 回车键提交 > a8566575feb14442825f4b30dd######
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x130 pc=0x3e1780]

goroutine 1 [running]:
github.com/tickstep/aliyunpan/internal/command.CmdLogin.func1(0x10f4580, 0x86b7e0, 0x0)
/Users/tickstep/Documents/Workspace/go/projects/aliyunpan-go/internal/command/login.go:52 +0x114
github.com/urfave/cli.HandleAction(0x43cb38, 0x4d99bc, 0x10f4580, 0x10f4580, 0x0)
/Users/tickstep/Applications/go/pkg/mod/github.com/urfave/[email protected]/app.go:523 +0x10c
github.com/urfave/cli.Command.Run(0x4b0ab0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4bd459, 0x18, 0x0, ...)
/Users/tickstep/Applications/go/pkg/mod/github.com/urfave/[email protected]/command.go:174 +0x3f4
github.com/urfave/cli.(*App).Run(0x11fefc0, 0x10a4010, 0x2, 0x2, 0x0, 0x0)
/Users/tickstep/Applications/go/pkg/mod/github.com/urfave/[email protected]/app.go:276 +0x54c
main.main()
/Users/tickstep/Documents/Workspace/go/projects/aliyunpan-go/main.go:506 +0xb58

挂载webdav访问失败?

使用命令行:./aliyunpan webdav start -ip "127.0.0.1" -port 23077 -webdav_user "admin" -webdav_password "admin" -pan_dir_path "/" -bs 1024
创建webdav 无法访问到文件,请问如何解决,还是存在Bug呢?
004

上传文件出现错误,之前是可以上传成功其它文件的

日志如下,本地文件是真实存在的,但却提示没有上传ID,已经重试过几次了 依然无法解决
检测秒传中, 请稍候...
[1] 秒传失败,开始正常上传文件
[2021-12-3 17:22:54.713] DEBUG: UPLOADER INFO: upload task CREATED from instance state
[2021-12-3 17:22:54.715] do request url: https://api.aliyundrive.com/v2/file/complete
[2021-12-3 17:22:54.892] DEBUG: UPLOADER WARN: upload file commit failed: The resource upload_id cannot be found. No such upload_id
2021-12-03 17:22:21 [1] 文件上传结果:失败!上传文件失败,The resource upload_id cannot be found. No such upload_id 耗 0秒

上传结束, 时间: 0秒, 总大小: 0B
以下文件上传失败:

长目录名备份时崩溃

0.0.6-win-x64 版本,win7系统

`D:\Program Files\aliyunpan-v0.0.6-windows-x64>aliyunpan backup D:/Program Files/aliyunpan-v0.0.6-windows-x64/backup /test
panic: runtime error: invalid memory address or nil pointer dereference [signal 0xc0000005 code=0x0 addr=0x18 pc=0x851158]
goroutine 28 [running]:
github.com/tickstep/aliyunpan/internal/command.checkPath(0xc0000c2060, 0x29, 0x0, 0x0, 0x0, 0x0)
/Users/tickstep/Documents/Workspace/go/projects/aliyunpan/internal/command/backup.go:226 +0x378
github.com/tickstep/aliyunpan/internal/command.Backup.func1(0xc000446fb0, 0xc0000a0000, 0xc00031d9e0, 0xc0000ac0d0, 0x5, 0xc00030fb78, 0xc0000c2060, 0x29)
/Users/tickstep/Documents/Workspace/go/projects/aliyunpan/internal/command/backup.go:281 +0x6ecreated by github.com/tickstep/aliyunpan/internal/command.Backup
/Users/tickstep/Documents/Workspace/go/projects/aliyunpan/internal/command/backup.go:279 +0x557
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x18 pc=0x851158]

goroutine 27 [running]:
github.com/tickstep/aliyunpan/internal/command.checkPath(0xc0000ac0a0, 0xa, 0x0,0x0, 0x0, 0x0)
/Users/tickstep/Documents/Workspace/go/projects/aliyunpan/internal/command/backup.go:226 +0x378
github.com/tickstep/aliyunpan/internal/command.Backup.func1(0xc000446fb0, 0xc0000a0000, 0xc00031d9e0, 0xc0000ac0d0, 0x5, 0xc00030fb78, 0xc0000ac0a0, 0xa)
/Users/tickstep/Documents/Workspace/go/projects/aliyunpan/internal/command/backup.go:281 +0x6e
created by github.com/tickstep/aliyunpan/internal/command.Backup
/Users/tickstep/Documents/Workspace/go/projects/aliyunpan/internal/command/backup.go:279 +0x557`

换成短目录就行了,不知道是否是program~1的问题

请求加入网盘文件向本地同步功能

想把icloud照片同步到linux 外接的硬盘,可以设置先把icloud 照片同步到阿里云盘,然后把阿里云盘照片同步到本地。但是本插件貌似只有本地向云端同步,没有云端到本地的同步功能?如果方便的话,请求大佬加上此功能!我看百度网盘工具bypy是支持的。

core dumped

启动出现segmentation fault (core dumped)

Invalid rapid proof. ContentHash proof failed

执行:aliyunpan upload local_backup.sh /remote_backup时,报错:
文件上传结果:失败!创建上传任务失败:Invalid rapid proof. ContentHash &{sha1 02D880F34527673E4C4242472F535CB935E2A27D 10535 } proof failed, range [8190, 8198),Invalid rapid proof. ContentHash &{sha1 02D880F34527673E4C4242472F535CB935E2A27D 10535 } proof failed, range [8190, 8198) 耗时 2秒

但是换一个文件又没问题。有的文件可以上传,有的就报这个错误

上传有点问题

传着传着就报了错误

[3] ↑ 1.52GB/3.15GB 384.02KB/s(3.35MB/s) in 25s ............panic: runtime error: slice bounds out of range [:131072] with capacity 65536

goroutine 78 [running]:
bufio.(*Reader).Read(0xc0001449c0, 0xc00331a000, 0x8000, 0x8000, 0x7fd9754fe108, 0xc002fa2887, 0xc00331a000)
	/usr/lib/go/src/bufio/bufio.go:238 +0x3ba
github.com/tickstep/aliyunpan/internal/file/uploader.(*bufioFileBlock).Read(0xc0004b93a0, 0xc00331a000, 0x8000, 0x8000, 0x7fd9754fe108, 0x8000, 0xc00331a000)
	/home/funny/aliyunpan/internal/file/uploader/block.go:82 +0x4d
io.(*LimitedReader).Read(0xc0001fe3a8, 0xc00331a000, 0x8000, 0x8000, 0x0, 0xc000012000, 0x8)
	/usr/lib/go/src/io/io.go:473 +0x63
io.copyBuffer(0x7fd947c87cc0, 0xc000120700, 0xab3240, 0xc0001fe3a8, 0xc00331a000, 0x8000, 0x8000, 0x99e580, 0xdaca01, 0x7fd947c87ca0)
	/usr/lib/go/src/io/io.go:423 +0x12c
io.Copy(...)
	/usr/lib/go/src/io/io.go:382
net/http.persistConnWriter.ReadFrom(0xc000302c60, 0xab3240, 0xc0001fe3a8, 0x7fd947c87ca0, 0xc000302c60, 0x636f01)
	/usr/lib/go/src/net/http/transport.go:1768 +0x85
bufio.(*Writer).ReadFrom(0xc00006a9c0, 0xab3240, 0xc0001fe3a8, 0x7fd94c03f338, 0xc00006a9c0, 0x7fd94c03f201)
	/usr/lib/go/src/bufio/bufio.go:730 +0x37e
io.copyBuffer(0xab25a0, 0xc00006a9c0, 0xab3240, 0xc0001fe3a8, 0x0, 0x0, 0x0, 0xc000051c38, 0x40fb78, 0x18)
	/usr/lib/go/src/io/io.go:409 +0x357
io.Copy(...)
	/usr/lib/go/src/io/io.go:382
net/http.(*transferWriter).doBodyCopy(0xc000020a00, 0xab25a0, 0xc00006a9c0, 0xab3240, 0xc0001fe3a8, 0x716612, 0xc000120700, 0xc0000e7000)
	/usr/lib/go/src/net/http/transfer.go:409 +0x6a
net/http.(*transferWriter).writeBody(0xc000020a00, 0xab25a0, 0xc00006a9c0, 0x0, 0x0)
	/usr/lib/go/src/net/http/transfer.go:367 +0x825
net/http.(*Request).write(0xc00067d000, 0xab25a0, 0xc00006a9c0, 0x0, 0xc000282ea0, 0x0, 0x0, 0x0)
	/usr/lib/go/src/net/http/request.go:697 +0x7c6
net/http.(*persistConn).writeLoop(0xc000302c60)
	/usr/lib/go/src/net/http/transport.go:2385 +0x1a7
created by net/http.(*Transport).dialConn
	/usr/lib/go/src/net/http/transport.go:1744 +0xc9c

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.