Dropbox-Uploader 上传脚本的一个坑...

2013-11-05 09:55:18 +08:00
 zhttty
linux平台下,使用如下脚本
https://github.com/andreafabrizi/Dropbox-Uploader/blob/master/dropbox_uploader.sh
结合crontab自动上传的同仁,务必要修改:

#Default configuration file
CONFIG_FILE=~/.dropbox_uploader

成以根路径起始的绝对路径,譬如:

CONFIG_FILE=/root/.dropbox_uploader

不然肯定是死活失败。


PS:折腾了我一个上午才发现这个问题....
3522 次点击
所在节点    分享发现
18 条回复
mkeith
2013-11-05 10:14:54 +08:00
crontab 的进程用户是哪个啊?
initialdp
2013-11-05 10:32:59 +08:00
为啥不用PHP呢?很轻松搞定。有个uploader的PHP脚本,几行代码调用就可以了。
wzxjohn
2013-11-05 10:41:45 +08:00
肯定的啊,crontab执行任务的时候很多环境变量都是不能用的。。
zhttty
2013-11-05 11:33:52 +08:00
@mkeith root

@initialdp php?贴个链接上来

@wzxjohn 肯定啥?这跟环境变量有何关系?我说的是那个大神的脚本有问题。
initialdp
2013-11-05 11:44:52 +08:00
zhttty
2013-11-05 11:58:33 +08:00
@initialdp

Thanks~...留下备用...

另:这个php没有shell脚本的功能多和简单哦....关键还要装php....
dorentus
2013-11-05 12:12:20 +08:00
@wzxjohn 说的应该是 ~ 展开成的 $HOME 环境变量吧。

不过我记得正常情况下 $HOME 在 cron 脚本里面好像是可用的……
lanbing
2013-11-05 12:13:41 +08:00
一直在用,默认的很正常,没有失败过。
dorentus
2013-11-05 12:15:42 +08:00
其实我觉得用 root 用户可能是最大的坑源……
时常发生各种奇怪的问题。
zhttty
2013-11-05 12:20:10 +08:00
@dorentus 正常情况下可用,但在其它shell调用情况下或者一些复杂因素下,会产生很多难以解释的困惑...

所以一般来说,要么就是用绝对路径,要么就先获取变量

譬如:/`who am i | awk '{print $1}'`/.dropbox_uploader
princeofwales
2013-11-05 12:20:24 +08:00
我没改这个也能用啊
crontab配的是root用户执行
wzxjohn
2013-11-05 12:32:04 +08:00
@zhttty 我是说在crontab里面用~这样的变量是肯定有问题的。。。
zhttty
2013-11-05 12:32:42 +08:00
@princeofwales

/root/backup.sh 脚本这样:

#!/bin/bash

source /root/.bash_profile
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
LANG=C

export PATH
export LANG

mysqldump -u root -pxxxx xxxx >/root/mysqlbackup/xxxx.sql

tar -zcvf /root/mysqlbackup.tar.gz /root/mysqlbackup/ >>/tmp/xxxx.log 2>&1
/root/Dropbox-Uploader/dropbox_uploader.sh upload /root/mysqlbackup.tar.gz >>/tmp/xxxx.log 2>&1
rm -rf /root/mysqlbackup.tar.gz

crontab中类似这样:
0 1 * * 1 root sh /root/backup.sh

如果不修改Dropbox-Uploader原脚本,它在crontab运行下会永远提示是第一次运行 Dropbox-Uploader 的状态,也就是交互输入appid的那种情况。
zhttty
2013-11-05 12:36:12 +08:00
@wzxjohn
所以我就说在crontab里面用~这样的变量是肯定有问题的。。。

所以这脚本被:
star1,705
fork238

竟然还犯那么低级的错误....伤到我了...
wzxjohn
2013-11-05 13:16:25 +08:00
@zhttty 不不不,不是作者的问题。
Dropbox Uploader is a BASH script which can be used to upload, download, delete, list files (and more!) from Dropbox, an online file sharing, synchronization and backup service.

作者说了这事一个给Bash用的脚本,而且Readme.md里面也没有任何关于在crontab下使用的说明,所以这个脚本本来就是给你在Bash用的,想要crontab用就必须自己改喽~
princeofwales
2013-11-05 18:43:55 +08:00
我没改过dropbox_upload.sh,在centos和debian下都用过,备份网站和数据库,真的没出现问题,怪了

root用户
CONFIG_FILE=~/.dropbox_uploader
然后
0 2 * * * root /root/dropbox_backup.sh
lll9p
2013-11-06 00:03:52 +08:00
LZ没仔细看程序吧,可以指定配置文件的。

dropbox_uploader.sh -f CONFIG_FILE

比如我就写了个用在crontab脚本用来备份一些文件到dropbox

sh /root/dropbox_uploader.sh -f /root/dropbox_uploader_config upload files.tar.gz
zhttty
2013-11-06 00:13:31 +08:00
@lll9p thanks,可以一试...原来还有-f参数,这感情好....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/88061

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX