MMV não é executado no script bash (somente se for executado pelo CRON)

1

este é o meu script "backup.sh":

#!/bin/bash


date=$(date +"%m-%d-%Y_%r")

mmv -r "uploads/temp/*" "#1\ '$date'"

mv /ftphome/uploads/temp/* /ftphome/uploads/arch/

Minha estrutura dir é assim:

dr-xr-xr-x 9 it2 it2 4096 Feb 29 12:09 arch
drwxrwxr-x 2 it2 it2 4096 Feb 29 12:09 temp

Quando eu tento executar o script do console tudo está funcionando - como root, porque senão eu recebo um erro "diretório uploads / temp / diretório não permite gravações" & lt; - eu definir essa permissão de propósito.

Infelizmente quando eu tento iniciar este script pelo milho, o comando mmv não é executado, e todos os arquivos movem para o diretório "arch" sem sufixo.

Eu estava tentando mudar a permissão chmod para 777 para o diretório "temp", mas isso não ajuda. Eu editei o crontab como root, então ele deve funcionar como root (essa informação eu li neste tópico: Como executar um cron job usando o comando sudo ).

BTW, é como se eu tentasse executar o script pelo cron (cada minuto é para testes):

* * * * * /ftphome/backup.sh
    
por Pretenderus 29.02.2016 / 12:50

1 resposta

1

Você precisa cd para o diretório correto primeiro. Cron começa com você em / .

#!/bin/bash
date=$(date +"%Y-%m-%d_%r")

cd /ftphome || exit

mmv -r "uploads/temp/*" "#1\ '$date'"

mv /ftphome/uploads/temp/* /ftphome/uploads/arch/

Em uma nota secundária, não coloque a extensão .sh em um script bash. É enganoso, já que sh não é bash.

    
por geirha 02.03.2016 / 08:01