为什么这个rsync无法正常工作?

时间:2016-11-06 13:16:56

标签: bash magento rsync

我没有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

这是目标文件夹:

magento-v2 folder

这是脚本运行后的目标文件夹:

magento-v4 folder

我做错了什么?

1 个答案:

答案 0 :(得分:1)

<强>更新

对于从cron运行的任何 shell脚本:

  1. 使用完整路径。 (脚本和引用脚本的crontab中都有)

  2. 确保脚本可执行,并且正确的用户有权运行。 (参见

  3. 关于 Magento:

    1. 确保使用适用于 magento 的crontab语法。
    2. 请参阅此答案的示例设置: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
        
    3. 如果这些基本步骤无效,请考虑在http://magento.stackexchange.com中发布您的问题。
    4. 注意:大多数教程/帮助指南/帮助论坛,无论是正确还是错误,都会假定您是系统管理员的默认位置,因为您正在进行故障排除管理员级别的任务。 请指定您的确切约束。

      1. 请参阅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

      2. 此示例脚本为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
      3. 另外:如果出于某种原因需要在同一环境中运行,您可以随时添加source /User/your/home/folder/path/.profile(替换为适用的个人资料路径)。

        Crontab 在它自己的环境中运行,您需要假设它不了解您,您的主文件夹,相对路径,您的ssh证书位置,您可能没有的任何常见环境变量/设置甚至意识到等等。

        它总能理解的是完整路径,它将执行,可执行文件,它有权运行。