V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhttty
V2EX  ›  分享发现

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

  •  
  •   zhttty · 2013-11-05 09:55:18 +08:00 · 3507 次点击
    这是一个创建于 3815 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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:折腾了我一个上午才发现这个问题....
    第 1 条附言  ·  2013-11-05 11:37:34 +08:00
    真正用过这脚本并加入crontab的同仁就会发现这个坑有多大了,从自身问题找那是死活都解决不了的。

    起初我也认为,大神诶,短短几行的代码怎么可能出问题?然后一直以为是自己的原因...
    18 条回复    1970-01-01 08:00:00 +08:00
    mkeith
        1
    mkeith  
       2013-11-05 10:14:54 +08:00
    crontab 的进程用户是哪个啊?
    initialdp
        2
    initialdp  
       2013-11-05 10:32:59 +08:00 via iPad   ❤️ 1
    为啥不用PHP呢?很轻松搞定。有个uploader的PHP脚本,几行代码调用就可以了。
    wzxjohn
        3
    wzxjohn  
       2013-11-05 10:41:45 +08:00
    肯定的啊,crontab执行任务的时候很多环境变量都是不能用的。。
    zhttty
        4
    zhttty  
    OP
       2013-11-05 11:33:52 +08:00
    @mkeith root

    @initialdp php?贴个链接上来

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

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

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

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

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

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

    所以这脚本被:
    star1,705
    fork238

    竟然还犯那么低级的错误....伤到我了...
    wzxjohn
        15
    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
        16
    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
        17
    lll9p  
       2013-11-06 00:03:52 +08:00   ❤️ 1
    LZ没仔细看程序吧,可以指定配置文件的。

    dropbox_uploader.sh -f CONFIG_FILE

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

    sh /root/dropbox_uploader.sh -f /root/dropbox_uploader_config upload files.tar.gz
    zhttty
        18
    zhttty  
    OP
       2013-11-06 00:13:31 +08:00
    @lll9p thanks,可以一试...原来还有-f参数,这感情好....
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3701 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 04:42 · PVG 12:42 · LAX 21:42 · JFK 00:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.