Awesome Open Source
Awesome Open Source

Transfer

🍭集合多个API的大文件传输工具

Large file transfer tool with multiple file transfer services support

note

部分API可能不是很稳定,如有问题可以及时提issue或者pr

如使用过程中出现任何问题可以先尝试使用beta版程序,说不定已经修复过了这个bug

install

Go语言程序, 可直接在发布页下载使用。

或者使用安装脚本:

# Stable Release
curl -sL https://git.io/file-transfer | sh 

# Beta Release
curl -sL https://git.io/file-transfer | bash -s beta

Github Action中有实时构建版本,如有需要可以在Github Action的构建日志中查看下载链接。

support

目前支持的文件传输服务:

airportal(arp), catbox(cat), cowtransfer(cow), fileio(fio),
gofile(gof), lanzous(lzs), litterbox(lit), null(0x0), 
wetransfer(wet), vimcn(vim)

登陆上传相关说明

目前支持的图床服务:

baidu(bd), ccupload(cc), prntscr(pr), smms(sm), sogou(sg), 
toutiao(tt), vimcn(vm), suning(sn), telegraph(tg)

usage

Transfer is a very simple big file transfer tool.

Backend Support:
  airportal(arp), catbox(cat), cowtransfer(cow), fileio(fio),
  gofile(gof), lanzous(lzs), litterbox(lit), null(0x0), 
  wetransfer(wet), vimcn(vim)

Usage:
  transfer [flags]
  transfer [command]

Examples:
  # upload via wenshushu
  ./transfer wss <your-file>

  # download link
  ./transfer https://.../

Available Commands:
  decrypt     Decrypt a file
  encrypt     Encrypt a file
  hash        Hash a file
  help        Help about any command
  image       Upload a image to imageBed

Flags:
      --encrypt              encrypt stream when upload
      --encrypt-key string   specify the encrypt key
  -f, --force                attempt to download file regardless error
  -h, --help                 help for transfer
      --keep                 keep program active when process finish
      --no-progress          disable progress bar to reduce output
  -o, --output string        download to another file/folder (default ".")
  -p, --parallel int         set download task count (default 3)
      --silent               enable silent mode to mute output
  -t, --ticket string        set download ticket
      --verbose              enable verbose mode to debug
      --version              show version and exit

Use "transfer [command] --help" for more information about a command.

upload & download

所有上传操作都建议指定一个API,如不指定将使用默认(filelink.Backend)。加上想要传输的文件/文件夹即可。

Upload a file or folder.

Usage:
  transfer [flags] <files>

Aliases:
  upload, up

Flags:
      --encrypt              Encrypt stream when upload
      --encrypt-key string   Specify the encrypt key
  -h, --help                 help for upload

Global Flags:
      --no-progress          disable progress bar to reduce output
      --silent               enable silent mode to mute output
      --keep                 keep program active when process finish
      --version              show version and exit

Use "transfer upload [command] --help" for more information about a command.

Examples

# upload
./transfer balabala.mp4

# upload
./transfer wss balabala.mp4

# upload folder
./transfer wet /path/

不同的Backend提供不同的选项,可以在帮助中查看关于该服务的相关信息。

➜  ./transfer cow
cowTransfer - https://cowtransfer.com/

  Size Limit:             2G(Anonymous), ~100G(Login)
  Upload Service:         qiniu object storage, East China
  Download Service:       qiniu cdn, Global

Usage:
  transfer cow [flags]

Aliases:
  cow, cow, cowtransfer

Flags:
      --block int         Upload block size (default 262144)
  -c, --cookie string     Your user cookie (optional)
      --hash              Check hash after block upload
  -h, --help              help for cow
  -p, --parallel int      Set the number of upload threads (default 2)
      --password string   Set password
  -s, --single            Upload multi files in a single link
  -t, --timeout int       Request retry/timeout limit in second (default 10)

Global Flags:
      --encrypt              encrypt stream when upload
      --encrypt-key string   specify the encrypt key
      --keep                 keep program active when process finish
      --no-progress          disable progress bar to reduce output
      --silent               enable silent mode to mute output
      --verbose              enable verbose mode to debug
      --version              show version and exit

下载操作会自动识别支持的链接,不需要指定服务名称。

# download file
./transfer https://.../

试验性功能:--encrypt选项可以在上传时将文件加密,下载时需要配合--decrypt选项才能正确下载文件。(当然也可以先下载后再解密)加密方式为AES-CBC,默认会自动生成一个密码,也可以通过--encrypt-key指定一个。

# encrypt stream when upload
➜ ./transfer wss --encrypt transfer
Warning: crypto mode is enabled.
Note: Crypto mode still in beta and abnormalities may occur, do not over-rely on this function.
Key is not set or incorrect: Setting it to 94d0500605b372245dc77f95fbc20010
...

# encrypt with key
➜ ./transfer wss --encrypt --encrypt-key=123 transfer
Warning: crypto mode is enabled.
Note: Crypto mode still in beta and abnormalities may occur, do not over-rely on this function.
Encrypt using key: 123
...

# decrypt stream when download
➜ ./transfer --encrypt --encrypt-key=123 https://....
Warning: crypto mode is enabled.
Note: Crypto mode is not compatible with multi thread download mode, setting parallel to 1.
...

login

部分backend支持登陆环境下上传,使用时只需要提供对应的cookie即可。

CowTransfer

# login to upload
./transfer cow --cookie="remember-me=...;" file

AirPortal

# login to upload
./transfer arp -t <your-token> -u <your-username> file

TmpLink

# login to upload
./transfer tmp -t <your-token> file

Lanzous

蓝奏云可以只使用phpdisk_info项作为cookie上传文件,但可能无法进行文件管理(如删除等)。如需要上传到指定目录或进行文件管理操作需要在cookie中指定folder_id_c的值,如:

# login to upload (without path)
./transfer lzs --cookie='phpdisk_info=...' file

# login to upload (with path)
./transfer lzs --cookie='phpdisk_info=...; folder_id_c=...;' file

image

transfer也支持上传图片至图床,默认自动使用阿里图床上传,也可以通过-b, --backend指定图床。

Upload a image to imageBed.
Default backend is ali.backend, you can modify it by -b flag.

Backend support:
  alibaba(ali), baidu(bd), ccupload(cc), juejin(jj),
  netease(nt), prntscr(pr), smms(sm), sogou(sg),
  toutiao(tt), xiaomi(xm), vimcn(vm), suning(sn)

Example:
  # simply upload
  transfer image your-image

  # specify backend to upload
  transfer image -b sn your-image

Note: Image bed backend may have strict size or format limit.

Usage:
  transfer image [flags]

Flags:
  -b, --backend string   Set upload/download backend
  -h, --help             help for image

Global Flags:
      --encrypt              encrypt stream when upload
      --encrypt-key string   specify the encrypt key
      --keep                 keep program active when process finish
  -v, --verbose              enable verbose mode to debug
      --version              show version and exit

encrypt & decrypt

和前面upload使用的是同样的加密,只是在本地进行。也可以使用前面下载的加密后文件在此解密。可以通过不同参数指定密钥和输出文件名

关于加密的说明:目前只能选择AES-CBC的加密方式,分块大小策略为min(1m, fileSize)

# encrypt
transfer encrypt your-file

# encrypt using specified key
transfer encrypt -k abc your-file

# decrypt using specified key
transfer decrypt -k abc your-file

# specify path
transfer encrypt -o output your-file

hash

hash功能使用sha1, crc32, md5, sha256对文件进行校验,可以用来检验文件一致性。

➜  ./transfer hash main.go
size: 68
path: /../transfer/main.go

crc32: a51da8f5
md5: aa091bb918ab85b1dc44cb771b1663d1
sha1: a8e25d41330c545da8bcbeade9aebdb1b4a13ab7
sha256: ab4dd3cdd79b5e2a88fcb3fcd45dfcffc935c913adfa888f3fb50b324638e958

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
go (14,426
golang (3,675
transfer (28

Find Open Source By Browsing 7,000 Topics Across 59 Categories