草庐IT

Rclone的介绍和使用

拓荒程序猿 2023-04-21 原文

概述

Rclone是一个命令行程序,用于管理云存储上的文件。他打包了各大供应商云存储的接口提供统一的访问界面。rclone支持40多种云存储产品,包括对象存储、企业和消费者文件存储、服务以及标准传输协议。Rclone符合unix POSIX规范,支持于常见的shell工具,比如rsync、cp、 mv、mount、ls、ncdu、tree、rm 和cat等交互,Rclone使用我们耳闻能熟的语法,支持shell管道,支持---dry-run保护,同时为了保护数据的可靠性,Rclone可保留时间戳和始终进行文件验证校验和。Rclone多种文件传输协议,支持SFTP,HTTP,WebDAV,FTP和DLNA。Rclone是一个成熟的开源软件,最初受rsync的启发并采用Golang编写。其文档和社区也都非常好,提供广泛和友好的使用用例。

这里我们使用Rclone主要用来操作对象存储,可以用来上传对象、拉取对象,并可实现对象存储间的迁移。

安装

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

脚本安装

要在 Linux/macOS/BSD 系统上安装 rclone,请运行(确保能访问到rclone.org这个网址):

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

对于 beta 安装,运行:

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

此脚本首先检查安装的 rclone 的版本,如果不需要,将不会重新下载。

从预编译的二进制文件安装 Linux

获取并解包

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

运行rclone config设置基本参数,根据命令提示输入即可

rclone config

使用 docker 安装

rclone 为rclone 维护一个docker 映像。这些镜像是由 docker hub 从 rclone 源基于最小的 Alpine linux 镜像自动构建的。

:latest标签将始终指向最新的稳定版本,也可以使用该:beta标签从 master 获取最新版本,还可以使用版本标签,例如: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 Docker 容器时,需要考虑一些命令行选项:

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

  • 您需要将主机数据目录挂载/data到 Docker 容器中。

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

  • 如果要访问 RC 接口(通过 API 或 Web UI),则需要将 设置--rc-addr:5572以便从容器外部连接到它。

源代码安装

确保您至少安装了Go 1.15。

git clone https://github.com/rclone/rclone.git
cd rclone
go build
# If on macOS and mount is wanted, instead run: make GOTAGS=cmount
./rclone version

使用

配置

首先,需要配置 rclone,由于对象存储系统具有相当复杂的身份验证,因此它们保存在配置文件中,可以通过以下命令进行配置:

rclone config

基本按照命令提示输入信息即可

基本命令

通常语法是这样的

Syntax: [options] subcommand <parameters> <parameters...>

子命令列表

具体使用大家可以看每个命令的链接,这里以rclone copy为例,比如拉取一个对象存储文件:

rclone copy remote:test.jpg /tmp/download

其中remote指的就是在config阶段配置的一个远程对象存储连接,这个命令将会把图片拉取到本地目录,这里注意的是本地必须指向一个目录。

选项配置

Rclone 有许多选项来控制其行为。

带参数的选项可以通过两种方式传递值, --option=value或者--option value。然而,布尔(真/假)选项的行为与其他选项略有不同,将选项 --boolean设置为true并且没有标志将其设置为false。也可以指定--boolean=false或 --boolean=true。请注意,这--boolean false是无效的 - 这被解析为--boolean并且false被解析为 rclone 的额外命令行参数。大家可以打开这个地址来查看所有的选项参数设置。

比如在命令后跟以下参数:

--bwlimit 10M

意味着将上传和下载带宽限制为 10 MiB/s。 注意这是每秒字节数而不是每秒位数。要使用单个限制,请以 KiB/s 为单位指定所需的带宽,或使用后缀 B|K|M|G|T|P。默认是0不限制带宽。上传和下载带宽可以单独指定,如 --bwlimit UP:DOWN,所以

--bwlimit 10M:100k

这意味着将上传带宽限制为 10 MiB/s,将下载带宽限制为 100 KiB/s。任何一个限制都可以“关闭”意味着没有限制,所以只限制您将使用的上传带宽

--bwlimit 10M:off

这会将上传带宽限制为 10 MiB/s,但下载带宽将不受限制。

其他相关追加参数设置大家可以自行查看。

HTTP调用

web界面

Rclone 可以提供基于 Web 的 GUI(图形用户界面),不过目前官方说明目前属于实验阶段,不过目前使用也没有出现什么大问题。基于上面讲的命令,在终端中运行此命令,rclone 将下载并在 Web 浏览器中显示 GUI:

rclone rcd --rc-web-gui

如果您想检查更新,则可以添加--rc-web-gui-update 到命令行。

如果你发现你的 GUI 坏了,你可以通过 add 强制它更新--rc-web-gui-force-update

默认情况下,rclone 将打开您的浏览器。添加--rc-web-gui-no-open-browser 以禁用此功能。

HTTP监听

如果 rclone 使用该--rc标志运行,那么它会启动一个 HTTP 服务器,该服务器可用于使用其 API 远程控制 rclone。

具体使用大家可以查看Remote Control / API页面,里面有具体的说明,可以设置认证信息等,结合web界面展示加上远程调用,可以很方便的实现一些对象存储迁移等高级功能,并且方便的查看执行情况,启动http监听后,通常可以使用的rc命令,都可以通过http的方式进行调用,大家可以自行尝试。

以上就是分享的关于rclone的一些基本用法以及高级使用,欢迎大家共同探讨!

程序之路漫漫,吾将上下而求索 

有关Rclone的介绍和使用的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  7. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  8. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  9. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  10. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

随机推荐