github.com/upyun/upx@v0.4.7-0.20240419023638-b184a7cb7c10/README.md (about) 1 > upx is a tool for managing files in UPYUN. Mac, Linux, Windows supported 2 3 ![Test](https://github.com/upyun/upx/workflows/Test/badge.svg) 4 ![Build](https://github.com/upyun/upx/workflows/Build/badge.svg) 5 ![Lint](https://github.com/upyun/upx/workflows/Lint/badge.svg) 6 [![Go Report Card](https://goreportcard.com/badge/github.com/upyun/upx)](https://goreportcard.com/report/github.com/upyun/upx) 7 ![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/upyun/upx?label=latest%20release) 8 9 ## 基本功能 10 11 - [x] 支持基本文件系统操作命令,如 `mkdir`, `cd`, `ls`, `rm`, `pwd` 12 - [x] 支持上传文件或目录到又拍云存储 13 - [x] 支持从又拍云存储下载文件或目录到本地 14 - [x] 支持增量同步文件到又拍云存储 15 - [x] 支持删除又拍云存储中的文件或目录,并且支持通配符 `*` 16 - [x] 支持多用户,多操作系统 17 - [x] 支持基于时间列目录以及删除文件 18 - [x] 支持 `tree` 获取目录结构 19 - [x] 支持提交异步处理任务 20 - [x] 更加准确简洁的进度条 21 - [x] 使用 UPYUN GoSDK v3 22 - [x] 同步目录支持 --delete 23 - [x] 支持 CDN 缓存刷新 24 25 ## 安装 26 27 ### 可执行程序二进制下载地址 28 29 - [Windows amd64](https://collection.b0.upaiyun.com/softwares/upx/upx_0.4.6_windows_amd64.zip) 30 - [Windows arm64](https://collection.b0.upaiyun.com/softwares/upx/upx_0.4.6_windows_arm64.zip) 31 - [Windows armv6](https://collection.b0.upaiyun.com/softwares/upx/upx_0.4.6_windows_armv6.zip) 32 - [Windows armv7](https://collection.b0.upaiyun.com/softwares/upx/upx_0.4.6_windows_armv7.zip) 33 - [Mac amd64](https://collection.b0.upaiyun.com/softwares/upx/upx_0.4.6_darwin_amd64.tar.gz) 34 - [Mac arm64](https://collection.b0.upaiyun.com/softwares/upx/upx_0.4.6_darwin_arm64.tar.gz) 35 - [Linux amd64](https://collection.b0.upaiyun.com/softwares/upx/upx_0.4.6_linux_amd64.tar.gz) 36 - [Linux i386](https://collection.b0.upaiyun.com/softwares/upx/upx_0.4.6_linux_386.tar.gz) 37 - [Linux arm64](https://collection.b0.upaiyun.com/softwares/upx/upx_0.4.6_linux_arm64.tar.gz) 38 - [Linux armv6](https://collection.b0.upaiyun.com/softwares/upx/upx_0.4.6_linux_armv6.tar.gz) 39 - [Linux armv7](https://collection.b0.upaiyun.com/softwares/upx/upx_0.4.6_linux_armv7.tar.gz) 40 41 ### 源码编译 42 43 > 需要安装 [Golang 编译环境](https://golang.org/dl/) 44 45 ``` 46 $ git clone https://github.com/upyun/upx.git 47 $ cd upx && make 48 ``` 49 or 50 51 ``` 52 $ go get -u github.com/upyun/upx/cmd/upx@master 53 ``` 54 55 ### Windows 56 57 ``` 58 PS> scoop bucket add carrot https://github.com/upyun/carrot.git 59 Install upx from github or upyun cdn: 60 PS> scoop install upx-github 61 PS> scoop install upx-upcdn 62 ``` 63 64 ### Docker 65 66 ```bash 67 docker build -t upx . 68 docker run --rm upx upx -v 69 ``` 70 71 --- 72 73 ## 使用 74 75 > 所有命令都支持 `-h` 查看使用方法 76 77 | 命令 | 说明 | 78 | -------- | ---- | 79 | [login](#login) | 登录又拍云存储 | 80 | [logout](#logout) | 退出帐号 | 81 | [sessions](#sessions) | 查看所有的会话 | 82 | [switch](#switch) | 切换会话 | 83 | [info](#info) | 显示服务名、用户名等信息 | 84 | [ls](#ls) | 显示当前目录下文件和目录信息 | 85 | [cd](#cd) | 改变工作目录(进入一个目录)| 86 | [pwd](#pwd) | 显示当前所在目录 | 87 | [mkdir](#mkdir) | 创建目录 | 88 | [tree](#tree) | 显示目录结构 | 89 | [get](#get) | 下载一个文件或目录 | 90 | [put](#put) | 上传一个文件或目录 | 91 | [upload](#upload) | 上传多个文件或目录或 http(s) 文件, 支持 Glob 模式过滤上传文件| 92 | [mv](#mv) | 在同一 bucket 内移动文件| 93 | [cp](#cp) | 在同一 bucket 内复制文件 | 94 | [rm](#rm) | 删除目录或文件 | 95 | [sync](#sync) | 目录增量同步,类似 rsync | 96 | [auth](#auth) | 生成包含空间名操作员密码信息的 auth 字符串 | 97 | [post](#post) | 提交异步处理任务 | 98 | [purge](#purge) | 提交 CDN 缓存刷新任务 | 99 100 101 | global options | 说明 | 102 | -------------- | ---- | 103 | --quiet, -q | 不显示信息 | 104 | --auth value | auth 字符串 | 105 | --help, -h | 显示帮助信息 | 106 | --version, -v | 显示版本号 | 107 108 109 ## login 110 > 使用又拍云操作员账号登录服务, 登录成功后将会保存会话,支持同时登录多个服务, 使用 `switch` 切换会话。 111 112 需要提供的验证字段 113 + ServiceName: 服务(bucket)的名称 114 + Operator: 操作员名 115 + Password: 操作员密码 116 117 118 #### 语法 119 ```bash 120 upx login 121 ``` 122 123 #### 示例 124 ```bash 125 upx login 126 127 #ServiceName: testService 128 #Operator: upx 129 #Password: password 130 ``` 131 132 ## logout 133 > 退出当前登录的会话,如果存在多个登录的会话,可以使用 `switch` 切换到需要退出的会话,然后退出。 134 135 136 #### 语法 137 ```bash 138 upx logout 139 ``` 140 141 #### 示例 142 ```bash 143 upx logout 144 145 # Goodbye upx/testService ~ 146 ``` 147 148 149 ## sessions 150 > 列举出当前登录的所有会话 151 152 #### 语法 153 ```bash 154 upx sessions 155 ``` 156 157 #### 示例 158 ```bash 159 upx sessions 160 161 # > mybucket1 162 # > mybucket2 163 # > mybucket3 164 ``` 165 166 ## switch 167 > 切换登录会话, 通过 `sessions` 命令可以查看所有的会话列表。 168 169 | args | 说明 | 170 | --------- | ---- | 171 | service-name | 服务名称(bucket) | 172 173 #### 语法 174 ```bash 175 upx switch <service-name> 176 ``` 177 178 #### 示例 179 ```bash 180 upx switch mybucket3 181 ``` 182 183 ## info 184 > 查看当前服务的状态。 185 186 #### 语法 187 ```bash 188 upx info 189 ``` 190 191 #### 示例 192 ```bash 193 upx info 194 > ServiceName: mybucket1 195 > Operator: tester 196 > CurrentDir: / 197 > Usage: 2.69GB 198 ``` 199 200 ## ls 201 > 默认按文件修改时间先后顺序输出 202 203 | args | 说明 | 204 | --------- | ---- | 205 | remote-path | 远程路径 | 206 207 | options | 说明 | 208 | --------- | ---- | 209 | -d | 仅显示目录 | 210 | -r | 文件修改时间倒序输出 | 211 | --color | 根据文件类型输出不同的颜色 | 212 | -c v | 仅显示前 v 个文件或目录, 默认全部显示 | 213 | --mtime v | 通过文件被修改的时间删选,参考 Linux `find` | 214 215 #### 语法 216 ```bash 217 upx ls [options...] [remote-path] 218 ``` 219 220 #### 示例 221 222 查看根目录下的文件 223 ```bash 224 upx ls / 225 ``` 226 227 只查看根目录下的目录 228 ```bash 229 upx ls -d / 230 ``` 231 232 只查看根目录下的修改时间大于3天的文件 233 ```bash 234 upx ls --mtime +3 / 235 ``` 236 237 只查看根目录下的修改时间小于1天的文件 238 ```bash 239 upx ls --mtime -1 / 240 ``` 241 242 ## cd 243 > 改变当前的工作路径,默认工作路径为根目录, 工作路径影响到操作时的默认远程路径。 244 245 | args | 说明 | 246 | --------- | ---- | 247 | remote-path | 远程路径 | 248 249 #### 语法 250 ```bash 251 upx cd <remote-path> 252 ``` 253 254 #### 示例 255 将当前工作路径切换到 `/www` 256 ``` 257 upx cd /www 258 ``` 259 260 ## pwd 261 > 显示当前所在的远程目录 262 263 #### 语法 264 ```bash 265 upx pwd 266 ``` 267 268 #### 示例 269 ```bash 270 upx pwd 271 272 > /www 273 ``` 274 275 ## mkdir 276 > 创建远程目录 277 278 | args | 说明 | 279 | --------- | ---- | 280 | remote-dir | 远程目录 | 281 282 #### 语法 283 ```bash 284 upx mkdir <remote-dir> 285 ``` 286 287 #### 示例 288 在当前工作目录下创建一个名为 mytestbucket 的目录 289 ```bash 290 upx mkdir mytestbucket 291 ``` 292 293 在根目录下创建一个名为 mytestbucket 的目录 294 ```bash 295 upx mkdir /mytestbucket 296 ``` 297 298 ## tree 299 > 显示目录结构,树形模式显示 300 301 #### 语法 302 ```bash 303 upx tree 304 ``` 305 306 #### 示例 307 查看 `/ccc` 目录下的目录结构 308 ```bash 309 upx tree /ccc 310 > |-- aaacd 311 > ! |-- mail4788ca.png 312 > |-- ccc 313 > ! |-- Eroge de Subete wa Kaiketsu Dekiru! The Animation - 02 (2022) [1080p-HEVC-WEBRip][8D1929F5].mkv 314 > ! |-- baima_text_auditer.tar 315 > ! |-- linux-1.txt 316 ``` 317 318 ## get 319 > 下载文件 320 321 | args | 说明 | 322 | --------- | ---- | 323 | remote-path | 远程路径,支持文件或文件夹 | 324 | saved-file | 需要保存到的本地目录,或指定完整的文件名 | 325 326 | options | 说明 | 327 |---------|-----------------------------| 328 | -w | 多线程下载 (1-10) (default: 5) | 329 | -c | 恢复中断的下载 | 330 | --start | 只下载路径字典序大于等于 `start` 的文件或目录 | 331 | --end | 只下载路径字典序小于 `end` 的文件或目录 | 332 333 334 #### 语法 335 ```bash 336 upx get [options] <remote-path> [saved-file] 337 ``` 338 339 #### 示例 340 下载文件 341 ```bash 342 upx get /baima_text_auditer.tar 343 ``` 344 345 下载文件时指定保存路径 346 ```bash 347 upx get /baima_text_auditer.tar ./baima_text_auditer2.tar 348 ``` 349 350 多线程下载文件 351 ```bash 352 upx get -w 10 /baima_text_auditer.tar 353 ``` 354 355 恢复中断的下载 356 ```bash 357 upx get -c /baima_text_auditer.tar 358 ``` 359 360 ## put 361 > 上传文件或文件夹 362 363 | args | 说明 | 364 | --------- | ---- | 365 | local-file | 本地的文件或文件夹 | 366 | url | 远端 url 文件 | 367 | remote-file | 需要保存到的远程文件路径或文件夹 | 368 369 | options | 说明 | 370 |---------|-----------------------------| 371 | -w | 多线程下载 (1-10) (default: 5) | 372 | -all | 上传包含目录下隐藏的文件和文件夹 | 373 #### 语法 374 ```bash 375 upx put <local-file>|<url> [remote-file] 376 ``` 377 378 #### 示例 379 上传本地文件,到远程绝对路径 380 ```bash 381 upx put aaa.mp4 /video/aaa.mp4 382 ``` 383 384 上传本地目录,到远程绝对路径 385 ```bash 386 upx put ./video /myfiles 387 ``` 388 389 上传 url 文件,到远程绝对路径 390 ```bash 391 upx put https://xxxx.com/myfile.tar.gz /myfiles 392 ``` 393 394 保存上传文件的错误日志 395 ```bash 396 upx put . --err-log=err.log 397 ``` 398 399 ## upload 400 > 上传文件或目录,支持多文件,文件名匹配 401 402 | args | 说明 | 403 | --------- | ---- | 404 | local-file | 本地的文件或文件夹, 或匹配文件规则 | 405 | remote-path | 需要保存到的远程文件路径 | 406 407 | options | 说明 | 408 |---------|-----------------------------| 409 | -w | 多线程下载 (1-10) (default: 5) | 410 | -all | 上传包含目录下隐藏的文件和文件夹 | 411 | --remote | 远程路径 | 412 413 #### 语法 414 ```bash 415 upx upload [--remote remote-path] <local-file> 416 ``` 417 418 #### 示例 419 420 上传当前路径下的所有 `jpg` 图片到 `/images` 目录 421 ``` 422 upx upload --remote /images ./*.jpg 423 ``` 424 425 保存上传文件的错误日志 426 ```bash 427 upx upload . --err-log=1.log 428 ``` 429 430 ## rm 431 432 > 默认不会删除目录,支持通配符 `*` 433 434 | args | 说明 | 435 | --------- | ---- | 436 | remote-file | 远程文件 | 437 438 | options | 说明 | 439 | --------- | ---- | 440 | -d | 仅删除目录 | 441 | -a | 删除目录跟文件 | 442 | --async | 异步删除,目录可能需要二次删除 | 443 | --mtime v | 参考 Linux `find` | 444 445 #### 语法 446 ```bash 447 upx rm [options] <remote-file> 448 ``` 449 450 #### 示例 451 删除目录 `/www` 452 ```bash 453 upx rm -d /www 454 ``` 455 456 删除文件 `/aaa.png` 457 ```bash 458 upx rm /aaa.png 459 ``` 460 461 ## mv 462 463 > 在 `bucket` 内部移动文件 464 465 | args | 说明 | 466 | --------- | ---- | 467 | source-file | 需要移动的源文件 | 468 | dest-file | 需要移动到的目标文件 | 469 470 | options | 说明 | 471 | --------- | ---- | 472 | -f | 允许覆盖目标文件 | 473 474 #### 语法 475 ```bash 476 upx mv [options] <source-file> <dest-file> 477 ``` 478 479 #### 示例 480 移动文件 481 ```bash 482 upx mv /aaa.mp4 /abc/aaa.mp4 483 ``` 484 485 移动文件,如果目标存在则强制覆盖 486 ```bash 487 upx mv -f /aaa.mp4 /abc/aaa.mp4 488 ``` 489 490 ## cp 491 492 > 在 `bucket` 内部拷贝文件 493 494 | args | 说明 | 495 | --------- | ---- | 496 | source-file | 需要复制的源文件 | 497 | dest-file | 需要复制到的目标文件 | 498 499 | options | 说明 | 500 | --------- | ---- | 501 | -f | 允许覆盖目标文件 | 502 503 #### 语法 504 ```bash 505 upx mv [options] <source-file> <dest-file> 506 ``` 507 508 #### 示例 509 移动文件 510 ```bash 511 upx cp /aaa.mp4 /abc/aaa.mp4 512 ``` 513 514 复制文件,如果目标存在则强制覆盖 515 ```bash 516 upx cp -f /aaa.mp4 /abc/aaa.mp4 517 ``` 518 519 ## sync 520 521 > sync 本地路径 存储路径 522 523 | args | 说明 | 524 | --------- | ---- | 525 | local-path | 本地的路径 | 526 | remote-path | 远程文件路径 | 527 528 | options | 说明 | 529 | -------- | ---- | 530 | -w | 指定并发数,默认为 5 | 531 | --delete | 删除上一次同步后本地删除的文件 | 532 533 #### 语法 534 ```bash 535 upx sync <local-path> <remote-path> 536 ``` 537 538 #### 示例 539 同步本地路径和远程路径 540 ```bash 541 upx sync ./workspace /workspace 542 ``` 543 544 ## auth 545 546 > 生成包含空间名操作员密码信息, auth 空间名 操作员 密码 547 548 #### 示例 549 当命令中包含 `--auth` 参数时,会忽略已登陆的信息。 550 551 生成 auth 字符串 552 ```bash 553 upx auth mybucket user password 554 ``` 555 556 通过生成的 auth 字符串上传文件 557 ```bash 558 upx --auth=auth-string put temp.file 559 ``` 560 561 562 ## post 563 564 | options | 说明 | 565 | -------------- | ---- | 566 | --app value | app 名称 | 567 | --notify value | 回调地址 | 568 | --task value | 任务文件名 | 569 570 ## purge 571 572 > purge url --list urls 573 574 | options | 说明 | 575 | -------------- | ---- | 576 | --list value | 批量刷新文件名 | 577 578 579 ## TODO 580 581 - [x] put 支持断点续传 582 - [ ] upx 支持指定 API 地址