我正在尝试使用 tar 归档本地主机的根文件夹,并希望使用 crontab 每天自动执行它。为此,我在我的个人文件夹中创建了一个“backupfolder”。我在 Ubuntu 12.04 上运行。
在命令行中执行 tar 工作正常,没有问题:
sudo tar -cvpzf backupfolder/localhost.tar.gz /var/www
但是,当我在 sudo crontab -e
中安排每日备份命令(假设在 17 点)时,它没有执行,即备份不会使用以下命令更新:
0 17 * * * sudo tar -cpzf backupfolder/localhost.tar.gz /var/www
我已经尝试了完整路径 home/user/backupfolder/localhost.tar.gz
但没有成功。
var/log/syslog
为我提供了计划执行的以下输出:
Feb 2 17:00:01 DESKTOP-PC CRON[12052]: (root) CMD (sudo tar -cpzfbackupfolder/localhost.tar.gz /var/www)
Feb 2 17:00:01 DESKTOP-PC CRON[12051]: (CRON) info (No MTA installed, discarding output)
/etc/crontab
指定如下路径:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
我假设 crontab 没有执行,因为这是一个 sudo 命令。
有什么方法可以让它运行吗?如果我不想硬编码我的 root 密码,推荐的安全方法是什么?
最佳答案
嗯,适合你的命令是
sudo tar -cvpzf backupfolder/localhost.tar.gz /var/www
这意味着,您必须使用 sudo 访问权限运行该命令,并且它不会在您的 crontab 中运行。
我建议将 cron 作业添加到 root 用户的 crontab。
基本上,做
sudo crontab -e
并在那里添加一个条目
0 17 * * * cd /home/user/backupfolder && tar -cpzf localhost.tar.gz /var/www
如果这不起作用,请添加 tar 的完整路径(如 /bin/tar
)。
此外,在调试时,将 cronjob 设置为每分钟运行一次 (* * * * *
)
关于linux - 通过 cron 归档的 tar 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21515963/