Linux入门级管理员求助:用CURL定时覆盖上传文件至Dropbox
实现Linux服务器每30分钟自动上传Teamspeak数据库到Dropbox并覆盖
兄弟,我来帮你搞定这个定时自动备份的需求!结合你已经能用curl上传的基础,咱们分三步来实现:
第一步:完善你的curl上传命令
你之前的命令没写完,完整的Dropbox覆盖式上传命令应该是这样的,记得替换里面的占位符:
curl -X PUT https://content.dropboxapi.com/2/files/upload \ --header "Authorization: Bearer YOUR_DROPBOX_ACCESS_TOKEN" \ --header "Dropbox-API-Arg: {\"path\": \"/teamspeak_backup.sqlite\", \"mode\": \"overwrite\"}" \ --header "Content-Type: application/octet-stream" \ --data-binary @/path/to/your/teamspeak/database.sqlite
几个关键参数说明:
YOUR_DROPBOX_ACCESS_TOKEN:换成你自己的Dropbox API令牌(去Dropbox开发者平台创建一个Scoped access应用,勾选files.content.write权限就能生成)"/teamspeak_backup.sqlite":Dropbox里要保存的文件路径和名称,按需修改/path/to/your/teamspeak/database.sqlite:本地Teamspeak数据库的实际路径,比如常见的/var/lib/ts3server/ts3server.sqlitedb"mode": "overwrite":这是实现覆盖现有文件的核心参数,必须加上
第二步:把命令封装成可执行脚本
为了方便定时任务调用,咱们把命令写成shell脚本,比如命名为ts3_dropbox_backup.sh:
- 创建脚本文件:
nano ts3_dropbox_backup.sh
- 粘贴以下内容,替换好占位符:
#!/bin/bash # 配置参数 DROPBOX_TOKEN="YOUR_DROPBOX_ACCESS_TOKEN" LOCAL_DB="/path/to/your/teamspeak/database.sqlite" DROPBOX_PATH="/teamspeak_backup.sqlite" # 执行上传命令 curl -X PUT https://content.dropboxapi.com/2/files/upload \ --header "Authorization: Bearer $DROPBOX_TOKEN" \ --header "Dropbox-API-Arg: {\"path\": \"$DROPBOX_PATH\", \"mode\": \"overwrite\"}" \ --header "Content-Type: application/octet-stream" \ --data-binary @$LOCAL_DB
- 给脚本添加执行权限:
chmod +x ts3_dropbox_backup.sh
- 手动运行测试一下,确保能正常上传:
./ts3_dropbox_backup.sh
去Dropbox里检查文件是否更新,没问题就可以进入下一步。
第三步:设置crontab定时任务
用Linux的crontab实现每30分钟自动执行脚本:
- 打开crontab编辑界面:
crontab -e
- 在末尾添加一行(替换成脚本的实际路径,比如
/root/scripts/ts3_dropbox_backup.sh):
*/30 * * * * /path/to/ts3_dropbox_backup.sh >> /var/log/ts3_dropbox_backup.log 2>&1
参数解释:
*/30 * * * *:表示每30分钟执行一次,crontab格式为分 时 日 月 周,*/30代表每30分钟触发>> /var/log/ts3_dropbox_backup.log 2>&1:把脚本的输出和错误信息写入日志文件,方便排查问题,不需要的话可以去掉这部分
- 保存退出(nano编辑器按
Ctrl+O回车,再Ctrl+X) - 重启crond服务确保生效(部分系统可省略,但做了更稳妥):
sudo systemctl restart crond
这样就完成啦!以后服务器会每30分钟自动把最新的Teamspeak数据库上传到Dropbox并覆盖旧文件,完美实现异地临时备份。
内容的提问来源于stack exchange,提问作者Travis N
相关产品推荐
相关产品推荐

