使用rclone同步百度网盘与Google相册
米饭AI
当数据跨越国界,在沉默的服务器中悄然流转,一场关于备份、信任与技术的无声战役悄然打响。在无法直连的封锁之下,如何让记忆的碎片跨越网络的鸿沟?当本地与云端、规则与突破交织,一个看似冰冷的命令行,竟成了守护数字时光的温柔守夜人。这不仅是技术的探索,更是对“存在”的另一种确认——你,准备好让那些被遗忘的影像,重新找到归处了吗?
因为米饭购买了Google的AI套餐,套餐内包含了2T的云端存储可以使用。所以米饭就想要把自己之前备份的百度网盘的照片也在Google相册里备份一份。但是因为大陆没有办法访问Google相册的服务,所以米饭想到了通过一个能够访问Google的服务器使用rclone同步百度网盘与Google相册。
什么是Rclone
Rclone 是一款用于管理云存储文件的命令行程序。它功能丰富,是云厂商 Web 存储界面的替代方案。超过 70 种云存储产品支持 rclone,包括 S3 对象存储、企业和个人文件存储服务以及标准传输协议。
Rclone 提供了强大的云端命令,相当于 Unix 的 rsync、cp、mv、mount、ls、ncdu、tree、rm 和 cat 命令。Rclone 的语法简洁易懂,支持 shell 管道,并提供--dry-run数据保护。它可以通过命令行、脚本或API使用。
用户称 rclone 为“云存储界的瑞士军刀”和 “与魔法无异的技术”。
(以上介绍来自Rclone官网)
为什么选Rclone
因为米饭刚好有一台抽奖抽中的美国VPS服务器,但是这个服务器配置只有1H0.5G,而Rclone占用的资源非常小,并且传输数据的过程中不需要占用很多的本地磁盘空间,所以成为了首选。(但是因为内存只有512MB,所以线程数不能开太多 不过因为是挂在服务器上面,所以让他慢慢传输就好了)
开始配置
安装Rclone
服务器端安装
在Linux上安装Rclone非常简单,只需要运行下面的代码就可以一键安装
sudo -v ; curl https://rclone.org/install.sh | sudo bash
电脑端安装
由于服务器没有GUI界面,无法显示浏览器用于网盘的登录。所以我们需要在自己的电脑上也安装一个Rclone,使用本地电脑获取授权的方式登录网盘。
在Windows上的安装方式也很简单,前往Rclone官网下载对应的安装包即可。(Rclone官网)。你也可以通过winget安装:
winget install Rclone.Rclone
连接Google photos
Rclone官方支持连接Google photos,可以直接参考官方文档进行连接:https://rclone.org/googlephotos/
具体的连接步骤如下:
在 VPS 上启动:
输入 rclone config ,然后按以下步骤操作:
n) New remote -> 输入 googlephoto (这个名字可以自己取)
Storage -> 找到 Google photos 对应的数字然后输入数字
client_id & client_secret -> 直接回车跳过
Scope -> 输入 1
service_account_file -> 直接回车跳过
Edit advanced config? -> n
Use auto config? -> 输入 n
在本地电脑获取授权:
此时 VPS 会显示一行命令,类似于 rclone authorize "drive" "xxxxxxxx"。
在你本地电脑的终端运行这一行(记得本地电脑要可以访问Google)。
浏览器会自动弹出,登录你的 Google 账号并点击“允许”。
回到本地终端,你会看到一串长长的 JSON 格式 Token。复制它。
返回 VPS:
将那段 Token 粘贴回 VPS 的提示符下。
Configure this as a Shared Drive? -> n
最后确认 y 保存。
这样我们就成功连接上Google Photos啦。
连接百度网盘
由于Rclone没有官方支持百度网盘,所以我们需要使用第三方工具Openlist挂载百度网盘为WebDAV后将WebDAV连接到Rclone实现同步。
安装Openlist
Openlist的安装非常简单,使用下面的代码就可以一键安装:
curl -fsSL https://res.oplist.org/script/v4.sh > install-openlist-v4.sh && sudo bash install-openlist-v4.sh
在opnelist中添加百度网盘
Openlist官网中有非常详细的文档指导大家如何添加百度网盘,可以直接前往查看:https://doc.oplist.org.cn/guide/drivers/baidu
其中有几个比较需要注意的点就是
1.下载百度网盘的文件一定要记得在请求头中添加header:"User-Agent":"pan.baidu.com"
2.目前突破非会员限速的方法似乎都不太好用,建议还是开通百度网盘会员
3.使用百度网盘开发者权限的方法连接Openlist是最快和最方便的方法
开启WebDAV
开启的教程引用Openlist的官网文档
WebDAV 读取
必须开启此权限才能查看和读取 WebDAV 中的文件和目录。
如果用户仅需查看或播放文件,开启此权限即可。
WebDAV 管理
必须开启此权限才能进行写入操作(创建、修改、删除等)。
仅开启 WebDAV 管理 还不够! 需要同时开启 WebDAV 管理 以及 其计划执行操作所需的具体文件系统权限(如 重命名、删除、复制、创建目录或上传 等)。
使用以下参数连接你的 WebDAV 客户端:
Url http[s]://你的域名:端口/dav/
Host / 主机 你的域名
路径 / Path dav
协议 http 或 https (强烈建议使用 https 以保障安全)
端口 与访问 OpenList 网页端使用的端口完全一致
用户名 你在 OpenList 网页端登录使用的用户名
密码 你在 OpenList 网页端登录使用的密码
在Rclone中添加百度网盘的WebDAV
在 VPS 终端输入:
Bash
rclone config
按照提示操作:
n) New remote:输入 n。
name:给它起个名字,比如 baiduyun。
Storage:找到 webdav 对应的编号并输入
url:输入你的 Alist WebDAV 地址。(如果在 VPS 本地:http://localhost:5244/dav)
vendor:选择 other
user:输入你 Openlist的管理员用户名
pass:选择 y) Yes, type in my own password,然后输入你的 Openlist 密码
bearer_token:直接回车跳过
Edit advanced config? :n
Configure this as a Shared Drive? :n
最后确认 y 保存。
同步百度网盘与Google photos
我们使用Rclone的copy功能实现同步(单向同步)只负责把 百度网盘 有、但 Google photos 没有的图片搬过去。即便你删除了 百度网盘 的某个文件,Google photos里的备份依然会在。
Rclone会进行哈希值比对,同时支持断点续传,所以已经同步过的文件不会被二次同步。
当然,如果你想实现双向同步,只需要把接下来命令中的copy改成sync就好啦~
我们使用下面的命令实现同步
rclone copy "baiduyun:baiduyun/这里输入百度网盘的路径" "googlephoto:album/来自百度的照片" \
--user-agent "pan.baidu.com" \
--header "Referer: https://pan.baidu.com/" \
--transfers 1 \
--checkers 2 \
--buffer-size 8M \
--use-mmap \
--drive-chunk-size 32M \
-P其中 album/来自百度的照片将会把保存的照片添加到来自百度网盘的照片/百度网盘下对应文件夹的相册中。
如果你的服务器性能比较好,可以适当改大 transfers的值,这样速度会更快。
如果我们需要每天定时同步怎么办呢? 这就需要我们使用Crontab实现定时启动脚本啦~
第一步:创建搬运脚本
在你的 VPS 终端中执行以下命令来创建一个脚本文件:
vim ~/baidu_to_gphotos.sh
在打开的编辑器中,粘贴下面这段代码:
#!/bin/bash
# 定义日志文件路径
LOG_FILE="/tmp/baidu_to_gphotos.log"
echo "任务开始时间: $(date)" >> $LOG_FILE
# 执行搬运命令
$RCLONE_BIN copy "baiduyun:baiduyun/这里输入百度网盘的路径" "googlephoto:album/来自百度的照片" \
--user-agent "pan.baidu.com" \
--header "Referer: https://pan.baidu.com/" \
--transfers 2 \
--checkers 2 \
--buffer-size 8M \
--use-mmap \
--log-file $LOG_FILE \
--log-level INFO
echo "任务结束时间: $(date)" >> $LOG_FILE
echo "------------------------------------" >> $LOG_FILE第二步:赋予脚本执行权限chmod +x ~/baidu_to_gphotos.sh
第三步:设置每日定时任务
crontab -e
在文件最末尾添加下面这一行(设在每天凌晨 2:00 运行):
0 2 * * * /bin/bash /home/你的用户名/baidu_to_gphotos.sh
/home/你的用户名/ 替换为你实际的脚本路径。如果你不确定,可以输入 pwd 查看。
这样我们就配置好啦~ 你可以使用下面的代码管理你的自动同步脚本:
手动允许脚本并查看log:
~/baidu_to_gphotos.sh && tail -f /tmp/baidu_to_gphotos.log
查看搬运进度:
任务在后台跑的时候,你随时可以用这条命令看它搬到哪儿了:
tail -f /tmp/baidu_to_gphotos.log
查看任务是否正在后台运行:
ps aux | grep rclone
停止正在运行的同步任务:
pkill rclone
以上就是全部内容啦~这样我们就成功实现了百度网盘与Google相册的同步。平常只需要在百度网盘备份自己的照片,就会自动在Google photos也备份一遍。说起来Rclone支持的存储服务特别特别多,所以什么Google与OneDrive同步之类的也可以用相似的方法轻松实现~
感谢你看到这里
新的评论