我没有SSH访问权限,只能访问cronjob。
我已经编写了一个copy.sh脚本来rsync文件夹,但它不会发生。为什么呢?
OLDDIR="/var/www/web46/html/magento-v2"
NEWDIR="/var/www/web46/html/magento-v4"
rsync -au $OLDDIR/media/ $NEWDIR/media >> log.txt
# rsync -au $OLDDIR/app/code/ $NEWDIR/app/code
# rsync -au $OLDDIR/app/design/ $NEWDIR/app/design
# rsync -au $OLDDIR/app/etc/modules/ $NEWDIR/app/etc/modules
# rsync -au $OLDDIR/app/locale/ $NEWDIR/app/locale
# rsync -au $OLDDIR/js/ $NEWDIR/js
# rsync -au $OLDDIR/skin/ $NEWDIR/skin
这是目标文件夹:
这是脚本运行后的目标文件夹:
我做错了什么?
答案 0 :(得分:1)
<强>更新强>
对于从cron运行的任何 shell脚本:
使用完整路径。 (脚本和引用脚本的crontab中都有)
确保脚本可执行,并且正确的用户有权运行。 (参见
关于 Magento:
请参阅此答案的示例设置:https://magento.stackexchange.com/a/63717
*/5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=default */5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=always
注意:大多数教程/帮助指南/帮助论坛,无论是正确还是错误,都会假定您是系统管理员的默认位置,因为您正在进行故障排除管理员级别的任务。 请指定您的确切约束。
请参阅Check your existing crontab 故障排除页面
检查现有的crontab
验证您的crontab是否已设置:
登录Magento服务器。作为具有root权限的用户,请参阅是否 已经设置了crontab。
crontab -u <Magento file system owner name> -l
例如,在CentOS上
crontab -u magento_user -l
如果没有为用户设置crontab, 将显示以下消息:
no crontab for magento_user
请参阅以下部分之一 解决你的问题。
解决方案:crontab未设置
要验证您的cron作业是否设置正确,请参阅Set up cron jobs。
此示例脚本为rsync脚本添加完整路径和shebang行。 注意:您可能需要能够在cron外部对此进行测试以查明问题:
#!/bin/bash echo "At least I know the script ran up to here" > /var/log/myscriptran.log OLDDIR="/usr/share/full-path/something/magento-v2" NEWDIR="/usr/share/full-path/something/magento-v4" /usr/bin/rsync -au "$OLDDIR/media/" "$NEWDIR/media" 2>> /var/log/rsync_cron.log
另外:如果出于某种原因需要在同一环境中运行,您可以随时添加source /User/your/home/folder/path/.profile
(替换为适用的个人资料路径)。
Crontab 在它自己的环境中运行,您需要假设它不了解您,您的主文件夹,相对路径,您的ssh证书位置,您可能没有的任何常见环境变量/设置甚至意识到等等。
它总能理解的是完整路径,它将执行,可执行文件,它有权运行。