![crontab 备份目录](https://linux22.com/image/62749/crontab%20%E5%A4%87%E4%BB%BD%E7%9B%AE%E5%BD%95.png)
所以我的里面有这个crontab -e
0 0 * * * /opt/www/backup.sh
在文件中,我有以下内容:
#!/bin/bash
FILENAME=$(date +%Y%m%d).tar.gz
tar zcf backups/$FILENAME f
该文件位于/opt/www
但根本没有创建备份。如果我backup.sh
手动运行,那么它将运行并创建目录的备份,f
因为它应该这样做。
我正在运行 Debian 7.8。
答案1
启动 cronjob 时,当前(工作)目录可能未设置为 /opt/www。您可以在脚本 backup.sh 中的tar...
行之前设置它:
cd /opt/www
或者您可以通过以下方式使用 tar 行中的完整路径:
tar zcf backups/$FILENAME /opt/www/f
我还可以建议使用完整路径backups/$FILENAME
答案2
运行代码时corntab
,它从从主目录开始的相对路径运行它。
轻松修复:/
您可以在脚本中使用绝对目录路径(从 开始)。
其他方法:在代码中使用“path_dir”以实现可移植性。
path=$(readlink -f $0)
path_dir=${path%/*}