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

使用 crontab 执行 tar 压缩文件出现错误

  •  
  •   gzwawj · 2018-03-13 09:46:38 +08:00 · 3491 次点击
    这是一个创建于 2445 天前的主题,其中的信息可能已经有所发展或是发生改变。

    系统为 ubuntu

    自己写了一脚本执行 tar 压缩文件:

    #!/bin/sh
    
    tar -zcvf /home/j/backup/16/dbBackup/$(date +%y%m%d.tar.gz) db/
    
    find /home/j/backup/16/dbBackup/ -type f -mtime +3 -exec rm -rf {} \;
    

    单独执行不会出现错误,使用 crontab 定时执行在 mail 出现

    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-Cron-Env: <SHELL=/bin/sh>
    X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin>
    X-Cron-Env: <HOME=/home/j>
    X-Cron-Env: <LOGNAME=j>
    Message-Id: <20180313014101.506EF3C0072@j>
    Date: Tue, 13 Mar 2018 09:41:01 +0800 (CST)
    
    tar: db:无法 stat: 没有那个文件或目录
    tar: 由于前次错误,将以上次的错误状态退出
    

    crontab 文件为:

    SHELL=/bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    
    # m h dom mon dow user  command
    17 *    * * *   cd / && run-parts --report /etc/cron.hourly
    25 6    * * *   test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
    47 6    * * 7   test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
    52 6    1 * *   test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
    #
    41 9 * * *  /home/j/backup/16/db.sh
    
    11 条回复    2018-03-13 11:39:27 +08:00
    CloudMx
        1
    CloudMx  
       2018-03-13 09:48:27 +08:00
    db 写个绝对路径。
    gzwawj
        2
    gzwawj  
    OP
       2018-03-13 09:53:31 +08:00
    @CloudMx db 使用绝对路径,那路径会压缩到文件中吗?使用使用其他参数
    CloudMx
        3
    CloudMx  
       2018-03-13 10:00:49 +08:00
    tar: db:无法 stat: 没有那个文件或目录
    系统找不到 db/,找不到你要压缩的路径,把路径写成 /xxxx/xxxx/xxx/db 试下。
    privil
        4
    privil  
       2018-03-13 10:02:12 +08:00
    @gzwawj #2 会,你可以前面加 cd 到那个目录执行,或者 tar -C 参数吧 有问题多看看 man 啊
    gzwawj
        5
    gzwawj  
    OP
       2018-03-13 10:05:53 +08:00
    @CloudMx 使用了绝对路径后,绝对路径也压缩到文件中了,我不想把前面的路径都压缩到文件中,这个怎么解决啊?感谢你的回答
    stephenyin
        6
    stephenyin  
       2018-03-13 10:09:15 +08:00
    crontab 是 su 执行的吧, 和你单步的权限不一样, 脚本里 source 下你当前用户的 .bashrc 试试.
    CloudMx
        7
    CloudMx  
       2018-03-13 10:26:19 +08:00
    @gzwawj tar -zcvf /home/j/backup/16/dbBackup/$(date +%y%m%d.tar.gz) -C /data/test/ db/
    -C
    /data/test/db 这个是绝对路径
    -C /data/test/空格 db/
    db/相对于 /data/test/
    试试
    gzwawj
        8
    gzwawj  
    OP
       2018-03-13 10:37:01 +08:00
    @CloudMx 这个命令可以实现绝对路径不压缩到文件中,但是 mail 中的提示是把压缩的文件都都显示在 mail 中
    CloudMx
        9
    CloudMx  
       2018-03-13 10:55:51 +08:00
    @gzwawj 额,咋又出来了 mail 服务..又问题直接给出问题好了。
    kkxxxxxxx
        10
    kkxxxxxxx  
       2018-03-13 11:22:29 +08:00
    tar -zcvf /home/j/backup/16/dbBackup/$(date +%y%m%d.tar.gz) -C /home/j/backup/16/ db/ >> /dev/null
    gzwawj
        11
    gzwawj  
    OP
       2018-03-13 11:39:27 +08:00
    感谢你们的回答,我使用 cd 到目录,把脚本中 tar 命令的-v 参数去掉了,mail 中没有显示压缩文件的目录
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1618 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:54 · PVG 00:54 · LAX 08:54 · JFK 11:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.