Centos7 安装 rclone 并挂载 OneDrive

2021-01-10 发布 0条评论

RCLONE 是一个可以给 VPS 挂载 Onedrive/Google Drive 等国外主流网盘以及 FTP /WEBDAV等文件存储的强大软件。

Centos7 安装 rclone 首先需要安装依赖

        

#安装依赖

yum install fuse -y

#安装主程序

curl https://rclone.org/install.sh | sudo bash

1. 需要先在本地 Windows 获得 OneDrive 授权认证

下载 https://downloads.rclone.org/rclone-current-windows-amd64.zip

将解压后得到的 rclone.exe 移动到 C:Windows\System32

打开 CMD 运行输入 rclone authorize "onedrive"         (PS:部分系统提示rclone命令无效的,可以输入 ./rclone authorize "onedrive" )

此时浏览器会弹出 OneDrive 授权页面,授权完成后将得到下方的一串 token,保存好,备用。(PS:从{“access-XXXX,expiry:"0000”}全部复制,包括大括号)

Image

2. 返回 Centos7 初始化 rclone

执行 rclone config 配置 OneDrive

rclone config2021/01/10 01:36:44 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaultsNo remotes found - make a new onen) New remotes) Set configuration passwordq) Quit confign/s/q> n #输入N新建配置name> OneDrive #自定义配置名Type of storage to configure.Enter a string value. Press Enter for the default ("").Choose a number from below, or type in your own value 1 / 1Fichier   \ "fichier" 2 / Alias for an existing remote   \ "alias" 3 / Amazon Drive   \ "amazon cloud drive" 4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)   \ "s3" 5 / Backblaze B2   \ "b2" 6 / Box   \ "box" 7 / Cache a remote   \ "cache" 8 / Citrix Sharefile   \ "sharefile" 9 / Dropbox   \ "dropbox"10 / Encrypt/Decrypt a remote   \ "crypt"11 / FTP Connection   \ "ftp"12 / Google Cloud Storage (this is not Google Drive)   \ "google cloud storage"13 / Google Drive   \ "drive"14 / Google Photos   \ "google photos"15 / Hubic   \ "hubic"16 / In memory object storage system.   \ "memory"17 / JottaCloud   \ "jottacloud"18 / Koofr   \ "koofr"19 / Local Disk   \ "local"20 / Mail.ru Cloud   \ "mailru"21 / Mega   \ "mega"22 / Microsoft Azure Blob Storage   \ "azureblob"23 / Microsoft OneDrive   \ "onedrive"24 / OpenDrive   \ "opendrive"25 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)   \ "swift"26 / Pcloud   \ "pcloud"27 / Put.io   \ "putio"28 / QingCloud Object Storage   \ "qingstor"29 / SSH/SFTP Connection   \ "sftp"30 / Sugarsync   \ "sugarsync"31 / Transparently chunk/split large files   \ "chunker"32 / Union merges the contents of several remotes   \ "union"33 / Webdav   \ "webdav"34 / Yandex Disk   \ "yandex"35 / http Connection   \ "http"36 / premiumize.me   \ "premiumizeme"Storage> 23 #输入23选定网盘提供商OneDrive** See help for onedrive backend at: https://rclone.org/onedrive/ **Microsoft App Client IdLeave blank normally.Enter a string value. Press Enter for the default ("").client_id> #默认回车Microsoft App Client SecretLeave blank normally.Enter a string value. Press Enter for the default ("").client_secret> #默认回车Edit advanced config? (y/n)y) Yesn) No (default)y/n> #默认回车Remote configUse auto config? * Say Y if not sure * Say N if you are working on a remote or headless machiney) Yes (default)n) Noy/n> n #输入N开始配置OneDriveFor this to work, you will need rclone available on a machine that has a web browser available.Execute the following on your machine (same rclone version recommended) :    rclone authorize "onedrive"Then paste the result below:result> {"access_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"} #将前面在Windows下获取的token粘贴进来Choose a number from below, or type in an existing value 1 / OneDrive Personal or Business   \ "onedrive" 2 / Root Sharepoint site   \ "sharepoint" 3 / Type in driveID   \ "driveid" 4 / Type in SiteID   \ "siteid" 5 / Search a Sharepoint site   \ "search"Your choice> 1 #这里选择1个人Found 1 drives, please select the one you want to use:0: OneDrive (business) id=xxxxxxxxxxxxxxxxxxChose drive to use:> 0 #选择发现的OneDrive drivesFound drive 'root' of type 'business', URL: https://ofmeio-my.sharepoint.com/personal/test_e3_notpdpton_cn/DocumentsIs that okay?y) Yes (default)n) Noy/n> #默认回车--------------------[OneDrive]type = onedrivetoken = {"access_token":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}drive_id = xxxxxxxxxxxxxxxxxxdrive_type = business--------------------y) Yes this is OK (default)e) Edit this remoted) Delete this remotey/e/d> #信息核对正确回车确认即可Current remotes:Name                 Type====                 ====OneDrive             onedrivee) Edit existing remoten) New remoted) Delete remoter) Rename remotec) Copy remotes) Set configuration passwordq) Quit confige/n/d/r/c/s/q> q #退出配置程序

此时 rclone 初始化配置已经完成

按格式修改命令,挂载到本地目录

mkdir -p /www/OneDrive   #新建需要挂载的目录rclone mount 服务名:/远程路径 /本地路径 --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000例如:rclone mount OneDrive: /www/OneDrive --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

不填远程路径,默认根目录

回车后 SSH 会停留在当前命令,只要不报错就基本上算是成功了。

新建 SSH,输入 df -h 可以查看已经挂载到本地,只要有OneDrive目录,就是正常的,有些会显示大小不[文]正常,但好像不影响使用,具体原因不知道。

4. 配置 rclone 开机自启并挂载 OneDrive

由于 rclone 仅能在前台运行,SSH 断掉就失效

我们需要一个开机自启的脚本保持人clone持续运行

输入 vi rclone 创建

#!/bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATHNAME_BIN="rclone"### BEGIN INIT INFO# Provides:          rclone# Required-Start:    $all# Required-Stop:     $all# Default-Start:     2 3 4 5# Default-Stop:      0 1 6# Short-Description: Start rclone at boot time# Description:       Enable rclone by daemon.### END INIT INFONAME="OneDrive" #rclone 服务名REMOTE='Download' #远程目录,OneDrive 网盘里的挂载的一个文件夹,填 / 就是根目录LOCAL='/mnt/drive-test' #本地路径Green_font_prefix="\033[32m" && Red_font_prefix="\033[31m" && Green_background_prefix="\033[42;37m" && Red_background_prefix="\033[41;37m" && Font_color_suffix="\033[0m"Info="${Green_font_prefix}[信息]${Font_color_suffix}"Error="${Red_font_prefix}[错误]${Font_color_suffix}"RETVAL=0check_running(){        PID="$(ps -C $NAME_BIN -o pid= |head -n1 |grep -o '[0-9]\{1,\}')"        if [[ ! -z ${PID} ]]; then                return 0        else                return 1        fi}do_start(){        check_running        if [[ $? -eq 0 ]]; then                echo -e "${Info} $NAME_BIN (PID ${PID}) 正在运行..." && exit 0        else                fusermount -zuq $LOCAL >/dev/null 2>&1                mkdir -p $LOCAL                sudo /usr/bin/rclone mount $NAME:$REMOTE $LOCAL --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 >/dev/null 2>&1 &                sleep 2s                check_running                if [[ $? -eq 0 ]]; then                        echo -e "${Info} $NAME_BIN 启动成功 !"                else                        echo -e "${Error} $NAME_BIN 启动失败 !"                fi        fi}do_stop(){        check_running        if [[ $? -eq 0 ]]; then                kill -9 ${PID}                RETVAL=$?                if [[ $RETVAL -eq 0 ]]; then                        echo -e "${Info} $NAME_BIN 停止成功 !"                else                        echo -e "${Error} $NAME_BIN 停止失败 !"                fi        else                echo -e "${Info} $NAME_BIN 未运行"                RETVAL=1        fi        fusermount -zuq $LOCAL >/dev/null 2>&1}do_status(){        check_running        if [[ $? -eq 0 ]]; then                echo -e "${Info} $NAME_BIN (PID $(echo ${PID})) 正在运行..."        else                echo -e "${Info} $NAME_BIN 未运行 !"                RETVAL=1        fi}do_restart(){        do_stop        do_start}case "$1" in        start|stop|restart|status)        do_$1        ;;        *)        echo "使用方法: $0 { start | stop | restart | status }"        RETVAL=1        ;;esacexit $RETVAL

此脚本出自 https://raw.githubusercontent.com/x91270/Centos/master/rcloned

使用时候先改好里面的变量

NAME="OneDrive" #rclone 服务名REMOTE='Download' #远程目录,OneDrive 网盘里的挂载的一个文件夹,填 / 就是根目录LOCAL='/mnt/drive-test' #本地路径

设置自启动

mv rclone /etc/init.d/rclonechmod +x /etc/init.d/rclonechkconfig rclone onbash /etc/init.d/rclone start

至此,已经全部结束。

附几个其他命令:

卸载挂载目录

#卸载umount /mnt/drive-test

启动与停止自启脚本命令

bash /etc/init.d/rclone startbash /etc/init.d/rclone stop

发表评论