我正在使用 scp 备份数据。当我通过邮件获取 cron 输出(使用 crontab 文件进行 cron 操作)时,我没有收到任何输出。scp 操作已成功完成。
因此,在终端中我得到例如:test.file 100%1489KB 1.2MB/s 00:00
但是在 cron 输出中,我没有得到命令的输出。
有人知道如何执行此操作吗?或者您使用哪种其他方式来获取有关该命令的信息?
谢谢。
答案1
通常,cron 擅长将其作业的任何终端输出发送到运行它的计算机的用户的电子邮件帐户。有时人们会设置 cron 作业,并专门重定向或抑制输出,以避免发生这种情况。确保不会发生这种情况。如果您愿意,您可以在此处发布您的 crontab 行,我们会告诉您。
此外,为了获取电子邮件,您要么需要检查运行该作业的机器上的用户邮箱,要么将其设置为路由到其他地方。您通常可以使用系统电子邮件别名文件(通常位于 /etc/mail/aliases 中)执行此操作。例如,我的机器上都有一行写着“root:[电子邮件保护]“这样我就可以收到以 root 身份运行的所有 cron 作业的电子邮件。
编辑1: 显然,scp 会检测它是否从终端运行,如果未从终端运行,则会将其输出更改为静默。添加 -v 应该会覆盖此行为。
编辑2,替代解决方案:我强烈建议使用rsync
而不是 scp 进行此类操作。它在设计时就考虑到了这种重复同步,可以处理仅传输文件或目录的更新部分等情况。它的输出也更适合在 cron 中使用。您仍然可以使用 ssh 进行传输和身份验证:rsync -e ssh -v source_file_or_dir user@remotehost:dest_file_or_dir
。添加-a
存档模式以同步递归目录并匹配文件属性以及--delete
包括删除本地找不到的远程文件是常见选项。如果要同步目录,请确保源和目标参数都以尾部斜杠 (/) 结尾。