前言:转存Google Drive资源一直不是一件容易的事情,Rclone系程序是现在最常用的手段,虽然现在针对Google Drive进行针对优化的魔改版Rclone已经足够好用,但是每次手动敲命令操作还是有些麻烦。iCopy的出现能很大程度上提高转存效率。iCopy是后端利用Fclone(Rclone的魔改版)转存文件,前端对接了Telegram Bot(TG机器人)进行控制的一个优秀工具,使用它你可以达到这样的效果:在Telegram聊天窗口将分享链接发给转存Bot,然后选择目标文件夹,Bot就会自动发送指令给VPS,使VPS上的Fclone自动将链接中的文件转存到指定文件夹中。
Debian 9
环境下进行操作。提供的命令大多在/root/iCopy
目录下运行。
2020.08.10更新:新增开机启动脚本
准备工作
创建Bot
首先创建一个TG Bot,在搜索框输入@BotFather,并点击进入对话。
点击输入框位置的“开始
/Start
”,它会给你发送一条消息告诉你如何使用,我们直接输入/newbot
开始创建,然后依照它的回复提示,我们接着依次输入我们为Bot设置的昵称和用户名,注意用户名必须以bot
三个字母作为结尾,如下图:
一切设置完毕后,他会发过来一个消息告诉我们Bot创建成功,并附上了Bot的token(红框部分),这是稍后连接Bot的通行证,我们将这段token复制下来先粘贴到其他地方保存下来以备后面使用。
获取USER_ID
在搜索框输入@userinfobot,并点击进入对话。进入对话窗口后,点击输入框位置的“开始/Start”,它会给出你的ID,我们将Id后面的数字复制下来,先粘贴到其他地方保存下来以备后面使用。
创建数据库
如果你已经自己搭建好了MongoDB数据库,请点击右侧目录跳到『安装所需软件』继续阅读
打开MongoDB官网,点击Start free
,填入相关信息进行注册。
注册成功后,在下图界面选择FREE套餐。
下面选择数据库的地理位置,这个要选择离你VPS位置最近的地方,就比如我的VPS位置是日本东京,所以我就选择了GCP的Tokyo位置的数据库。下方的Cluster Name
是数据库名称,我这里保持了默认。
接下来需要等待1-3分钟才可以创建完成,创建完成后,我们点击网页中的CONNECT。
下面进行设置,首先添加允许连接数据库的IP,你有两种选择:你可以只允许你的VPS连接数据库,那就点击红色箭头指的“Add a Different IP Address”;也可以允许来自任何IP的连接,那就点蓝色箭头指的“Allow Access from Anywhere”。此处我按照第一种选择来,只允许我的VPS连接数据库。
输入你的VPS的IP(如果你选择允许所有IP的连接,这个框里会自动填好内容),点击Add IP Address,
然后在下面设置好数据库的用户名和密码并记好,之后要用到。
然后我们点击右下角绿色的“Choose a connection method”进入下一步,这里我们选择第二个“Connect your application”。
来到这一步,我们把“DRIVER”选择为Ptyhon
,VERSION选择3.6 or later
,然后将红框内文字内容中“@”之后的内容复制下来(图中涂黑部分),这就是数据库地址,粘贴到其他地方留着一会儿使用,注意其中的<dbname>
要更换成你的数据库名称,我之前创建的时候保持了默认,就是Cluster0
,数据库地址示例如下:
cluster0.avbqq.gcp.mongodb.net/Cluster0?retryWrites=true&w=majority
安装所需软件
在VPS上运行以下指令
apt-get update
apt-get install screen unzip wget git nano -y
安装Python 3.8
如果本机已有Python 3.8环境,请点击右侧目录跳到『生成SA账户』继续阅读
在ssh中运行以下命令编辑软件源。
nano /etc/apt/sources.list
在末尾添加这一行
deb http://ftp.de.debian.org/debian testing main
Ctrl
+X
保存,按键盘Y
确定保存,然后按回车(Return)
保存成功。然后依次运行下面的几条命令
apt-get update
apt-get install python3.8 -y
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
apt-get install python3-pip -y
使用命令python3 -V
检查是不是3.8版本 ,以及使用命令pip3 -V
检查是不是关联3.8,确认版本正确就可以进行下一步了
生成SA账户
如果你已经生成过SA账户,请点击右侧目录跳到『安装Fclone』继续阅读
若要生成SA账户,请参考下面幽游地博主@余十一的文章。
文章地址:AutoRclone配合gclone突破GoogleTeamDrive750G流量限制
安装Fclone
在ssh中运行以下命令安装Fclone
bash <(wget -qO- https://git.io/JJYE0)
如果你之前正在使用gclone工具并且正确配置了网盘和SA账户,请点击右侧目录跳到『安装iCopy』继续阅读
如果没有,请参考下面幽游地博主@余十一的文章。
文章地址:AutoRclone配合gclone突破GoogleTeamDrive750G流量限制
安装iCopy
在VPS上安装
拉取iCopy最新代码并进入文件夹。
git clone https://github.com/fxxkrlab/iCopy.git && cd iCopy
设置权限
chmod +x iCopy.py
安装依赖
pip3 install -r requirements.txt
生成配置文件
cp config/conf.toml.example config/conf.toml
编辑配置文件
nano config/conf.toml
按图所示进行修改
修改后依旧Ctrl
+X
保存,按键盘Y
确定保存,然后按回车(Return)
保存成功。
我们可以试运行一下脚本,看能不能启动成功
python3 iCopy.py
出现几个warning不要紧,只要出现图中红框部分的那一行字,就算运行成功。
不过这样子启动,一旦断开SSH机器人也会马上掉线,所以我们可以使用screen让他后台运行:
screen -dmS iCopy `which python3` iCopy.py
用screen启动后,如果想要停止运行:
screen -X -S iCopy quit
导入机器人指令
现在的机器人只是启动成功了,但是还无法正常使用,我们需要手动导入指令,在TG找到@BotFather,发送/mybots
,选择你刚刚创建的bot。
复制下面的文本,按下图所示添加指令
menu - 主入口/选择模式
quick - 极速模式
copy - 自定义模式
set - 自定义设置
cancel - 取消对话
size - 查询大小
reset - 重置任务(后面可跟id)
dedupe - 删除重复文件
purge - 清空指定盘回收站
task - 任务查询
kill - 杀死进程中任务
ver - 检查iCopy版本
restart - 重新启动iCopy
然后你就可以使用完整命令的Bot了。
使用Bot转存
设置转存文件夹:
在TG聊天窗口给Bot发送/set quick + 文件夹ID
以添加一个(最多一个)快速转存文件夹
。
在TG聊天窗口给Bot发送/set quick - 文件夹ID
以删除一个(最多一个)快速转存文件夹
。
在TG聊天窗口给Bot发送/set fav + 文件夹ID
以添加一个(数量无上限)书签文件夹
。
在TG聊天窗口给Bot发送/set fav - 文件夹ID
以删除一个(数量无上限)书签文件夹
。
转存实操:
设置好至少一个转存文件夹后,我们就可以开始转存操作了。
快速转存:发送/menu
,选择极速模式
,发送分享链接
。
自定义模式同理,只是多了一步选择目标位置(从添加的书签文件夹
里选)。
开机自启
有些小伙伴说需要开机自启,这里也顺便提一下。
如果你选择已经使用screen启动了程序,先用screen -X -S iCopy quit
关掉它
创建启动脚本:
cd /root/iCopy
nano start.sh
输入以下内容,并保存文件。
#! /bin/bash
cd /root/iCopy
python3 iCopy.py
赋予权限:
chmod +x start.sh
将以下代码一起复制到SSH运行
cat > /etc/systemd/system/icopy.service <<EOF
[Unit]
Description=icopy
After=network.target
[Service]
ExecStart=/root/iCopy/start.sh
[Install]
WantedBy=multi-user.target
EOF
然后启动服务并设置开机自启
systemctl start icopy
systemctl enable icopy
34 条评论
whjrop68725NS-适合各类读者,无论是年轻人还是老年人,都能找到自己感兴趣的内容。http://3g.pandalearn.cn//
大佬,麻烦看看这个日志是怎么回事呢?
```
2020/11/08 19:11:29 DEBUG : Using config file from "/root/.config/rclone/rclone.conf"
2020/11/08 19:11:29 DEBUG : Creating backend with remote "gc:{15dEsvpvqkTASvktMVjW44Kb-TO30Jha0}"
2020/11/08 19:11:29 DEBUG : Loading Service Account File(s) from "/root/accounts/sa/"
2020/11/08 19:11:29 DEBUG : Loaded 2399 Service Account File(s)
2020/11/08 19:11:29 DEBUG : Assigned Service Account File to /root/accounts/sa/86bfe1a10460b67d8245d2c6c1943ae92d8615a9.json
2020/11/08 19:11:29 DEBUG : Preloaded 50 Service(s) from Service Account
2020/11/08 19:11:30 DEBUG : Root ID (Folder): 15dEsvpvqkTASvktMVjW44Kb-TO30Jha0
2020/11/08 19:11:30 DEBUG : fs cache: renaming cache item "gc:{15dEsvpvqkTASvktMVjW44Kb-TO30Jha0}" to be canonical "gc15dEsvpvqkTASvktMVjW44Kb-TO30Jha0:"
2020/11/08 19:11:30 DEBUG : Creating backend with remote "gc:{0AAILFN_AmeyLUk9PVA}/慕课网全系列"
2020/11/08 19:11:30 DEBUG : Loading Service Account File(s) from "/root/accounts/sa/"
2020/11/08 19:11:30 DEBUG : Loaded 2399 Service Account File(s)
2020/11/08 19:11:30 DEBUG : Assigned Service Account File to /root/accounts/sa/d9327c8317207164423685d7570d2dce601aeac4.json
2020/11/08 19:11:30 DEBUG : Preloaded 50 Service(s) from Service Account
2020/11/08 19:11:30 Failed to create file system for "gc:{0AAILFN_AmeyLUk9PVA}/慕课网全系列": googleapi: Error 404: File not found: 0AAILFN_AmeyLUk9PVA., notFound
```
15dEsvpvqkTASvktMVjW44Kb-TO30Jha0这一串ID既不是我的文件夹ID,也不是分享的文件ID。
大佬 我按照教程安装好了 进bot /set quick + 文件夹的ID 设置不了转存文件夹 没反应 用的是服务器的mongodb conf.toml都参考教程设置好了 screen -sl 查看icopy对话窗口是detached的
大佬 有件事情想请教一下 请问一下sa文件如何到达1w? 您这个iCopy的教程 sa文件数小的话和百宝箱比的话是不是差不多呀(相同的sa文件数量)
小白求解,用GCP是否会消耗很多流量?
不算,程序使用的复制命令是server-side的,也就是走的Google服务器复制,不走你vps流量。
而且gcp又有点特殊,它入站流量不计算,出站流向Google产品(比如gdrive)的流量也不计算,所以即使程序不用server-side方式复制,也走不了你多少流量
最后测试能否运行 出现以下代码
File "/usr/local/lib/python3.8/dist-packages/pymongo/uri_parser.py", line 462, in parse_uri
dns_resolver = _SrvResolver(fqdn, connect_timeout=connect_timeout)
File "/usr/local/lib/python3.8/dist-packages/pymongo/srv_resolver.py", line 53, in __init__
raise ConfigurationError("Invalid URI host: %s" % (fqdn,))
pymongo.errors.ConfigurationError: Invalid URI host: your database address here
连接数据库失败了,看一下数据库配置是不是填错了,如果用的文中提到的在线数据库,注意一下IP放行了没
root@instance-111:~/iCopy# python3 iCopy.py
Traceback (most recent call last):
File "iCopy.py", line 7, in
from utils import load
File "/root/iCopy/utils/load.py", line 49, in
all_drive = gdrive.GoogleDrive().drive_list()
File "/root/iCopy/drive/gdrive.py", line 18, in __init__
service_account_file = random.choice(glob(load.cfg['general']['sa_path'] + '/*.json'))
File "/usr/lib/python3.8/random.py", line 290, in choice
raise IndexError('Cannot choose from an empty sequence') from None
IndexError: Cannot choose from an empty sequence
提示没有sa文件,你确定你已经生成sa账户文件并且sa目录设置正确了吗
应该是填写正确了的,我允许所有的IP都可以访问,
有些任务可以文件数统计出来8000多,选择极速模式和自定义模式,返回添加任务成功,然后就没反应了,从哪里能看出来问题是啥?8000多文件数不算多吧
去看看日志文件 /root/icopy_cloner_debug.log
这玩意能让他转OD吗
不能,但你可以存到Google drive里定期同步到od
运行python3 iCopy.py , 出现一堆错误。。同样搭建方法,GCP就成功,AZ就失败了。。有毒啊
如果系统不是Debian 9,有些命令需要视情况改变,不能照搬文中命令,一堆错误的话先自行排除环境问题(Python3.8是否成功安装,命令python3和pip3是否指向了3.8版本,依赖有没有装上),然后再看报错信息。
楼主想问,我设置了set quick
结果没反应也没回复
我就去运行日志发现这个
"
请问是什么问题呢
你的日志没发出来,只有一个引号。
我猜测你可能没有去botfather那里添加指令?或者set quick + 文件夹id中间没写加号?或者先/cancel取消当前对话然后再设置试试
大佬 配置好了也成功了,问下后续icopy升级如何操作?从git clone https://github.com/fxxkrlab/iCopy.git && cd iCopy开始重新执行一遍吗?
cd iCopy 然后git pull即可
这种情况我没复现出来,你配置文件确定填对了吗?如果没问题的话,重新安装依赖试一试
大佬, 請問下如果沒VPS, 能用NAS 來代替嗎?
理论上讲,只要是Linux环境都可以(当然win也不是不行),只是如果不是Debian系统的话,在使用自带的包管理器安装诸如Python,screen这类软件的时候你需要依据你的系统修改命令,当然你也可以手动安装。
还有开机自启这一步你也要根据自己系统来调整,反正原理就是开机的时候,自动运行创建的那个start.sh脚本。
再次回复博主,请忽略我上面的回复,抱歉...
通过谷歌我搞懂了私有API的创建,然后 fclone config 命令配置自己的client_ID和client_secret。这样操作是不是已经转换私人API.
如果正确的话,有一点不太明白
1.每100个SA就是一个单独的项目,我选择随便一个项目创建凭据是否没问题?
2.私有API必须要用转存的账号的API吗?
你的操作正确,已经用上了自己的API。
1.完全没问题,我甚至是新建了个全新的项目(不含sa账户)来创建API,我觉得这样找API密钥的时候方便。
2.只要你配置正确就不是必须的。在你创建私有API时,会有一步配置OAuth 同意屏幕,在里面选择user type的时候,只要你选择的是“外部(可供拥有Google账号的任何用户使用。)”就可以供所有账号使用。
大佬,请问个百思不得其解的问题,我转存几百G的都很快成功,但是转存几十T的文件,BOT就没有反应,日志文件“icopy_cloner_debug.log”看到的都是一堆
2020/08/11 09:37:58 DEBUG : pacer: low level retry 1/10 (error googleapi: Error 500: Internal Error, internalError)
2020/08/11 09:37:58 DEBUG : pacer: Rate limited, increasing sleep to 1.42023176s
2020/08/11 09:37:58 DEBUG : pacer: Reducing sleep to 0s
能否解答下,非常感谢。
如果进度有在走,就不用管它。如果进度因此长时间停止,请看下面。
1.首先确定你sa账户数量充足,没有超过每账户每日750g流量限制。
2.如果用的官方默认API,尝试换成自己申请的API。
3.实在不行遇见这情况就手动 --disable copy走vps流量复制吧
好像网卡了……点了一下回复好几遍,麻烦博主帮忙删除一下吧OωO
我是看你的文章以及结合这篇文章:https://blog.csdn.net/wojuzi/article/details/107444216搭建的,用的是GCP。
看了您提出的这几个点,我排除SA账户数量的不足,有200SA,bot是我发送分享链接后,回复添加任务成功后,就没有反应,进入后台查看icopy_cloner_debug.log,日志显示就是上文的一堆代码。
第二点提出的API,我想了很久,脑子转不过来,这个API转换成自己申请的,指的是哪个搭建步骤。(是否指的开启api生成的credentials.json文件?)
博主见谅,知识储备不足,表述不清晰。
请参阅https://github.com/iwestlin/gd-utils#%E4%B8%AA%E4%BA%BA%E5%B8%90%E5%8F%B7%E9%85%8D%E7%BD%AE