Self-hosted service
tickstep/aliyunpan avatar
tickstep/aliyunpan

aliyunpan: a Linux-style shell for Aliyun Drive, in Go

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

5,123 stars395 forksGoApache-2.0

At a glance

What is it?
aliyunpan is an Apache-2.0 Go command line client for Alibaba's Aliyun Drive that mimics Linux shell file commands, with multi-user and multi-account support, download resumption and parallel transfer, JavaScript plugins backed by the goja engine, sync backup in exclusive and increment policies via Docker, and album batch download, across Windows, macOS, Linux, Android and iOS. Version 0.4.0 released in June 2026.
Who is it for?
Use aliyunpan when Aliyun Drive access belongs in a terminal or a script, ls and upload on a server, scheduled sync on a NAS through the Docker image, or album archiving in bulk, and when a Go binary spanning x86 to LoongArch fits the hardware. Use the official app when a GUI workflow is fine, since this tool's value is precisely the scriptable surface.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 23 days ago.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A shell, not a wrapper

aliyunpan presents itself as a command line client for Aliyun Drive modeled on Linux shell file handling, and the commitment is real, run the binary without arguments and it drops into an interactive shell with a prompt, history via arrow keys, Ctrl+A and CtrlE line navigation, Tab completion for commands and file paths, and wildcard matching in paths. The command set follows the shell convention the help listing shows, cd, ls, ll, mkdir, mv, pwd, rename, rm, recycle, share, upload, download and sync, with abbreviations like d for download and u for upload. Every command documents itself via the -h flag, upload -h being the documented example, and the program warns to check terminal encoding if output shows garbled characters, the small courtesies of a tool designed for daily interactive use rather than one-shot invocation.

Transfers with resume, parallel and joint modes

The transfer features read like a download manager's specification. Downloads support multiple files and directories, resumption from breakpoints, and parallel transfer within a single file. Uploads likewise handle multiple files and directories, with exclusion of specified folders and files by regular expression, and both directions follow symbolic links. For users chasing maximum speed there is a multi-user joint download capability, multiple accounts downloading together, which the README offers with the caveat that it is for those with extreme demands on download speed. The feature set also includes multi-user support generally, switching between backup drive and resource library as seamless targets, and batch download of shared albums including ordinary photos and live photo files, the collection-oriented capability that distinguishes it from a pure file tool.

Sync backup for NAS and embedded devices

The sync backup function is the feature aimed at always-on hardware, explicitly described as common on embedded or NAS devices with a Docker image for deployment. Two directions are supported, backing up local files to the cloud and backing up cloud files to local, with JavaScript plugins able to filter the files being backed up. The policy choice is the operational heart, exclusive performs a one-to-one mirror, deleting extra files in the target directory and propagating source deletions, while increment only uploads modified and new files, never deleting anything on either side. The synchronization loop is documented as three phases, scan, compare, execute, per cycle. The Docker run maps a saved credential file and a local directory, and configures everything through environment variables, ALIYUNPAN_SYNC_MODE for direction, ALIYUNPAN_SYNC_POLICY for policy, ALIYUNPAN_SYNC_DRIVE for which drive, with a compose file documented for orchestration.

JavaScript plugins through goja

The plugin system is the personalization surface, allowing customization of key steps in upload and download behavior to satisfy individual needs, and the implementation detail matters, the Go dependency list includes goja, an ECMAScript runtime in pure Go, meaning plugins run inside the process with no external Node runtime to install. The plugin manual documents the model, and the same engine powers the file filtering in sync backups, so one scripting surface covers interactive transfer customization and unattended filtering alike. For users whose workflows have unusual requirements, renaming rules, conditional transfers, custom notifications through the email library also present in the dependencies, the plugin path exists before forking the tool, and the goja choice keeps the deployment a single static binary.

Login through the browser, twice

Authentication happens in the browser rather than in the terminal, and the README is specific that it takes two logins, one authorization and one QR scan, with the link valid for five minutes. The flow opens an OAuth-style URL at openapi.alipan.com with scopes for user basics and full file read-write, redirects through the author's token relay, and returns to a logged-in prompt showing the account nickname. The saved credential becomes the aliyunpan_config.json that the Docker sync deployment maps in as a volume, which is the documented pattern for headless use, log in once interactively somewhere, then carry the credential file to the server. A logout procedure and a debug logging toggle are documented for the other end of the lifecycle, and the drive command switches between backup drive and resource library with a numbered menu.

Packaged for eight architectures and five managers

Installation coverage is broad enough to map the hardware landscape it serves, and the documented example is three commands after the download:

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

Release artifacts tag eight architectures, arm, armv5 and armv7 for 32-bit ARM, arm64, 386 and x86, amd64 and x64, mips with endianness caveats for systems like Kylin, macOS builds for Intel and Apple Silicon, iOS arm64 explicitly requiring a jailbroken phone, and loong64 for LoongArch64 machines such as domestic Loongson CPUs, the inclusion of the last two marking the project's Chinese context. Package managers get first-class treatment, an apt repository for Ubuntu and Deepin, a yum repository for CentOS and Rocky Linux, brew for macOS with an ALIYUNPAN_CONFIG_DIR recommendation so configuration does not land in the system directory, and winget for Windows, alongside the plain zip download with its documented wget-and-unzip example.

A maintained Chinese-community tool

The project's context is worth stating for an international reader, the README, the command manual and the plugin manual are written in Chinese, the tool targets a Chinese cloud service, and the ecosystem references, the VIP referral code with its third-party app package note for download acceleration, the Kylin and Loongson architecture support, are those of software built for that market first. Maintenance is healthy, v0.3.8 in February 2026, v0.3.9 in April and v0.4.0 in June, with the last push on 2026-09-07, and the codebase is a single Go module using urfave/cli for the command framework, liner for the interactive line editing, bolt for embedded storage, and the author's own aliyunpan-api library for the service protocol, a conventional, readable Go tool whose source doubles as documentation for how the drive's API behaves.

Editorial conclusion

Use aliyunpan when Aliyun Drive access belongs in a terminal or a script, ls and upload on a server, scheduled sync on a NAS through the Docker image, or album archiving in bulk, and when a Go binary spanning x86 to LoongArch fits the hardware. Use the official app when a GUI workflow is fine, since this tool's value is precisely the scriptable surface. Verify first that your account works with the browser-based login flow, note the third-party app package requirement the README flags for download acceleration, choose the exclusive sync policy only when mirroring is truly intended since it deletes extra files, and pick the release artifact matching your architecture from the documented tag list.

Frequently asked questions

What is aliyunpan, the CLI tool?

aliyunpan is an Apache-2.0 licensed Go command line client for Aliyun Drive that mimics Linux shell file commands, with an interactive shell, Tab completion and wildcard paths. It supports resumable and parallel downloads, regex-filtered uploads, JavaScript plugins, sync backup and album batch download across Windows, macOS, Linux, Android and iOS.

How do you install aliyunpan?

Download a release zip for your architecture from the GitHub releases page, covering ARM, x86, MIPS, LoongArch and both Mac chip families, or install through the project's apt and yum repositories, brew on macOS, winget on Windows, or the aliyunpan-sync Docker image for sync deployments.

What sync policies does aliyunpan support?

Two policies in each direction, local-to-cloud and cloud-to-local. Exclusive performs one-to-one mirroring, deleting extra target files and propagating source deletions, while increment only transfers modified and new files without deleting anything. Each cycle runs scan, compare and execute phases, and JavaScript plugins can filter backed-up files.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. README
  4. Releases
  5. tickstep/aliyunpan on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/tickstep-aliyunpan.svg)](https://hysenlabs.com/projects/tickstep-aliyunpan)