概述 Rclone是一款的命令行工具,支持在不同对象存储、网盘间同步、上传、下载数据。
支持的主流对象存储:
Google Drive Amazon S3 Openstack Swift / Rackspace cloud files / Memset Memstore Dropbox Google Cloud Storage Amazon Drive Microsoft One Drive Hubic Backblaze B2 Yandex Disk The local filesystem
安装 Linux下安装 下载安装包 1
2
3
curl -O http://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
cd rclone-*-linux-amd64
安装 1
2
3
sudo cp rclone /usr/sbin/
sudo chown root:root /usr/sbin/rclone
sudo chmod 755 /usr/sbin/rclone
配置 MacOS下安装 下载安装包 1
2
cd && curl -O http://downloads.rclone.org/rclone-current-osx-amd64.zip
unzip -a rclone-current-osx-amd64.zip && cd rclone-*-osx-amd64
安装 1
2
sudo mv rclone /usr/local /bin/
cd .. && rm -rf rclone-*-osx-amd64 rclone-current-osx-amd64.zip
配置 使用 操作命令 rclone命令的语法格式:
1
Syntax: [options] subcommand <parameters> <parameters...>
常用的rclone命令有:
rclone config - 以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中。 rclone copy - 将文件从源复制到目的地址,跳过已复制完成的。 rclone sync - 将源数据同步到目的地址,只更新目的地址的数据。 rclone move - 将源数据移动到目的地址。 rclone delete - 删除指定路径下的文件内容。 rclone purge - 清空指定路径下所有文件数据。 rclone mkdir - 创建一个新目录。 rclone rmdir - 删除空目录。 rclone check - 检查源和目的地址数据是否匹配。 rclone ls - 列出指定路径下所有的文件以及文件大小和路径。 rclone lsd - 列出指定路径下所有的目录/容器/桶。 rclone lsl - 列出指定路径下所有文件以及修改时间、文件大小和路径。 rclone md5sum - 为指定路径下的所有文件产生一个md5sum文件。 rclone sha1sum - 为指定路径下的所有文件产生一个sha1sum文件。 rclone size - 获取指定路径下,文件内容的总大小。. rclone version - 查看当前版本。 rclone cleanup - 清空remote。 rclone dedupe - 交互式查找重复文件,进行删除/重命名操作。 rclone config 开启一个交互式的配置会话。命令格式如下:
rclone copy 将文件从源复制到目的地址,跳过已复制完成的。命令格式如下:
1
rclone copy source :sourcepath dest:destpsth
注: 1、rclone copy复制总是指定路径下的数据;而不是当前目录。 2、–no-traverse 标志用于控制是否列出目的地址目录。
rclone sync 1
rclone sync source :path dest:path
注: 1、同步数据时,可能会删除目的地址的数据;建议先使用–dry-run标志来检查要复制、删除的数据。 2、同步数据出错时,不会删除任何目的地址的数据。 3、rclone sync同步的始终是path目录下的数据,而不是path目录。(空目录将不会被同步)
rclone move 1
rclone move source :path dest:path
注: 1、同步数据时,可能会删除目的地址的数据;建议先使用–dry-run标志来检查要复制、删除的数据。
rclone purge 清空path目录和数据。命令格式如下:
1
rclone purge remote:path
注: 1、此命令,include/exclude 过滤器失效。 2、删除path目录下部分数据,请使用rclone delete 命令
rclone mkdir 创建path目录。命令格式如下:
1
rclone mkdir remote:path
rclone rmdir 删除一个空目录。命令格式如下:
1
rclone rmdir remote:path
注: 1、不能删除非空的目录,删除非空目录请使用 rclone purge。
rclone check 检查源和目标地址文件是否匹配。命令格式如下:
1
rclone check source :path dest:path
注: 1、–size-only标志用于指定,只比较大小,不比较MD5SUMs。
rclone ls 列出指定path下,所有的文件以及文件大小和路径。命令格式如下:
rclone lsd 列出指定path下,所有目录、容器、桶。命令格式如下:
rclone delete 删除指定目录的内容。命令格式如下:
1
rclone delete remote:path
注: 1、不同于rclone purge,rclone delete 可使用 include/exclude 过滤器选择删除文件内容。 eg: 删除文件大小大于100M的文件
1
2
3
4
5
6
# 先检查哪些文件将被删除
rclone --min-size 100M lsl remote:path # 使用rclone lsl 列出大于100M的文件
rclone --dry-run --min-size 100M delete remote:path # 使用--dry-run 检查将要被删除的文件
# 使用 rclone delete 进行文件删除
rclone --min-size 100M delete remote:path
rclone size 获取指定path下所有数据文件的总大小。命令格式如下:
more 更多rclone命令,详见http://rclone.org/commands/ 。
配置rclone rclone 提供了交互式配置会话的方式来进行rclone的配置;每次配置的信息存储在.rclone.conf文件中。
配置示例 在这里,我们使用共享存储KS3示例,来进行rclone的配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
$ rclone config
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> ks3-remote
Type of storage to configure.
Choose a number from below, or type in your own value
1 / Amazon Drive
\ "amazon cloud drive"
2 / Amazon S3 (also Dreamhost, Ceph, Minio)
\ "s3"
3 / Backblaze B2
\ "b2"
4 / Dropbox
\ "dropbox"
5 / Encrypt/Decrypt a remote
\ "crypt"
6 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
7 / Google Drive
\ "drive"
8 / Hubic
\ "hubic"
9 / Kingsoft Cloud KS3
\ "ks3"
10 / Local Disk
\ "local"
11 / Microsoft OneDrive
\ "onedrive"
12 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
13 / Yandex Disk
\ "yandex"
Storage> 9
Get KS3 credentials from runtime (environment variables). Only applies if access_key_id and secret_access_key is blank.
Choose a number from below, or type in your own value
1 / Enter KS3 credentials in the next step
\ "false"
2 / Get KS3 credentials from the environment (env vars)
\ "true"
env_auth> 1
AWS Access Key ID - leave blank for anonymous access or runtime credentials.
access_key_id> sgyO124X+/ZRbmgrbP7d
AWS Secret Access Key (password) - leave blank for anonymous access or runtime credentials.
secret_access_key> p9/6yLzbU2FZEPw5vCPf2/buQOz1SVNdqqBtzscH
Region to connect to.
Choose a number from below, or type in your own value
1 / Beijing Region(the default region).
\ "ks3-cn-beijing"
2 / Hangzhou Region.
\ "ks3-cn-hangzhou"
3 / Shanghai Region.
\ "ks3-cn-shanghai"
4 / HongKong Region.
\ "ks3-cn-hk-1"
5 / US West Region.
\ "ks3-us-west-1"
region> 1
Endpoint for KS3 API.
Leave blank if using KS3 to use the default endpoint for the region.
endpoint>
An internal endpoint or the public endpoint for KS3 access. The default is false.
Choose a number from below, or type in your own value
1 / Internal endpoint.
\ "false"
2 / Public endpoint.
\ "true"
internal> 1
Canned ACL used when creating buckets and/or storing objects in KS3.
Choose a number from below, or type in your own value
1 / Owner gets FULL_CONTROL. No one else has access rights (default).
\ "private"
2 / Owner gets FULL_CONTROL. The AllUsers group gets READ access.
\ "public-read"
/ Owner gets FULL_CONTROL. The AllUsers group gets READ and WRITE access.
3 | Granting this on a bucket is generally not recommended.
\ "public-read-write"
acl> 1
The server-side encryption algorithm used when storing this object in S3.
Choose a number from below, or type in your own value
1 / None
\ ""
2 / AES256
\ "AES256"
server_side_encryption> 2
Remote config
--------------------
[ks3-remote]
env_auth = false
access_key_id = sgyO124X+/ZRbmgrbP7d
secret_access_key = p9/6yLzbU2FZEPw5vCPf2/buQOz1SVNdqqBtzscH
region = ks3-cn-beijing
endpoint =
internal = false
acl = private
server_side_encryption = AES256
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:
Name Type
==== ====
ks3-remote ks3
e) Edit existing remote
n) New remote
d) Delete remote
s) Set configuration password
q) Quit config
e/n/d/s/q> q
配置完成,检查生成的配置文件~/.rclone.conf:
1
2
3
4
5
6
7
8
9
10
11
$ more ~/.rclone.conf
[ks3-remote]
type = ks3
env_auth = false
access_key_id = sgyO124X+/ZRbmgrbP7d
secret_access_key = p9/6yLzbU2FZEPw5vCPf2/buQOz1SVNdqqBtzscH
region = ks3-cn-beijing
endpoint =
internal = false
acl = private
server_side_encryption = AES256
测试配置 查看上述配置远程存储所有的桶:
1
2
3
4
5
6
7
8
9
$ rclone lsd ks3-remote:
-1 2016-06-07 07:26:04 -1 dockertest2
-1 2016-11-21 08:24:52 -1 ks3-fs-test
2016/11/28 15:26:25
Transferred: 0 Bytes (0 Bytes/s)
Errors: 0
Checks: 0
Transferred: 0
Elapsed time: 200ms
一些实用场景 将本地目录同步到ks3 一般,由于对象存储具有廉价、高可用、安全、可靠等特性;我们通常会用作本地数据(日志、图片、视频)的存储或是备份。通常在使用对象存储存储数据时,往往需要调用官方的SDK,需要一定的开发量。尤其当我们仅仅是需要备份某个盘或是目录下的日志时,这时候使用rclone这样的命令行工具,能方便把数据存储(或备份)到远程存储上,且不受文件大小的限制(比如ks3单个文件上传大小不能超过5G)。
比如,将/home/local/directory同步到远程存储的某个bucket中,操作命令如下:
1
$ rclone sync /home/local /directory remote:bucket
AWS s3 迁移到 KS3 由于s3的region多建在国外,s3的资费相对较高。那么将一部分数据迁移到KS3,是比较经济的。除了使用KS3官方提供的镜像服务,可以别的远程存储迁移到KS3;rclone为此提供了另外一种可能。
比如将远程存储s3的桶s3-log,迁移到远程存储ks3的桶ks3-log:
1
$ rclone sync s3-remote:s3-log ks3-remote:ks3-log
远程存储s3-remote、ks3-remote的配置信息如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[s3-remote]
type = s3-remote
env_auth = false
access_key_id = AKIAJTT3FZHMRQSXFZFQ
secret_access_key = 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
region = ap-northeast-2
endpoint =
location_constraint = ap-northeast-2
acl = private
server_side_encryption = AES256
storage_class =
[ks3-remote]
type = ks3
env_auth = false
access_key_id = sgyO124X+/ZRbmgrbP7d
secret_access_key = p9/6yLzbU2FZEPw5vCPf2/buQOz1SVNdqqBtzscH
region = ks3-cn-beijing
endpoint =
internal = false
acl = private
server_side_encryption = AES256
KS3 bucket之间的同步 KS3对象存储不支持使用KS3存储的桶作为另一个桶的镜像。
比如:我们需要搭建一个大型的docker hub,为了保证不同地域用户下载和上传速度(虽然KS3自带CDN),需要在北京、上海分别建立两个镜像中心;这样在拉取镜像时,南方用户只需要去上海的镜像中心拉取数据,北方用户则到北京镜像中心拉取数据;极大地提高数据的访问速度。 那么类似这样的需求,我们不得不保持两个镜像中心的数据一致性;在不适用官方SDK的情况下,我们可以使用rclone sync同步不同region下bucket中的数据:
1
$ rclone sync ks3-beijing:bucket1 ks3-shanghai:bucket2
注: 即便bucket1与bucket2共用一套账户体系,即ks3-beijing 和 ks3-shanghai的access_key_id和secret_access_key是一样的。仍然需要分别建立 ks3-beijing 和 ks3-shanghai 两个远程存储的配置。 例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ more ~/.rclone
[ks3-beijing]
type = ks3
env_auth = false
access_key_id = sgyO124X+/ZRbmgrbP7d
secret_access_key = p9/6yLzbU2FZEPw5vCPf2/buQOz1SVNdqqBtzscH
region = ks3-cn-beijing
endpoint =
internal = true
acl = private
server_side_encryption = AES256
[ks3-shanghai]
type = ks3
env_auth = false
access_key_id = sgyO124X+/ZRbmgrbP7d
secret_access_key = p9/6yLzbU2FZEPw5vCPf2/buQOz1SVNdqqBtzscH
region = ks3-cn-shanghai
endpoint =
internal = true
acl = private
server_side_encryption = AES256
資料來源:https://softlns.github.io/2016/11/28/rclone-guide/
沒有留言:
張貼留言