【发布时间】:2016-04-06 22:58:16
【问题描述】:
我正在寻找一些知识来帮助我理解为什么在使用 rsync 将文件从远程服务器传输到本地路径时使用 cron 失败。
我的目标是在设定的时间运行计划的 cron 作业并成功执行我的传输脚本
从众多 Google 搜索中,我整理了以下 rsync 命令:
rsync --protect-args --remove-source-files --chmod=Du=rw,Dgo=rw,Fu=rw,Fog=r -apvzrc pi@192.168.0.10:/media/pi/USBSTORAGE32/ /media/Data_1/"James' Files"/
我已经设置了远程服务器,因此它不会通过使用 ssh-keygen rsa 来生成存储在 authorised_keys 文件中的公钥来要求输入密码。我使用 SSH 登录到“本地”机器,然后输入命令将文件从远程服务器“拉”到本地机器。
一旦我测试了上面的 rsync 命令,我认为我已经完成了,所以将它弹出到一个脚本中,然后通过 crontab 添加到 cron。我添加的行是这样的
55 * * * * sudo /home/jlivin25/bin/myscripts/sync.sh > /var/log/james/cronsync.log 2>&1
我的脚本是这样的:
#!/usr/bin/env bash
rsync --protect-args --remove-source-files --chmod=Du=rw,Dgo=rw,Fu=rw,Fog=r -apvzrc pi@192.168.0.10:/media/pi/USBSTORAGE32/ /media/Data_1/"James' Files"/
计划任务未能按预期运行,cron 尝试运行脚本但我的日志文件中记录了以下错误消息:
sudo: no tty present and no askpass program specified
此时我被困住了,因为通过“谷歌搜索”上述消息,我得到了很多不同的原因,即我所做的事情不起作用。我不确定将错误追到哪里,这是我使用 cron、ssh 或 rsync 的问题。
任何帮助将不胜感激。
小吉姆
【问题讨论】:
-
接缝你有东西需要你的终端。也许你的 ssh 代理
-
尝试在 /etc/cron.d 中或直接使用 root 用户的 crontab -e 来避免必须 sudo
-
嘿@quazardous,我没想到(根的crontab)我会试一试并报告。感谢您的快速响应。
-
@quazardous 我将所需的 cron 作业移至根 crontab。从命令中删除了 sudo。我还为 root 用户生成了一个 rsa 公钥,今晚正在测试。会更新。
标签: linux ssh cron crontab rsync