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 地址