2011-11-24 63 views
0

我正在运行一个cronjob rsyncing与我的公司网络内的服务器上的文件夹的硬盘驱动器。这发生在我的笔记本电脑上,我也在该网络之外使用。cronjob备份只有当连接到公司网络

我的crontab是这样的:

*/30 * * * *的rsync --delete -azvv -e SSH /用户/用户/工作/文件夹的用户@服务器:/ home/user中/ BACKUP/

如何让cron只在服务器可用时才运行此作业?

非常感谢!

回答

0

首先您需要一种方法来确定您的服务器是否可用。 ping可能已经足够,但可能并不理想。作为穷人的解决方案,你可以像这样预先考虑您的原始命令:

ping -c2 server >/dev/null 2>&1 && rsync --delete... 

这意味着cron将会运行rsync只有ping已经成功。

+0

感谢您的支持。不幸的是,这不起作用。你可以帮我一个忙,并向我解释你提供的代码。我知道两次ping的输出进入了/ dev/null /的必杀技,但2&1是什么意思? – luckyman

+0

这意味着你正在将文件描述符2重定向到与文件描述符1相同的目的地,在这种情况下,2>&1表示将STDERR发送到与STDOUT相同的目标,即位桶。 –

+0

Joao很好地解释了2>&1所做的,但是您能否提供更多关于哪些不适合您的细节? –