我有一个 bash 脚本,它作为 cron 运行以备份服务器上的文件。
#!/bin/bash
FILE=/path/to/backup_$(date +%Y%m%d).tar
tar -cf $FILE /backup/this /and/that /and/someotherfiles
gzip $FILE
当我直接使用以下命令运行脚本时:
sudo bash ./backup-files.sh
它压缩文件,但昨晚当 cron 运行它时,它把它作为 tar 文件。cron 是否会在某处保存日志以指出为什么会出现这种情况?
备份所在的分区是否在其限制范围内?
您的脚本已经创建了 tarball,但 gzip 没有剩余空间来压缩它。
(您可以将这两个命令与 tar 的 -z 标志结合使用)
糟糕,我忘了一件事:在你的 tar 命令中添加 -v 标志。它将显示它的作用。
正如 Pierre 所提到的,您可能需要使用 -z 标志。通常,我总是使用 tar zcvfP 来备份整个目录并保留它们的结构和权限。v 标志也在那里,也很有用。
如果再次发生您的脚本没有执行您想要的操作,您可以
set -x
在脚本之上添加。它将准确地输出它所做的事情,这个输出通常有助于发现错误。如果您将其称为 cronjob,请确保$EMAIL
设置适当。