系统为 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= 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
1 CloudMx 2018-03-13 09:48:27 +08:00 db 写个绝对路径。 |
3 CloudMx 2018-03-13 10:00:49 +08:00 tar: db:无法 stat: 没有那个文件或目录 系统找不到 db/,找不到你要压缩的路径,把路径写成 /xxxx/xxxx/xxx/db 试下。 |
![]() | 5 gzwawj OP @CloudMx 使用了绝对路径后,绝对路径也压缩到文件中了,我不想把前面的路径都压缩到文件中,这个怎么解决啊?感谢你的回答 |
![]() | 6 stephenyin 2018-03-13 10:09:15 +08:00 crontab 是 su 执行的吧, 和你单步的权限不一样, 脚本里 source 下你当前用户的 .bashrc 试试. |
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/ 试试 |
![]() | 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 |
![]() | 11 gzwawj OP 感谢你们的回答,我使用 cd 到目录,把脚本中 tar 命令的-v 参数去掉了,mail 中没有显示压缩文件的目录 |