安装rclone

  • A+
所属分类:系统文档

安装

Rclone是一个Go程序,以单个二进制文件的形式出现。

快速入门

下载相关的二进制文件.
从档案中提取rclone可执行文件,在Windows中为rclone.exe
运行rclone config来设置。更多细节见rclone config docs
可选择配置自动执行.

请看下面一些扩展的Linux / macOS / Windows说明.

关于如何使用rclone,请参见用法文档,或者运行rclone -h

已经安装的rclone可以使用rclone selfupdate命令轻松地更新到最新版本。

脚本安装

要在Linux/MacOS/BSD系统上安装rclone,请运行。

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

对于测试版安装,运行。

sudo -v ; curl https://rclone.org/install.sh | sudo bash -s beta

注意,这个脚本首先检查所安装的rclone的版本,如果不需要就不会重新下载。

Linux安装{#linux}

预编译的二进制文件{#linux-precompiled}。

下载和解压缩

curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
cd rclone-*-linux-amd64

复制二进制文件

sudo cp rclone /usr/bin/
sudo chown root:root /usr/bin/rclone
sudo chmod 755 /usr/bin/rclone

安装 manpage

sudo mkdir -p /usr/local/share/man/man1
sudo cp rclone.1 /usr/local/share/man/man1/
sudo mandb

运行rclone config进行设置。更多细节见rclone config docs.

rclone config

macOS安装 {#macos}

用brew {#macos-brew}安装。

brew install rclone

注意:这个版本的rclone将不再支持`mount’(见#5373)。如果想在macOS上挂载,要么安装一个预编译的二进制文件,要么在install-from-source时启用相关选项。

请注意,这是一个不受rclone开发者控制的第三方安装程序,所以它可能已经过时了。它的当前版本如下.

![Homebrew package]()

预编译的二进制文件,使用curl {#macos-precompiled}。

为了避免macOS gatekeeper强制要求二进制文件签名和公证的问题,使用`curl’下载即可。

Download the latest version of rclone.

cd && curl -O https://downloads.rclone.org/rclone-current-osx-amd64.zip

解开下载的文件,并在解压后的文件夹中刻录。.

unzip -a rclone-current-osx-amd64.zip && cd rclone-*-osx-amd64

将rclone移至你的$PATH。你会被提示输入密码.

sudo mkdir -p /usr/local/bin
sudo mv rclone /usr/local/bin/

(即使目录已经存在,mkdir命令也可以安全运行)。

删除遗留的文件.

cd .. && rm -rf rclone-*-osx-amd64 rclone-current-osx-amd64.zip

Run rclone config to setup. See [rclone config docs](/docs.运行rclone config来设置。更多细节见rclone config docs。html) for more details.

rclone config

预编译的二进制文件,使用网络浏览器{#macos-precompiled-web}。

当用网络浏览器下载二进制文件时,浏览器将设置macOS gatekeeper的隔离属性。从Catalina开始,当试图运行
`rclone’,会出现一个弹出窗口说。

"rclone" cannot be opened because the developer cannot be verified.
macOS cannot verify that this app is free from malware.

最简单的修复方法是运行

xattr -d com.apple.quarantine rclone

Windows安装 {#windows}

预编译的二进制文件 {#windows-precompiled}

通过点击这些链接,为你的处理器类型获取正确的二进制文件。如果不确定,请使用第一个链接.

Intel/AMD – 64 Bit
Intel/AMD – 32 Bit
ARM – 64 Bit

在资源管理器中打开这个文件,提取rclone.exe。Rclone是一个可移植的可执行文件,所以你可以把它放在方便的地方。

打开CMD窗口(或Powershell),运行二进制文件。注意,rclone默认不会启动GUI,它在CMD窗口中运行。

运行rclone.exe config进行设置。更多细节见rclone config docs
可选择配置自动执行

如果你打算使用rclone mount功能,那么你也需要安装第三方工具[WinFsp](https://winfsp.dev/)。

Chocolatey软件包管理器{#windows-chocolatey}。

确保你安装了Choco

choco search rclone
choco install rclone

这将在你的Windows机器上安装rclone。如果你打算使用[rclone mount](https://rclone.cn/rclone_mount.html),那么

choco install winfsp

也会安装这个。

请注意,这是一个不受rclone开发者控制的第三方安装程序,所以它可能已经过时了。它的当前版本如下。

![Chocolatey package]()

软件包管理器的安装 {#软件包管理器}。

许多Linux、Windows、macOS和其他操作系统发行版都打包和分发了rclone。

分发的rclone版本经常是相当过时的,因此我们推荐其他的安装方法,如果可能的话.

你可以在这里了解你的操作系统发行版的软件包是否是最新的。.

![Packaging status]()

Docker安装{#docker}。

rclone的开发者维护了一个[docker image for rclone](https://hub.docker.com/r/rclone/rclone)。

这些图像是作为发布过程的一部分,基于最小的Alpine Linux建立的。.

:latest标签将始终指向最新的稳定版本。 你可以使用:beta标签来获取最新的主版本。 你也可以使用版本标签,例如::1.49.1:1.49:1

$ docker pull rclone/rclone:latest
latest: Pulling from rclone/rclone
Digest: sha256:0e0ced72671989bb837fea8e88578b3fc48371aa45d209663683e24cfdaa0e11
...
$ docker run --rm rclone/rclone:latest version
rclone v1.49.1
- os/arch: linux/amd64
- go version: go1.12.9

从rclone镜像启动rclone Docker容器时,有几个命令行选项需要考虑。

你需要将主机rclone的配置目录/config/rclone挂载到Docker容器中。由于rclone在其配置文件中更新令牌,而且更新过程涉及到文件重命名,你需要挂载整个主机rclone配置文件目录,而不仅仅是单个主机rclone配置文件。

你需要在/data处挂载一个主机数据目录到Docker容器。

默认情况下,Docker容器内的rclone二进制文件以UID=0(root)运行。 因此,在运行中创建的所有文件都有UID=0。 如果你的配置文件和数据文件以非根的UID:GID驻留在主机上,你需要在容器启动命令行中传递这些信息.

如果你想访问RC接口(无论是通过API还是Web UI),需要将--rc-addr设置为:5572,以便从容器外连接到它。关于为什么要这样做的解释见这里

注意:用户在运行这个容器时,如果将docker网络设置为 "host",那么可能应该将其设置为只监听localhost,并将 "127.0.0.1:5572 "作为docker的值。
--rc-addr

可以在用户空间的Docker容器中使用rclone mount,并将产生的fuse mount暴露给主机。具体的 "docker run "选项在不同的主机上可能略有不同。请看,例如这个[线程](https://github.com/moby/moby/issues/9448)中的讨论

你还需要挂载主机/etc/passwd/etc/group,以便fuse能在容器内工作。

下面是在Ubuntu 18.04.3主机上测试的一些命令。

# config on host at ~/.config/rclone/rclone.conf
# data on host at ~/data

# make sure the config is ok by listing the remotes
docker run --rm \
    --volume ~/.config/rclone:/config/rclone \
    --volume ~/data:/data:shared \
    --user $(id -u):$(id -g) \
    rclone/rclone \
    listremotes

# perform mount inside Docker container, expose result to host
mkdir -p ~/data/mount
docker run --rm \
    --volume ~/.config/rclone:/config/rclone \
    --volume ~/data:/data:shared \
    --user $(id -u):$(id -g) \
    --volume /etc/passwd:/etc/passwd:ro --volume /etc/group:/etc/group:ro \
    --device /dev/fuse --cap-add SYS_ADMIN --security-opt apparmor:unconfined \
    rclone/rclone \
    mount dropbox:Photos /data/mount &
ls ~/data/mount
kill %1

源安装 {#源}

确保你已经安装了git和Go。需要1.17或更新的Go版本,建议使用最新版本。你可以从你的软件包管理器中获取,或者从golang.org/dl下载。然后你可以运行以下程序。

git clone https://github.com/rclone/rclone.git
cd rclone
go build

这将检查出子文件夹rclone中的rclone源代码,你可以随后修改并发送拉动请求。然后,它将在同一文件夹中构建rclone可执行文件。作为初步检查,你现在可以运行./rclone版本(Windows下为.\rclone版本)。

注意,在macOS和Windows上,mount命令将不可用,除非你指定一个额外的构建标签`cmount’。

go build -tags cmount

这假定你的PATH中有一个GCC兼容的C编译器(GCC或Clang),因为它使用cgo。但是在Windows上,cmount的实现所基于的cgofuse库也支持无cgo的构建,即通过设置环境变量CGO_ENABLED为0值(静态链接)。从1.59版开始,rclone的官方Windows版本就是这样构建的。通过使用GCC的MinGW端口,例如在MSYS2发行版中安装它,仍然可以在Windows上用cgo构建(确保你安装在经典的mingw64子系统中,ucrt64版本并不兼容)。

此外,在Windows上,你必须安装第三方工具WinFsp,并选择 "开发者 "功能。如果用cgo构建,你还必须设置环境变量CPATH,指向WinFsp安装中的fuse include目录(通常是C:\Program Files (x86)\WinFsp\inc\fuse)。

你也可以添加参数-ldflags -s(包括或不包括-tags cmount),以省略符号表和调试信息,使可执行文件更小;-trimpath以删除对本地文件系统路径的引用。这就是官方rclone版本的构建方式。

go build -trimpath -ldflags -s -tags cmount

你可以通过Makefile来运行go build命令,而不是直接执行。它把版本号的后缀从"-DEV "改为"-beta",并附加了提交细节。它还会将生成的rclone可执行文件复制到你的GOPATH bin文件夹($(go env GOPATH)/bin,默认对应于~/go/bin/rclone)。

make

要在macOS和Windows上的Makefile构建中包含mount命令。

make GOTAGS=cmount

还有其他的make目标可以用于更高级的构建,比如为所有支持的操作系统/架构进行交叉编译,将图标和版本信息资源嵌入到windows可执行文件中,并将结果打包成发布工件。 详情请参见Makefilecross-compile.go

另一种方法是下载源码,将rclone作为一个普通的Go包,在一次操作中构建和安装。源码将被保存在Go模块缓存中,而生成的可执行文件将在你的GOPATH bin文件夹中($(go env GOPATH)/bin,默认对应于~/go/bin/rclone)。

使用Go 1.17或更新版本。

go install github.com/rclone/rclone@latest

对于1.17以上的Go版本(不要**使用-u标志,它会导致Go尝试更新rclone使用的依赖关系,有时这些依赖关系在当前版本中无法使用)。

go get github.com/rclone/rclone

Ansible安装 {#ansible}

这可以通过Stefan Weichinger的ansible角色来实现。

说明

git clone https://github.com/stefangweichinger/ansible-rclone.git到你的本地角色目录下
2.将该角色添加到你想要安装rclone的主机上。

    - hosts: rclone-hosts
      roles:
          - rclone

便携式安装 {#portable}

如[上]所述(/install.html#quickstart),rclone是一个单一的可执行文件(rclone,或Windows下的rclone.exe),你可以下载一个压缩包并解压到你选择的位置。当执行不同的命令时,它可能在不同的位置创建文件,如配置文件和各种临时文件。默认情况下,这些文件的位置与你的操作系统有关,例如,配置文件在你的用户配置文件目录下,临时文件在标准的临时目录下,但你可以定制所有这些文件,例如,使一个完全独立的、可移植的安装。

运行config paths命令以查看rclone将使用的位置。

要覆盖它们,需要设置相应的选项(作为命令行参数,或作为
environment variables):

–config
–cache-dir
–temp-dir

自动启动

如上所述,在安装和配置了rclone之后,你就可以把rclone作为一个交互式的命令行工具来使用了。如果你的目标是进行周期性的操作。
比如常规的sync,你可能想在操作系统的调度器中配置你的rclone命令。如果你需要公开类似服务的功能,比如远程控制GUI服务挂载,你通常希望rclone命令总是在后台运行,把它配置在服务基础设施中运行可能是个更好的选择。下面是一些关于如何在不同操作系统上实现这一目标的备选方案。

注意:在设置自动运行之前,强烈建议你先从命令提示符中手动测试你的命令。

在Windows上自动启动

在Windows上自动启动的最相关替代品是。

在用户登录时使用启动文件夹运行
在用户登录时、系统启动时或使用任务调度器的时间表上运行
使用Windows服务在系统启动时运行

在后台运行

Rclone是一个控制台程序,所以如果不是从现有的命令提示符启动,例如从快捷方式启动rclone.exe,它将打开一个命令提示符窗口。 当配置rclone从任务调度器和windows服务运行时,你可以设置它在后台隐藏运行。从rclone 1.54版开始,你也可以通过添加选项--no-console使它在任何地方隐藏运行(当程序启动时,它仍然会短暂地闪烁)。由于rclone通常将信息和错误信息写到控制台,你必须将其重定向到一个文件才能看到。 Rclone有一个内置的选项--log-file

在后台运行同步的命令示例。

c:\rclone\rclone.exe sync c:\files remote:/files --no-console --log-file c:\rclone\logs\sync_files.txt

用户账户

正如mount文档中提到的,以管理员身份创建的挂载驱动器对其他账户是不可见的,甚至是被提升为管理员的账户。通过以内置的 "SYSTEM "用户账户运行mount命令,它将创建系统中所有人都可以访问的驱动器。计划任务和Windows服务都可以用来实现这个目的。

注意: 记住,当rclone以SYSTEM用户身份运行时,它看到的用户配置文件将不是你的。这意味着,如果你平时运行rclone时,配置文件在默认位置,那么当你作为系统用户运行时,要想使用相同的配置,你必须明确告诉rclone用--config选项找到它,否则它将在系统用户配置文件路径(C:\Windows\System32\config\systemprofile)中寻找。
要从命令提示符中手动测试你的命令,你可以用微软Sysinternals套件中的PsExec工具来运行它,该工具使用选项sSYSTEM用户身份执行命令。

从启动文件夹启动

为了快速执行rclone命令,你可以简单地为你想运行的完整rclone命令创建一个标准的Windows资源管理器快捷方式。如果你把这个快捷方式存放在特殊的 "启动 "开始菜单文件夹中,Windows会在登录时自动运行它。要在Windows Explorer中打开这个文件夹,输入路径%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup,或者C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp,如果你想让这个命令为每个登录的用户启动。

这是自动启动rclone的最简单的方法,但它没有提供任何功能来设置它以不同的用户身份运行,或对某些事件设置条件或行动。如下文所述,设置一个计划任务往往会给你带来更好的结果。

从任务调度器启动

任务调度器是Windows中内置的管理工具,它可以用来配置rclone,使其以高度可配置的方式自动启动,例如按计划定期、在用户登录时或在系统启动时。它可以被配置为以当前用户的身份运行,或者对于需要对所有用户开放的挂载命令,它可以以`SYSTEM’用户的身份运行。 有关技术信息,请参见https://docs.microsoft.com/windows/win32/taskschd/task-scheduler-start-page。

以服务方式运行

为了在系统启动时运行rclone,你可以创建一个执行rclone命令的Windows服务,作为配置为启动时运行的预定任务的替代方案。

挂载命令内置服务集成

对于挂载命令,rclone通过它使用的第三方WinFsp库内置了一个Windows服务集成。注册为普通的Windows服务很容易,因为你只需要执行内置的PowerShell命令New-Service(需要管理权限)。

PowerShell命令的例子,该命令创建了一个Windows服务,用于将一些remote:/files挂载到X:盘符上,供*所有用户使用(服务将以本地系统账户运行)。

New-Service -Name Rclone -BinaryPathName 'c:\rclone\rclone.exe mount remote:/files X: --config c:\rclone\config\rclone.conf --log-file c:\rclone\logs\mount.txt'

WinFsp服务基础设施支持将文件系统实现的服务,如rclone,作为一种 "子服务 "纳入自己的启动器服务。这有一个额外的好处,那就是它还实现了一个网络提供者,可以整合到Windows标准的网络驱动器管理方法中。目前Rclone还没有正式支持这个功能,但是在WinFsp 2019.3 B2 / v1.5B2或更高版本中,通过路径重写应该可以实现[这里](https://github.com/rclone/rclone/issues/3340)。

第三方服务整合

对于运行任何rclone命令的Windows服务,可以使用优秀的第三方工具NSSM,即 "Non-Sucking Service Manager"。它包括一些高级功能,如调整进程优先级、定义进程环境变量、将任何写入stdout的东西重定向到文件,以及对不同退出代码的自定义响应,有一个GUI来配置一切(尽管它也可以从命令行使用 )。

还有一些其他的替代品。再提一个,WinSW,"Windows Service Wrapper",值得一试。它需要.NET框架,但在较新版本的Windows上预装了,它还提供了包括必要的运行时间(.NET 5)的替代独立发布。 WinSW是一个只有命令行的工具,你必须手动创建一个包含服务配置的XML文件。这对一些人来说可能是个缺点,但也可能是个优点,因为它很容易备份和重新使用配置设置,而不需要在GUI中进行手动操作。需要注意的是,默认情况下,它不会在出错时重启服务,人们必须在配置文件中明确启用(通过 "onfailure "参数)。

Linux上的自动启动

作为一项服务开始

要想让rclone始终在后台运行,与挂载命令等相关,可以使用systemd将rclone设置为系统或用户服务。以系统服务的形式运行,可以确保在启动时运行,即使它所运行的用户没有活动会话。以用户服务的形式运行rclone,可以确保它只在配置的用户登录系统后启动。

从cron中定期运行

要运行一个周期性的命令,如复制/同步,你可以设置一个cron job。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: