linux - 通过 cron 归档的 tar 不起作用

标签 linux ubuntu cron tar

我正在尝试使用 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/

相关文章:

java - 我如何从 snapcraft 在 ubuntu 中安装和设置 open jdk

c - 中止系统调用行为

linux - shell脚本引号消失

python比较两个日期

linux - 带有 JDK Ubuntu Server 12.04 的 Java EE 7 SDK

sockets - 在执行 docker stop 时尝试连接到 Docker 守护程序套接字时获得权限被拒绝

bash - CRONTAB 语法错误

linux - Bash crontab 不输出 shell 脚本文件的结果

Ubuntu nginx 容器 403 被禁止

php - Cron 作业 + 推特