我需要通过 cron(每小时)将文件保存(并覆盖)到我的 Dropbox 帐户。该文件需要存储在预定义位置(与其他一些用户共享)。
我已经看到了创建
Dropbox App
的可能性,但会创建自己的保管箱文件夹。
还查看了
Dropbox Saver
,但这似乎适用于浏览器。
我在想(希望)一些超轻量级,很长的
CURL
行,所以我不需要安装库。只要一个简单的 sh
脚本就很棒了。我只需要 PUT 文件(覆盖),不需要读回(GET)它。
正在浏览保管箱开发者 API 文档,但有点迷路了。
有人有好的提示吗?
首先,由于您需要访问现有的共享文件夹,请注册具有“完整 Dropbox”访问权限的“Dropbox API”应用程序:
https://www.dropbox.com/developers/apps/create
然后,获取您的应用程序帐户的访问令牌。最简单的方法是使用应用程序页面上的“生成”按钮,创建应用程序后,您将被发送到该页面。也可以通过应用程序控制台访问。
然后,您可以通过
curl
上传到指定路径,如下例所示:
这会将文件从当前文件夹中的本地路径
matrices.txt
上传到 Dropbox 帐户中的 /Homework/math/Matrices.txt
,并返回已上传文件的元数据:
echo "some content here" > matrices.txt
curl -X POST https://content.dropboxapi.com/2/files/upload \
--header "Authorization: Bearer <ACCESS_TOKEN>" \
--header "Dropbox-API-Arg: {\"path\": \"/Homework/math/Matrices.txt\", \"mode\": \"overwrite\", \"strict_conflict\": false}" \
--header "Content-Type: application/octet-stream" \
--data-binary @matrices.txt
<ACCESS_TOKEN>
应替换为 OAuth 2 访问令牌。
@Greg 的答案也有效,但似乎是一项漫长的苦差事。
我在这里使用了 Dropbox 的官方命令行界面:https://github.com/dropbox/dbxcli。
截至发布日期,它运行良好,并提供了许多有用的下载和上传命令。
我刚刚尝试的另一个解决方案是一个名为 Dropbox-Uploader 的 bash 实用程序。 通过与上述相同的步骤(应用程序创建和令牌生成)进行配置后,您可以执行:
./dropbox_uploader.sh upload mylocal_file my_remote_file
,我觉得这非常方便。