天天看點

檔案夾複制 覆寫_一個好用的OneDrive網盤上傳工具,支援檔案和檔案夾上傳

檔案夾複制 覆寫_一個好用的OneDrive網盤上傳工具,支援檔案和檔案夾上傳
說明:

部落客很久前分享過使用

Shell

寫的

OneDrive

網盤上傳工具→傳送門,不過由于使用的是舊

API

,而微軟使舊

API

強制過時,也就是強制不讓用了,不讓授權了,導緻全部人無法使用,是以在外搬磚多日的萌咖大佬重新出山,使用

Golang

基于新的

API

寫了個效率更高的上傳工具,同時也修複了各種

Shell

版本遺留下來的小問題,該版本特點就是授權簡單,無需依賴,單檔案。同樣的也可以配合

Aria2

一起自動上傳,這裡就再分享下,友善下有需求的人。

更新

【2019.12.21】
 支援跳過網盤中已存在的同名檔案。

【2019.12.20】
目前同時支援國際版、個人版(家庭版)、中國版(世紀互聯)。

【2019.12.15】
修複授權失敗、上傳檔案大小為0等問題。
現已支援arm、x86、x64平台的系統。

【2019.11.29】
新增多線程上傳、MacOS用戶端。
修複了一個緻命bug,建議之前裝過的更新下程式。
           

功能

  • 支援上傳檔案和檔案夾到指定目錄,并保持上傳前的目錄結構。
  • 支援指令參數使用,友善外部程式調用。
  • 支援自定義上傳分塊大小。
  • 支援多線程上傳(多檔案同時上傳)。
  • 支援根據檔案大小動态調整重試次數,對抗不好的網絡環境。

使用

Github位址:

https://github.com/MoeClub/OneList/tree/master/OneDriveUploader

這裡隻詳細說下

Linux

的用法,

Windows

後面大概說下。

Windows

MacOS

系統下載下傳位址→傳送門,直接将程式下載下傳到本地後,按照下面方法進行授權、初始化,然後就可以使用指令上傳了。

1、授權認證

點選右側

URL

登入并授權,授權位址→【國際版、個人版(家庭版)】、【中國版(世紀互聯)】。

授權後會擷取一個

localhost

開頭打不開的連結,這裡複制好整個連結位址,包括

localhost

2、安裝OneDriveUploader
#64位系統下載下傳
wget https://raw.githubusercontent.com/MoeClub/OneList/master/OneDriveUploader/amd64/linux/OneDriveUploader -P /usr/local/bin/
#32位系統下載下傳
wget https://raw.githubusercontent.com/MoeClub/OneList/master/OneDriveUploader/i386/linux/OneDriveUploader -P /usr/local/bin/
#arm架構下載下傳
wget https://raw.githubusercontent.com/MoeClub/OneList/master/OneDriveUploader/arm/linux/OneDriveUploader -P /usr/local/bin/

#給予權限
chmod +x /usr/local/bin/OneDriveUploader
           
3、初始化配置
#國際版,将url換成你上面複制的授權位址,包括http://loaclhost。
OneDriveUploader -a "url"

#個人版(家庭版),将url換成你上面複制的授權位址,包括http://loaclhost。
OneDriveUploader -ms -a "url"

#中國版(世紀互聯),将url換成你上面複制的授權位址,包括http://loaclhost。
OneDriveUploader -cn -a "url"
           

如果提示

Init config file: /path/to/file/auth.json

類似資訊,則初始化成功。

4、使用指令
Usage of OneDriveUploader:
  -a string
        // 初始化授權
        Setup and Init auth.json.
  -b string
        // 自定義上傳分塊大小, 可以提高網絡吞吐量, 受限于磁盤性能和網絡速度.
        Set block size. [Unit: M; 5<=b<=60;] (default "10")
  -c string
        // 配置檔案路徑
        Config file. (default "auth.json")
  -n string
        // 上傳單個檔案時,在網盤中重命名
        Rename file on upload to remote.
  -r string
        // 上傳到網盤中的某個目錄, 預設: 根目錄
        Upload to reomte path.
  -s string
        // *必要參數, 要上傳的檔案或檔案夾
        Upload item.
  -t string
        // 線程數, 同時上傳檔案的個數. 預設: 2
        Set thread num. (default "2")
  -f
        // 開關(推薦)
        // 加上 -f 參數,強制讀取 auth.json 中的塊大小配置和多線程配置.
        // 不加 -f 參數, 每次覆寫儲存目前使用參數到 auth.json 配置檔案中.
        Force Read config form config file. [BlockSize, ThreadNum]
  -skip
        // 開關
        // 跳過上傳網盤中已存在的同名檔案. (預設不跳過)
        Skip exist file on remote.
  -cn
        // 開關
        // 授權中國版(世紀互聯), 需要此參數.
        OneDrive by 21Vianet.
  -ms
        // 開關
        // 授權個人版(家庭版), 需要此參數.
        OneDrive by Microsoft.
           
5、指令示例
#将目前目錄下的mm00.jpg檔案上傳到OneDrive網盤根目錄
OneDriveUploader -c /path/to/file/auth.json -s "mm00.jpg"

#将目前目錄下的mm00.jpg檔案上傳到OneDrive網盤根目錄,并改名為mm01.jpg
OneDriveUploader -c /path/to/file/auth.json -s "mm00.jpg" -n "mm01.jpg"

#将目前目錄下的Download檔案夾上傳到OneDrive網盤根目錄
OneDriveUploader -c /path/to/file/auth.json -s "Download" 

#将目前目錄下的Download檔案夾上傳到OneDrive網盤Test目錄中
OneDriveUploader -c /path/to/file/auth.json -s "Download" -r "Test"

#将同目錄下的Download檔案夾上傳到OneDriv網盤Test目錄中,使用10線程
OneDriveUploader -c /path/to/file/auth.json -t 10 -s "Download" -r "Test"

#将同目錄下的Download檔案夾上傳到OneDrive網盤Test目錄中,使用15線程,并設定分塊大小為20M
OneDriveUploader -c /path/to/file/auth.json -t 15 -b 20 -s "Download" -r "Test"
           

/path/to/file/auth.json

為初始化時,生成的

auth.json

絕對路徑位址,本文預設

/root/auth.json

,自行調整。

注意:

如果你之前上傳手動中斷過,再上傳的時候,請使用

-skip

參數,預設會跳過你已經上傳過的檔案/檔案夾。

Aria2自動上傳

同樣的這裡也會提供個配套的

Aria2

自動上傳腳本,上傳配置方法參考→傳送門。

上傳腳本代碼如下:

#!/bin/bash

GID="$1";
FileNum="$2";
File="$3";
MaxSize="15728640";
Thread="3";  #預設3線程,自行修改,伺服器配置不好的話,不建議太多
Block="20";  #預設分塊20m,自行修改
RemoteDIR="";  #上傳到Onedrive的路徑,預設為根目錄,如果要上傳到MOERATS目錄,""裡面請填成MOERATS
LocalDIR="/www/download/";  #Aria2下載下傳目錄,記得最後面加上/
Uploader="/usr/local/bin/OneDriveUploader";  #上傳的程式完整路徑,預設為本文安裝的目錄
Config="/root/auth.json";  #初始化生成的配置auth.json絕對路徑,參考第3步驟生成的路徑


if [[ -z $(echo "$FileNum" |grep -o '[0-9]*' |head -n1) ]]; then FileNum='0'; fi
if [[ "$FileNum" -le '0' ]]; then exit 0; fi
if [[ "$#" != '3' ]]; then exit 0; fi

function LoadFile(){
  if [[ ! -e "${Uploader}" ]]; then return; fi
  IFS_BAK=$IFS
  IFS=$'n'
  tmpFile="$(echo "${File/#$LocalDIR}" |cut -f1 -d'/')"
  FileLoad="${LocalDIR}${tmpFile}"
  if [[ ! -e "${FileLoad}" ]]; then return; fi
  ItemSize=$(du -s "${FileLoad}" |cut -f1 |grep -o '[0-9]*' |head -n1)
  if [[ -z "$ItemSize" ]]; then return; fi
  if [[ "$ItemSize" -ge "$MaxSize" ]]; then
    echo -ne "033[33m${FileLoad} 033[0mtoo large to spik.n";
    return;
  fi
  ${Uploader} -c "${Config}" -t "${Thread}" -b "${Block}" -s "${FileLoad}" -r "${RemoteDIR}"
  if [[ $? == '0' ]]; then
    rm -rf "${FileLoad}";
  fi
  IFS=$IFS_BAK
}
LoadFile;
           

Windows使用

這裡就随便補充下

Windows

使用,先下載下傳程式檔案,下載下傳位址→傳送門。

比如我将

exe

檔案放到

D

盤,然後使用

Win+R

,輸入

CMD

運作,調出視窗後,使用指令:

#進入D盤
cd /d D:

#國際版初始化,将url換成你上面複制的授權位址,包括http://loaclhost。
OneDriveUploader.exe -a "url"

#個人版(家庭版)初始化,将url換成你上面複制的授權位址,包括http://loaclhost。
OneDriveUploader.exe -ms -a "url"

#中國版(世紀互聯)初始化,将url換成你上面複制的授權位址,包括http://loaclhost。
OneDriveUploader.exe -cn -a "url"
           

然後上傳指令和上面一樣,隻需要把

OneDriveUploader

改成

OneDriveUploader.exe

即可。

最後經測試,該版本的上傳已經完全能應對各種稀奇古怪的字元問題,如果有問題可以回複下,貼上報錯代碼,友善修複。

版權聲明:本文為原創文章,版權歸 Rat's Blog 所有,轉載請注明出處!

本文連結: https://www. moerats.com/archives/10 06/

如教程需要更新,或者相關連結出現404,可以在文章下面評論留言。