Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

15 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

โ˜๏ธ cloud-cli โ€” ้€š็”จ็ฝ‘็›˜ๅ‘ฝไปค่กŒๅทฅๅ…ท

้ซ˜ๆ€ง่ƒฝ ยท ๅพฎๅ†…ๆ ธๆžถๆž„ ยท ๅคš็ฝ‘็›˜็ปŸไธ€ๆŽฅๅฃ ยท ่ทจ็›˜ๅŒๆญฅไผ ่พ“

High-Performance ยท Microkernel Architecture ยท Universal Cloud Storage CLI ยท Cross-Cloud Sync


Go Version License Release Build Status Platform


๐ŸŒŸ ไธบไป€ไนˆ้€‰ๆ‹ฉ cloud-cli๏ผŸ / Why cloud-cli?

็‰นๆ€ง / Feature cloud-cli rclone ๅ•็ฝ‘็›˜ CLI / Single-Provider CLI
้€š็”จๆŽฅๅฃ + ไธ“ๅฑž่ƒฝๅŠ› โœ… ๅˆ†ๅฑ‚ๆžถๆž„๏ผŒ้€š็”จๅบ•ๅบง+ๆ‰ฉๅฑ•ๆŽฅๅฃ โœ… ๅŠŸ่ƒฝไธฐๅฏŒไฝ†้…็ฝฎๅคๆ‚ โŒ ๅŠŸ่ƒฝ็ป‘ๅฎš็‰นๅฎš็ฝ‘็›˜
ๅคธๅ…‹็ฝ‘็›˜ๆ”ฏๆŒ โœ… ๅฎŒๆ•ดๆ”ฏๆŒ๏ผˆ็ง’ไผ ใ€ๅˆ†็‰‡ใ€ๆ–ญ็‚น๏ผ‰ โŒ ไธๆ”ฏๆŒ โœ… ไป…ๅคธๅ…‹
ๆ–ญ็‚น็ปญไผ  โœ… ๅดฉๆบƒ่‡ชๅŠจๆขๅค โœ… โŒ ้€šๅธธไธๆ”ฏๆŒ
็ง’ไผ ๆฃ€ๆต‹ โœ… ่‡ชๅŠจ SHA1 ้ข„ๆฃ€ โŒ โŒ
่ทจ็›˜ๅฏนๆ‹ท โœ… ๅคธๅ…‹ โ†” ็™พๅบฆ โ†” ๆœฌๅœฐ โœ… โŒ
็›ฎๅฝ•ๅŒๆญฅ โœ… --dry-run + --delete โœ… ๅŠŸ่ƒฝๅคšไฝ†ๅญฆไน ๆˆๆœฌ้ซ˜ โŒ
้…็ฝฎๅคๆ‚ๅบฆ ๐ŸŸข ๆž็ฎ€๏ผŒไธ€ๆกๅ‘ฝไปค็™ปๅฝ• ๐Ÿ”ด ้œ€้…็ฝฎๅคšไธช remote ๐ŸŸข ็ฎ€ๅ•
ๅคš่ดฆๆˆท็ฎก็† โœ… YAML ็ปŸไธ€็ฎก็† โœ… ้…็ฝฎๆ–‡ไปถไธญ็ฎก็† โŒ ้€šๅธธๅ•่ดฆๆˆท
CI/CD ๅ‘ๅธƒ โœ… Goreleaser ่‡ชๅŠจๆž„ๅปบๅคšๅนณๅฐ โœ… โŒ

๐Ÿ† ๆ ธๅฟƒไผ˜ๅŠฟ / Core Advantages

  1. ๐Ÿ”Œ ๆ’ไปถๅŒ–้ฉฑๅŠจๆžถๆž„ โ€” ๆฏไธช็ฝ‘็›˜ๅช้œ€ๅฎž็ŽฐๆŽฅๅฃๅณๅฏๆŽฅๅ…ฅ๏ผŒๆœชๆฅๅฏๆ‰ฉๅฑ•็™พๅบฆใ€115ใ€้˜ฟ้‡Œใ€OneDrive ็ญ‰ใ€‚
  2. ๐Ÿง  ๆ™บ่ƒฝ่ƒฝๅŠ›ๆฃ€ๆต‹ โ€” CLI ่‡ชๅŠจๆฃ€ๆต‹ๅฝ“ๅ‰็ฝ‘็›˜ๆ”ฏๆŒ็š„ๅŠŸ่ƒฝ๏ผŒไธๆ”ฏๆŒ็š„ๅŠŸ่ƒฝไผ˜้›…้™็บง๏ผŒไธๆŠฅ้”™ใ€‚
  3. ๐Ÿ”„ ่ทจ็›˜ๅŒๆญฅๅผ•ๆ“Ž โ€” ๅŸบไบŽๆตๅผ I/O ็š„ๅŒๆญฅๅผ•ๆ“Ž๏ผŒๆœฌๅœฐไธŽไบ‘็ซฏใ€ไบ‘็ซฏไธŽไบ‘็ซฏไน‹้—ดๆ— ็ผไผ ่พ“ใ€‚
  4. โšก ็”Ÿไบง็บงไธŠไผ  โ€” ๅนถๅ‘ๅˆ†็‰‡ + ๆ–ญ็‚น็ปญไผ  + ็ง’ไผ ๆฃ€ๆต‹ + SSRF ้˜ฒๆŠค๏ผŒไธ“ไธบๅคงๆ–‡ไปถไผ˜ๅŒ–ใ€‚
  5. ๐Ÿ“‹ ๆž็ฎ€้…็ฝฎ โ€” ๆ‰ซ็ ็™ปๅฝ• / Cookie ๅฏผๅ…ฅ๏ผŒไธ€ๆกๅ‘ฝไปคๅฎŒๆˆ๏ผŒๆ— ้œ€ๅคๆ‚้…็ฝฎๆ–‡ไปถใ€‚

๐Ÿ“ฆ ๅฎ‰่ฃ… / Installation

ๆ–นๅผไธ€๏ผšไธ‹่ฝฝ้ข„็ผ–่ฏ‘ไบŒ่ฟ›ๅˆถ / Download Pre-built Binary

ๅ‰ๅพ€ Releases ไธ‹่ฝฝๅฏนๅบ”ๅนณๅฐ็š„ไบŒ่ฟ›ๅˆถๆ–‡ไปถ๏ผš

# Linux amd64
curl -LO https://github.com/Ab-code520/cloud-cli/releases/download/v1.4.0/cloud-cli_1.4.0_linux_amd64.tar.gz
tar -xzf cloud-cli_1.4.0_linux_amd64.tar.gz
sudo mv cloud-cli /usr/local/bin/

ๆ–นๅผไบŒ๏ผšไปŽๆบ็ ็ผ–่ฏ‘ / Build from Source

git clone https://github.com/Ab-code520/cloud-cli.git
cd cloud-cli
go build -o cloud-cli .
sudo mv cloud-cli /usr/local/bin/

ๆ–นๅผไธ‰๏ผšไฝฟ็”จ Go install / Go Install

go install github.com/Ab-code520/cloud-cli@latest

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹ / Quick Start

1๏ธโƒฃ ็™ปๅฝ• / Login

# ๆ‰ซ็ ็™ปๅฝ•ๅคธๅ…‹๏ผˆๆŽจ่๏ผ‰/ QR Scan Login (Recommended)
cloud-cli login quark

# ๆˆ–ไฝฟ็”จ Cookie ็™ปๅฝ• / Login with Cookie
cloud-cli login quark --cookie "your_cookie_string_here"

2๏ธโƒฃ ๆต่งˆๆ–‡ไปถ / Browse Files

# ๅˆ—ๅ‡บๆ น็›ฎๅฝ• / List root directory
cloud-cli ls

# ๅˆ—ๅ‡บๆŒ‡ๅฎš็›ฎๅฝ• / List specific directory
cloud-cli ls folder_id

# ้€’ๅฝ’ๅˆ—ๅ‡บ / List recursively (future)

3๏ธโƒฃ ไธŠไผ ๆ–‡ไปถ / Upload

# ไธŠไผ ๅ•ไธชๆ–‡ไปถ๏ผˆ่‡ชๅŠจ็ง’ไผ ๆฃ€ๆต‹ + ๆ–ญ็‚น็ปญไผ ๏ผ‰
cloud-cli upload ./movie.mp4 /videos/

# ไฝฟ็”จๆŒ‡ๅฎš็ญ–็•ฅ / With upload policy
cloud-cli upload ./movie.mp4 /videos/ --policy overwrite   # ่ฆ†็›–ๅทฒๆœ‰ๆ–‡ไปถ
cloud-cli upload ./movie.mp4 /videos/ --policy skip        # ่ทณ่ฟ‡ๅทฒๅญ˜ๅœจ๏ผˆ้ป˜่ฎค๏ผ‰
cloud-cli upload ./movie.mp4 /videos/ --policy rsync       # ไป…ๅœจไฟฎๆ”นๅŽไธŠไผ 

4๏ธโƒฃ ไธ‹่ฝฝๆ–‡ไปถ / Download

# ไธ‹่ฝฝๆ–‡ไปถ / Download file
cloud-cli download /videos/movie.mp4 ./local_movie.mp4

# ๆ–ญ็‚น็ปญไผ ไธ‹่ฝฝ๏ผˆไธญๆ–ญๅŽ้‡ๆ–ฐ่ฟ่กŒๅณๅฏๆขๅค๏ผ‰/ Resume on interrupt
cloud-cli download /videos/big_movie.mp4 ./big.mp4

5๏ธโƒฃ ๅŒๆญฅ็›ฎๅฝ• / Sync (โœจ v1.4.0 ๆ–ฐๅขž)

# ๆœฌๅœฐ โ†’ ๅคธๅ…‹๏ผˆไป…ๅŒๆญฅๆ–ฐๅขž/ไฟฎๆ”น็š„ๆ–‡ไปถ๏ผ‰
cloud-cli sync ./photos quark:/backup/photos

# ้ข„่งˆๅŒๆญฅๅ†…ๅฎน๏ผˆไธไผšๅฎž้™…ๆ‰ง่กŒ๏ผ‰/ Dry Run
cloud-cli sync ./data quark:/backup --dry-run

# ๅŒๆญฅๅนถๅˆ ้™ค็›ฎๆ ‡็ซฏๅคšไฝ™ๆ–‡ไปถ / Sync + Delete Extra
cloud-cli sync ./important quark:/important --delete

6๏ธโƒฃ ๆ›ดๅคšๅ‘ฝไปค / More Commands

# ๆ–‡ไปถๆ“ไฝœ / File Operations
cloud-cli copy <file_id> <dest_id>      # ๅคๅˆถๆ–‡ไปถ
cloud-cli move <file_id> <dest_id>      # ็งปๅŠจๆ–‡ไปถ
cloud-cli rename <file_id> "ๆ–ฐๅ็งฐ"       # ้‡ๅ‘ฝๅ
cloud-cli info <file_id>                # ๆŸฅ็œ‹ๆ–‡ไปถ่ฏฆๆƒ…
cloud-cli delete <file_id>              # ๅˆ ้™คๆ–‡ไปถ
cloud-cli mkdir <path>                  # ๅˆ›ๅปบ็›ฎๅฝ•

# ้ซ˜็บงๅŠŸ่ƒฝ / Advanced Features
cloud-cli search "ๅ…ณ้”ฎ่ฏ"                # ๆœ็ดขๆ–‡ไปถ
cloud-cli share create <id1> <id2>      # ๅˆ›ๅปบๅˆ†ไบซ
cloud-cli share list                    # ๆŸฅ็œ‹ๅˆ†ไบซๅˆ—่กจ
cloud-cli share delete <share_id>       # ๅˆ ้™คๅˆ†ไบซ
cloud-cli quota                         # ๆŸฅ็œ‹็ฉบ้—ดไฝฟ็”จๆƒ…ๅ†ต
cloud-cli recycle list                  # ๆŸฅ็œ‹ๅ›žๆ”ถ็ซ™
cloud-cli recycle restore <fid>         # ๆขๅคๆ–‡ไปถ
cloud-cli recycle delete <fid>          # ๅฝปๅบ•ๅˆ ้™ค

# ่ดฆๆˆท็ฎก็† / Account Management
cloud-cli user                          # ๆŸฅ็œ‹ๅฝ“ๅ‰่ดฆๆˆทไฟกๆฏ

๐Ÿ—๏ธ ๆžถๆž„่ฎพ่ฎก / Architecture

ๅˆ†ๅฑ‚ๆŽฅๅฃ่ฎพ่ฎก / Layered Interface Design

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        CLI Commands                         โ”‚
โ”‚   login  ls  upload  download  sync  copy  move  search ... โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                    ้€š็”จๅผ•ๆ“Ž / Core Engines                   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚ Sync Engine โ”‚  โ”‚  Transfer    โ”‚  โ”‚ Config Manager     โ”‚ โ”‚
โ”‚  โ”‚  (ๅŒๆญฅๅผ•ๆ“Ž)  โ”‚  โ”‚  (ไผ ่พ“ๅผ•ๆ“Ž)   โ”‚  โ”‚  (้…็ฝฎ็ฎก็†ๅ™จ)       โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚              ้€š็”จๅบ•ๅบงๆŽฅๅฃ / Base Storage Interface            โ”‚
โ”‚     Name()  Init()  List()  Open()  Put()  Delete() ...     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚              ๆ‰ฉๅฑ•่ƒฝๅŠ›ๆŽฅๅฃ / Extension Interfaces              โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚ Sharable โ”‚ โ”‚Searchableโ”‚ โ”‚QuotaProv. โ”‚ โ”‚  RecycleBin   โ”‚ โ”‚
โ”‚  โ”‚ (ๅˆ†ไบซ)    โ”‚ โ”‚ (ๆœ็ดข)    โ”‚ โ”‚ (็ฉบ้—ด)     โ”‚ โ”‚  (ๅ›žๆ”ถ็ซ™)      โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                  ้ฉฑๅŠจๅฎž็Žฐ / Driver Backends                   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚ Quark Drive โ”‚  โ”‚ Local FS    โ”‚  โ”‚ Baidu / 115 / Ali... โ”‚ โ”‚
โ”‚  โ”‚ (ๅคธๅ…‹็ฝ‘็›˜)   โ”‚  โ”‚ (ๆœฌๅœฐๆ–‡ไปถ็ณป็ปŸ) โ”‚  โ”‚ (ๆœชๆฅๆ‰ฉๅฑ•)            โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

็›ฎๅฝ•็ป“ๆž„ / Directory Structure

cloud-cli/
โ”œโ”€โ”€ core/                  # ๅพฎๅ†…ๆ ธๆ ธๅฟƒ
โ”‚   โ”œโ”€โ”€ fs.go              #   ๅŸบ็ก€ๆŽฅๅฃ + ๆ‰ฉๅฑ•ๆŽฅๅฃๅฎšไน‰
โ”‚   โ”œโ”€โ”€ config.go          #   YAML ๅคš่ดฆๆˆท้…็ฝฎ็ฎก็†
โ”‚   โ”œโ”€โ”€ sync.go            #   ็›ฎๅฝ•ๅŒๆญฅๅผ•ๆ“Ž
โ”‚   โ”œโ”€โ”€ transfer.go        #   ่ทจ็›˜ๆตๅผไผ ่พ“ๅผ•ๆ“Ž
โ”‚   โ””โ”€โ”€ registry.go        #   ้ฉฑๅŠจๆณจๅ†Œ่กจ
โ”œโ”€โ”€ backends/              # ็ฝ‘็›˜้ฉฑๅŠจ
โ”‚   โ”œโ”€โ”€ quark/             #   ๅคธๅ…‹็ฝ‘็›˜๏ผˆๅฎŒๆ•ดๅฎž็Žฐ๏ผ‰
โ”‚   โ””โ”€โ”€ local/             #   ๆœฌๅœฐๆ–‡ไปถ็ณป็ปŸ
โ”œโ”€โ”€ cmd/                   # CLI ๅ‘ฝไปค๏ผˆCobra๏ผ‰
โ”œโ”€โ”€ utils/                 # ๅทฅๅ…ทๅบ“
โ”‚   โ”œโ”€โ”€ pool.go            #   ๅนถๅ‘ๅทฅไฝœๆฑ ๏ผˆๅธฆ็†”ๆ–ญ๏ผ‰
โ”‚   โ””โ”€โ”€ hash.go            #   ๆตๅผ SHA1 ่ฎก็ฎ—
โ”œโ”€โ”€ .github/workflows/     # CI/CD
โ”‚   โ””โ”€โ”€ release.yml        #   Goreleaser ่‡ชๅŠจๆž„ๅปบ
โ””โ”€โ”€ main.go                # ๅ…ฅๅฃ๏ผˆๅฏผๅ…ฅๆ‰€ๆœ‰้ฉฑๅŠจ๏ผ‰

๐Ÿ“‹ ๅฎŒๆ•ดๅŠŸ่ƒฝๅˆ—่กจ / Full Feature List

ๅŸบ็ก€ๆ“ไฝœ / Basic Operations

  • โœ… login โ€” ๆ‰ซ็ ็™ปๅฝ• / Cookie ็™ปๅฝ•
  • โœ… ls โ€” ๅˆ—ๅ‡บ็›ฎๅฝ•
  • โœ… upload โ€” ไธŠไผ ๆ–‡ไปถ๏ผˆๅˆ†็‰‡ๅนถๅ‘ + ๆ–ญ็‚น็ปญไผ  + ็ง’ไผ ๏ผ‰
  • โœ… download โ€” ไธ‹่ฝฝๆ–‡ไปถ๏ผˆๆ”ฏๆŒๆ–ญ็‚น็ปญไผ ๏ผ‰
  • โœ… delete โ€” ๅˆ ้™คๆ–‡ไปถ/ๆ–‡ไปถๅคน
  • โœ… mkdir โ€” ๅˆ›ๅปบ็›ฎๅฝ•

ๆ–‡ไปถ็ฎก็† / File Management

  • โœ… copy โ€” ๅคๅˆถๆ–‡ไปถ
  • โœ… move โ€” ็งปๅŠจๆ–‡ไปถ
  • โœ… rename โ€” ้‡ๅ‘ฝๅ
  • โœ… info โ€” ๆŸฅ็œ‹ๆ–‡ไปถ่ฏฆๆƒ…๏ผˆๅคงๅฐใ€็ฑปๅž‹ใ€Hashใ€ๆ—ถ้—ด๏ผ‰

้ซ˜็บงๅŠŸ่ƒฝ / Advanced Features

  • โœ… search โ€” ็ฝ‘็›˜ๅ†…ๆ–‡ไปถๆœ็ดข
  • โœ… share โ€” ๅˆ†ไบซ็ฎก็†๏ผˆๅˆ›ๅปบ/ๅˆ—่กจ/ๅˆ ้™ค๏ผ‰
  • โœ… quota โ€” ็ฉบ้—ดไฝฟ็”จๆƒ…ๅ†ต๏ผˆๅซๅฏ่ง†ๅŒ–่ฟ›ๅบฆๆก๏ผ‰
  • โœ… recycle โ€” ๅ›žๆ”ถ็ซ™็ฎก็†๏ผˆๅˆ—่กจ/ๆขๅค/ๅฝปๅบ•ๅˆ ้™ค๏ผ‰

ๅŒๆญฅไธŽไผ ่พ“ / Sync & Transfer (v1.4.0+)

  • โœ… sync โ€” ็›ฎๅฝ•ๅŒๆญฅ๏ผˆๆ”ฏๆŒ --dry-run ๅ’Œ --delete๏ผ‰
  • โœ… ๆœฌๅœฐ โ†” ไบ‘็ซฏๅŒๆญฅ
  • โœ… ่ทจ็›˜ๆตๅผไผ ่พ“ๅผ•ๆ“Ž๏ผˆ้ข„็•™๏ผ‰

ๅทฅ็จ‹ๅŒ– / Engineering

  • โœ… YAML ๅคš่ดฆๆˆท้…็ฝฎ
  • โœ… Goreleaser ่ทจๅนณๅฐๆž„ๅปบ๏ผˆLinux/macOS/Windows ร— amd64/arm64๏ผ‰
  • โœ… GitHub Actions CI/CD
  • โœ… SSRF ๅฎ‰ๅ…จ้˜ฒๆŠค

๐Ÿ”ง ้ซ˜็บง็”จๆณ• / Advanced Usage

ไธŠไผ ็ญ–็•ฅ / Upload Policy

# ่ทณ่ฟ‡ๅทฒๅญ˜ๅœจๆ–‡ไปถ๏ผˆ้ป˜่ฎค๏ผ‰/ Skip existing
cloud-cli upload ./file.txt /dest/ --policy skip

# ่ฆ†็›–ๅทฒๅญ˜ๅœจๆ–‡ไปถ / Overwrite existing
cloud-cli upload ./file.txt /dest/ --policy overwrite

# ไป…ๅœจๆ–‡ไปถๆœ‰ๅ˜ๅŒ–ๆ—ถไธŠไผ  / Upload only if modified
cloud-cli upload ./file.txt /dest/ --policy rsync

JSON ่พ“ๅ‡บ / JSON Output

ๆ‰€ๆœ‰ๅˆ—่กจๅ’ŒๆŸฅ่ฏขๅ‘ฝไปค้ƒฝๆ”ฏๆŒ --output json (ๆˆ– -o json) ๅ‚ๆ•ฐ๏ผŒๆ–นไพฟไธŽๅ…ถไป–่„šๆœฌๆˆ–ๅทฅๅ…ท้›†ๆˆ๏ผš

# ไปฅ JSON ๆ ผๅผๅˆ—ๅ‡บๆ–‡ไปถ / List files as JSON
cloud-cli ls -o json

# ่พ“ๅ‡บ็คบไพ‹๏ผš
# [
#   {
#     "id": "file_id_1",
#     "name": "document.pdf",
#     "size": 1048576,
#     "is_dir": false,
#     "mod_time": "2026-01-01T12:00:00Z",
#     "path": "/document.pdf"
#   }
# ]

# ็ป“ๅˆ jq ไฝฟ็”จ / Pipe to jq
cloud-cli ls -o json | jq '.[].name'

# ๆŸฅ็œ‹็ฉบ้—ดไฝฟ็”จๆƒ…ๅ†ต / Check quota as JSON
cloud-cli quota -o json

ๅŒๆญฅ้ข„่งˆ / Sync Dry Run

ๅœจๆ‰ง่กŒๅฎž้™…ๅŒๆญฅไน‹ๅ‰๏ผŒๅฏไปฅๅ…ˆ้ข„่งˆไผšๅšไป€ไนˆๆ“ไฝœ๏ผš

cloud-cli sync ./photos quark:/backup/photos --dry-run

่พ“ๅ‡บ็คบไพ‹๏ผš

๐Ÿ”„ Syncing ./photos -> quark:/backup/photos ...
๐Ÿ‘€ This is a dry run, no files will be modified.
โฌ†๏ธ upload IMG_001.jpg [DRY RUN]
โฌ†๏ธ upload IMG_002.jpg [DRY RUN]
๐Ÿ”„ update edited_photo.png [DRY RUN]
โœ… Sync completed.

้…็ฝฎ็ฎก็† / Configuration

้…็ฝฎๆ–‡ไปถไฝไบŽ ~/.config/cloud-cli/config.yaml๏ผš

default: quark-default
accounts:
  quark-default:
    type: quark
    cookie:
      cookie: "your_cookie_here"
settings:
  speed_limit: "0"
  retries: 3
  timeout: 60

๐ŸŒ ๆ”ฏๆŒ็š„ๅนณๅฐ / Supported Platforms

ๅนณๅฐ / OS amd64 arm64
Linux โœ… โœ…
macOS โœ… โœ…
Windows โœ… โœ…

๐Ÿ”Œ ๅฆ‚ไฝ•ๆทปๅŠ ๆ–ฐ็ฝ‘็›˜้ฉฑๅŠจ๏ผŸ / How to Add a New Driver?

  1. ๅˆ›ๅปบ้ฉฑๅŠจ็›ฎๅฝ•๏ผšbackends/<provider>/driver.go + api.go
  2. ๅฎž็Žฐ core.Storage ๆŽฅๅฃ๏ผˆ่‡ณๅฐ‘ๅฎž็Žฐ CRUD ๆ–นๆณ•๏ผ‰
  3. ๅฏ้€‰๏ผšๅฎž็Žฐๆ‰ฉๅฑ•ๆŽฅๅฃ๏ผˆSharableใ€Searchable ็ญ‰๏ผ‰
  4. ๅœจ init() ไธญๆณจๅ†Œ๏ผšcore.Register("provider", NewDriver)
  5. ๅœจ main.go ไธญๆทปๅŠ ็ฉบ็™ฝๅฏผๅ…ฅ๏ผš_ "github.com/Ab-code520/cloud-cli/backends/<provider>"

ๅฐฑๆ˜ฏ่ฟ™ไนˆ็ฎ€ๅ•๏ผ ้ฉฑๅŠจๆŽฅๅ…ฅๅŽๅณๅฏไบซๅ—๏ผšๅŒๆญฅๅผ•ๆ“Žใ€ไผ ่พ“ๅผ•ๆ“Žใ€CLI ๅ‘ฝไปค็ญ‰ๅ…จ้ƒจๅŸบ็ก€่ฎพๆ–ฝใ€‚


๐Ÿ“ License

ๆœฌ้กน็›ฎ้‡‡็”จ MIT ่ฎธๅฏ่ฏใ€‚่ฏฆ่ง LICENSE ๆ–‡ไปถใ€‚

This project is licensed under the MIT License. See the LICENSE file for details.


๐Ÿค ่ดก็Œฎ / Contributing

ๆฌข่ฟŽๆไบค Issue ๅ’Œ Pull Request๏ผ

Issues and Pull Requests are welcome!


Made with โค๏ธ by Abu

โญ Star this repo ยท ๐Ÿ“– Report Bug ยท ๐Ÿ’ก Request Feature

About

High-extensibility microkernel CLI for cloud storage providers

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages