作者wei115 (NEET)
看板Free_box
标题[心得] 用rclone的笔记
时间Sat Jan 26 01:12:04 2019
还是记个笔记吧
暑假时用的rclone,寒假就全忘光了....
虽然有存当初的网址,但重新掌握还是需要时间
加上这次学了不少新东西,还是记个笔记比较实在...
1.使用方法:
rclone 动作 来源地址 目标地址 flag
动作常用的有:
config (设定)
ls (列出目录与子目录底下全部的元素)
lsd (只列出目录底下的元素)
copy (复制,略过已经复制过的)
sync (同步,以来源为准,目标少的会复制、多的会删除)
来源位置&目标位置可为 本机位置 或 远端位置
flag常用的有:
-v
(显示完整资讯,想要显示进度要有这项)
--bwlimit xxxxK/M/G
(限制上传速度,後面是单位可为K/M/G,例如:--bwlimit 8000k)
--checksum
(上传时做完整检查,以确保来源与目标完全相同(hash?),
需要注意的是,过程中硬碟会不停的读取且速度会降低)
--size-only
(上传时只比对档案的大小,相对checksum快,但可能有错)
--dry-run
(试跑一次,看看会对目标做什麽变动)
--transfers int
(一次传送多少个档案,预设为4)
范例:
rclone copy D1: D2: -v -size-only -bwlimit 1800k
(从 D1: 复制到 D2:,显示完整资讯 只比对双方档案大小 上传速度
1800KB/s)
rclone sync D1:test/ D2:test/ -v -size-only
(从 D1: 同步到 D2:,显示完整资讯 只比对双方档案大小)
2.过滤器:
rclone 不能直接在路径上使用万用字元,要使用一种flag来使用
例如不能用 D1:test/*.jpg 来表示D1:test/目录下的全部jpg档
要使用 D1:test/ --include *.jpg 来表示
其中规则应该是支援正规表达式的,不过我对正规不太熟.....
因为我对这也不熟,所以我就直接用官网的范例了.....
如果模式以"/"开头,代表他在目录的顶层,不往下搜寻
例如:
rclone ls D1: --include *.jpg
会列出:
D1:1.jpg
D1:2.jpg
但也会列出:
D1:test/1.jpg
D1:test/2.jpg
如果改成:
rclone ls D1: --include /*.jpg
则只会印出
D1:1.jpg
D1:2.jpg
p.s. windows v1.44好像没办法用"/"?
3.结合管线使用
这不做笔记我一定会忘掉......
rclone 有两个指令:
cat
rcat
cat 和 linux 上的基本一样,就是把档案从stdout印出来
不过rclone cat 可以印目录
(ex: rclone cat D1: 把D1:和子目录底下的档案全部印出来)
rcat 做的是和 cat 相反,他是将stdin的东西存到一个档案里
(ex: cat file.txt | rclone rcat D1:file.txt)
结合tar便可以将小档案打包起来,藉由管线传到rclone去处理
再加上这个好心人的脚本,便可分割上传
https://github.com/Riebart/pipechunker
(我不会python不知道他有没有暂存档案,但好像没有?)
3.1
tar 常用指令(原谅我不学无术又偷懒:P)
http://www.vixual.net/blog/archives/127
3.2
用gnupg ase 256加密
gpg --symmetric --cipher-algo AES256
输入来自stdin,输出至stdout
这个指令会要你输入两次密码
解密时用gpg就好了
输入一样来至stdin,输出一样至stdout
如果要存入档案,可以用gpg | cat > file
有些装置会显示
gpg: signing failed: Inappropriate ioctl for device
可用 export GPG_TTY=$(tty) 解决
3.3
pv显示进度
这东西好像会显示管线的进度(已经传多少MB,现在每秒多少MB)
用 | pv | 夹在管线和管线中间即可使用
3.4
pipechunk.py
好心人写的脚本,可以把tar的资料串流,分隔成一个一个的块,再借由
rclone上传到云端硬碟
https://github.com/Riebart/pipechunker
作者给的使用范例:
tar -cf - MyMachine/ |
gpg --compress-algo none -er
[email protected] | pv |
python3 ~/Desktop/pipechunk.py
--name
"od:/WindowsImageBackup/MyMachine.2018-12-01/MyMachine-2018-12-01
.tar.enc"
--command '["rclone", "rcat", "--verbose", "--stats", "10s"]'
--chunk-size 50000000
--parallel 8
--chunk-size 是指要每个分割档要多大,范例是50MB一个分割
上传後的档案名会是 file_name.0001,file_name.0002 以此类推
需要注意的是--command 里的参数每有一个空格就要加一次""
例如我想要加上 --bwlimit 1500K,就要写成
'["--bwlimit", "1500K"]'
p.s. 不会python,看了老半天也不知道他是全部分割好再上传还是,串流
上传,不过我倾向於後者
p.s2 补充,上传大档案後发现应该是串流上传,并且会使用RAM做暂存
如果一个区块大小是1G --parallel为8 的话会吃8G的RAM
可以适时的调整区块大小和--parallel
p.s3 --parallel参数是开几个rclone同时上传,如果--parallel为4
--bwlimit 500k上传限制就会是500k*4 = 2000k
3.5
下载再还原
如果还是要使用管线来达成可用rclone cat指令,将全部的分割档全部下载
并还原
例如:
rclone cat D1:tar/ | gpg | pv | tar -x
大概4jone,之後想到什麽再写上来...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.126.109.77
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Free_box/M.1548436333.A.194.html
1F:推 eric525498: 推 01/26 02:45
※ 编辑: wei115 (59.126.109.77), 01/26/2019 05:19:02
※ 编辑: wei115 (59.126.109.77), 01/26/2019 05:36:25
2F:推 zz12345567: 推至看的懂前面 问一下如果资料夹档名有空白要如何表 01/26 08:19
3F:→ zz12345567: 示 01/26 08:19
4F:→ wei115: 在空白的前面加"\"(跳出字元) 例如"a b" => "a\ b" 01/26 15:58
5F:推 Kreen: 推分享~ 01/26 16:33
6F:推 pttpu: 马克 01/26 16:37
7F:推 WindSucker: 怎不用rclone crypt 01/27 10:48
8F:→ wei115: 没什麽特殊的理由,单纯是懒的设定rclone..... 01/27 13:50
9F:推 alen84204: 推分享 01/28 00:20
10F:推 victor21813: 真的有懒吗~ 感觉你已经用到一堆我都没用过的XD 01/28 02:28
11F:→ wei115: 就是用了一堆没用过的,所以最後没力气了XD 01/28 03:28
12F:→ x21999125x: 资料夹档名的部分,用tab键简单多了 01/30 09:31