exec cp falha do script, mas funciona quando emitido diretamente

2

Eu tenho um script que copia os backups do SQL para um servidor Windows. Aqui está a linha do / etc / fstab:

//my.win.box/share$ /winshare   cifs    credentials=/etc/credfile,dom=mydomain,uid=0,gid=0,file_mode=0600,dir_mode=0700 0 0

Este é o script de backup:

backup.sh:

# copy zipped sql exports to /winshare/db
find /backups/sql/*sql.gz -mtime +1 -exec cp {} /winshare/db \;

Conectado com privilégios de root (neste caso, como root)

$ ./backup.sh
cp: cannot create regular file '/winshare/db/mydb_20130301.sql.gz': Permission denied

No entanto, se eu emitir o comando a partir de um prompt, e não através do script:

$ find /backups/sql/*sql.gz -mtime +1 -exec cp {} /winshare/db \;

O (s) arquivo (s) são copiados como esperado. Mais uma vez, logado como root aqui.

O que poderia estar causando o comando in-script para falhar, mas o comando idêntico para trabalhar a partir do console?

    
por a coder 23.04.2013 / 21:55

1 resposta

0

Você não diz que tipo de máquina é essa, mas minha primeira observação é que você não tem uma linha de intérprete em seu backup.sh para especificar qual programa deve ser executado. Você quer algo assim:

#!/bin/bash
export PATH=/bin:/usr/bin

find....your stuff..here

Agora, isso sozinho não resolve sua pergunta de permissão, mas ajudará. Pode haver um arquivo .rc em todo o sistema que seu shell tenha fornecido, especificando um comando de localização diferente ou quem sabe o que ele fez. Especificando o interpretador, você pode então examinar os arquivos init desse intérprete. Além disso, seu ambiente de login pode ter um ambiente que o script não tenha.

    
por 23.04.2013 / 22:07