O comando Crontab não funciona corretamente

0

Eu tenho a seguinte entrada crontab para automatizar a cópia de meus arquivos para separar W / S na rede. No entanto, ele não copia os arquivos, mas produz o arquivo de log. aqui está o conteúdo do arquivo

#! /bin/bash
echo "Rsync - MA Inbound Files"
rsync -rvu /media/hdd2/MA-Inbound /media/miracle/
echo "Completed MA Inbound Files Sync, Starting Tally.ERP 9 Data File Sync"

rsync -rvu /media/hdd2/Tally.ERP9 /media/miracle/
echo "Completd Tally.ERP9 Data File Sync, Starting 2011 Accounts Files Sync"

rsync -rvu /media/hdd2/"2011 Accounts" /media/miracle/
echo "Completd 2011 Accounts Files Sync, Starting 2012 Accounts Files Sync"

rsync -rvu /media/hdd2/"2012 Accounts" /media/miracle/
echo "Completd 2012 Accounts Files Sync, Starting 2012 Files Sync"

rsync -rvu /media/hdd2/"2012 Files" /media/miracle/
echo "Completd 2012 Files Sync, Starting 2013 Accounts Files Sync"

rsync -rvu /media/hdd2/"2013 Accounts" /media/miracle/
echo "Completd 2013 Accounts, Starting Admin Files Sync"

rsync -rvu /media/hdd2/"Admin" /media/miracle/
echo "Completd Admin Files Sync, Starting MA_Staff Data File Sync"

rsync -rvu /media/hdd2/MA_Staff /media/miracle/
echo "Completd MA_Staff Data File Sync, Starting MA-Outbound Data File Sync"

rsync -rvu /media/hdd2/MA_Outbound /media/miracle/
echo "Completd MA-Outbound Data File Sync, Starting Staff Pic Data File Sync"

rsync -rvu /media/hdd2/"Staff Pic" /media/miracle/
echo "Completd Staff Pic Data File Sync, End OF Syn"

aqui é o comando que eu coloquei no arquivo crontab

30 22 * * * /Desktop/marsync.sh >AutoRsyncLogfile.txt

Quando copio esses comandos individualmente, ele funciona perfeitamente

Espero que alguém possa me ajudar com isso .....

Obrigado

    
por Nilanga 25.08.2014 / 13:54

2 respostas

3

Você não indica o que o arquivo de log contém; Eu suponho que esteja vazio.

Se for esse o caso, parece que o seu problema é devido ao caminho usado no arquivo crontab:

30 22 * * * /Desktop/marsync.sh >AutoRsyncLogfile.txt

A parte /Desktop está provavelmente incorreta; o diretório Desktop geralmente está em seu diretório inicial (por exemplo, /home/<username> ) e pode ser referenciado pela variável de ambiente $HOME . Se você alterar isso para algo como:

30 22 * * * $HOME/Desktop/marsync.sh >AutoRsyncLogfile.txt

- então isso deve funcionar. Você também precisará garantir que o arquivo marsync.sh seja executável:

chmod a+x $HOME/Desktop/marsync.sh

Além disso, você pode querer capturar um erro padrão (além da saída padrão) em seu arquivo de log. Use &> para fazer isso:

30 22 * * * $HOME/Desktop/marsync.sh &>AutoRsyncLogfile.txt
    
por Jeremy Kerr 25.08.2014 / 14:05
-1

Você precisa chamar todos os comandos, incluindo path: / usr / bin / rsync, ou especificar path no script: veja aqui

    
por laugeo 25.08.2014 / 14:08