scp不能在cronjob中工作

在一个CentOS设置我有这样的脚本:

#! /bin/bash mysqldump --all-databases | gzip > /dumps/sql`date +"%Y-%m-%d-%$ scp `ls -t | head -1` root@backup:/media/storage/backup/ 

机器configuration了授权的ssh密钥,所以不需要密码。 如果我运行它(/斌/ bash的mysql.sh)它的工作原理,但在cronjob只有mysqldump进行。 scp命令失败。

我在哪里寻找解决这个问题?

听起来像scp不会从~/.ssh目录中选取你的密钥对。 尝试这个:

env HOME=/path/to/your/home scp -v $(ls -t | head -1) root@backup:/media/storage/backup/ > /tmp/scp.log 2>&1

如果不起作用,请在这里发布scp.log

在许多情况下,由于环境问题,从命令行但不从cron运行的脚本会失败。 如果你正在使用ssh代理或设置scp需要在你的环境中运行的信息,你需要在你的脚本中明确地设置它们,或者源代码.bashrc(或者任何文件设置你的variables)。 cron默认不会使用你的rc文件,所以你的环境是非常光鲜的。

我认为,首先,你应该检查你的cron的日志是否有错误,也许你可以在这里复制日志的一小部分,以便更好地排除故障。

你可以试着用下面的命令来改变“date”命令:

$(date+ \%F)

并再次尝试设置cronjob 😉