前言:转存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
版权属于:YBurger
本文链接:https://www.yburger.net/skill/icopy.html
本站文章采用署名-非商业性使用 4.0 国际许可协议 (CC BY-NC 4.0)进行许可,转载时请以超链接形式注明文章原始出处,并注明本协议!转载本站文章不可用于商业目的。
大佬,麻烦看看这个日志是怎么回事呢?
```
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文件数量)
大佬 有件事情想请教一下 请问一下sa文件如何到达1w? 您这个iCopy的教程 sa文件数小的话和百宝箱比的话是不是差不多呀(相同的sa文件数量)
大佬 有件事情想请教一下 请问一下sa文件如何到达1w? 您这个iCopy的教程 sa文件数小的话和百宝箱比的话是不是差不多呀(相同的sa文件数量)
大佬 有件事情想请教一下 请问一下sa文件如何到达1w? 您这个iCopy的教程 sa文件数小的话和百宝箱比的话是不是差不多呀(相同的sa文件数量)
大佬 有件事情想请教一下 请问一下sa文件如何到达1w? 您这个iCopy的教程 sa文件数小的话和百宝箱比的话是不是差不多呀(相同的sa文件数量)
大佬 有件事情想请教一下 请问一下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