V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
gzwawj
V2EX  ›  Ubuntu

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

  •  
  •   gzwawj · Mar 13, 2018 · 4180 views
    This topic created in 2971 days ago, the information mentioned may be changed or developed.

    系统为 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 replies    2018-03-13 11:39:27 +08:00
    CloudMx
        1
    CloudMx  
       Mar 13, 2018
    db 写个绝对路径。
    gzwawj
        2
    gzwawj  
    OP
       Mar 13, 2018
    @CloudMx db 使用绝对路径,那路径会压缩到文件中吗?使用使用其他参数
    CloudMx
        3
    CloudMx  
       Mar 13, 2018
    tar: db:无法 stat: 没有那个文件或目录
    系统找不到 db/,找不到你要压缩的路径,把路径写成 /xxxx/xxxx/xxx/db 试下。
    privil
        4
    privil  
       Mar 13, 2018
    @gzwawj #2 会,你可以前面加 cd 到那个目录执行,或者 tar -C 参数吧 有问题多看看 man 啊
    gzwawj
        5
    gzwawj  
    OP
       Mar 13, 2018
    @CloudMx 使用了绝对路径后,绝对路径也压缩到文件中了,我不想把前面的路径都压缩到文件中,这个怎么解决啊?感谢你的回答
    stephenyin
        6
    stephenyin  
       Mar 13, 2018
    crontab 是 su 执行的吧, 和你单步的权限不一样, 脚本里 source 下你当前用户的 .bashrc 试试.
    CloudMx
        7
    CloudMx  
       Mar 13, 2018
    @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
       Mar 13, 2018
    @CloudMx 这个命令可以实现绝对路径不压缩到文件中,但是 mail 中的提示是把压缩的文件都都显示在 mail 中
    CloudMx
        9
    CloudMx  
       Mar 13, 2018
    @gzwawj 额,咋又出来了 mail 服务..又问题直接给出问题好了。
    kkxxxxxxx
        10
    kkxxxxxxx  
       Mar 13, 2018
    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
       Mar 13, 2018
    感谢你们的回答,我使用 cd 到目录,把脚本中 tar 命令的-v 参数去掉了,mail 中没有显示压缩文件的目录
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   957 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 18:39 · PVG 02:39 · LAX 11:39 · JFK 14:39
    ♥ Do have faith in what you're doing.