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

2018-03-13 09:46:38 +08:00
 gzwawj

系统为 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
3519 次点击
所在节点    Ubuntu
11 条回复
CloudMx
2018-03-13 09:48:27 +08:00
db 写个绝对路径。
gzwawj
2018-03-13 09:53:31 +08:00
@CloudMx db 使用绝对路径,那路径会压缩到文件中吗?使用使用其他参数
CloudMx
2018-03-13 10:00:49 +08:00
tar: db:无法 stat: 没有那个文件或目录
系统找不到 db/,找不到你要压缩的路径,把路径写成 /xxxx/xxxx/xxx/db 试下。
privil
2018-03-13 10:02:12 +08:00
@gzwawj #2 会,你可以前面加 cd 到那个目录执行,或者 tar -C 参数吧 有问题多看看 man 啊
gzwawj
2018-03-13 10:05:53 +08:00
@CloudMx 使用了绝对路径后,绝对路径也压缩到文件中了,我不想把前面的路径都压缩到文件中,这个怎么解决啊?感谢你的回答
stephenyin
2018-03-13 10:09:15 +08:00
crontab 是 su 执行的吧, 和你单步的权限不一样, 脚本里 source 下你当前用户的 .bashrc 试试.
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
2018-03-13 10:37:01 +08:00
@CloudMx 这个命令可以实现绝对路径不压缩到文件中,但是 mail 中的提示是把压缩的文件都都显示在 mail 中
CloudMx
2018-03-13 10:55:51 +08:00
@gzwawj 额,咋又出来了 mail 服务..又问题直接给出问题好了。
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
2018-03-13 11:39:27 +08:00
感谢你们的回答,我使用 cd 到目录,把脚本中 tar 命令的-v 参数去掉了,mail 中没有显示压缩文件的目录

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

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

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

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

© 2021 V2EX