rsync dá um erro no script de shell [duplicado]

1

Eu tenho um script que copia arquivos para outro servidor. Eu não quero sobrescrever nenhum arquivo, então eu tenho que usar o rsync.

Eu posso usar o rsync sem nenhum problema quando eu executo na linha de comando. Mas quando eu uso no script, o rsync não funciona. Ocorreu um erro e nem consegui encontrar esse erro no Google.

Aqui está o erro:

rsync: Failed to exec ssh: Not a directory (20)
rsync error: error in IPC code (code 14) at pipe.c(84) [sender=3.0.9]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in IPC code (code 14) at io.c(605) [sender=3.0.9]

Eu gostaria de apontar que o erro é não Nenhum arquivo ou diretório (2)

Erro: Não é um diretório (20)

Aqui está o script:

#!/bin/bash
PATH=$1
FILE=$2
DAY=$(/usr/bin/date +'%Y-%m-%d')
/usr/bin/rsync -avh $PATH postgres@REMOTE_IP:/Backup/xlog_backup/$DAY/.

Estou usando assim

sh ~postgres/archive.sh /srv/postgresql/data/pg_xlog/000000010000003E00000025 000000010000003E00000025

Aqui está a saída de ls:

postgres@MY_SERVER:~$ls -l /srv/postgresql/data/pg_xlog/000000010000003E00000025
-rw-------. 1 postgres postgres 16777216 May 25 10:41 /srv/postgresql/data/pg_xlog/000000010000003E00000025

Server: CentOS Linux release 7.2.1511 (Core)

Rsync: rsync version 3.0.9 protocol version 30

postgres@MY_SERVER:~$rpm -qa | grep openssh

openssh-clients-6.6.1p1-22.el7.x86_64

openssh-server-6.6.1p1-22.el7.x86_64

openssh-6.6.1p1-22.el7.x86_64

rsync-3.0.9-17.el7.x86_64

Você poderia me ajudar a resolver o problema?

    
por Yavuz Selim 25.05.2017 / 09:53

1 resposta

1

Não use $PATH como uma variável nos seus scripts !!!

Ele substituirá o seu, eh, $PATH .

Um exemplo:

echo $PATH   
/home/maulinglawns/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Se eu atribuir algo a $PATH , o que acontece?

maulinglawns@debian-HP:~$ PATH=foo
maulinglawns@debian-HP:~$ echo $PATH
foo
maulinglawns@debian-HP:~$ ls
bash: ls: command not found

Como uma recomendação geral, sugiro que você evite usar o UPPERCASE apenas ao atribuir variáveis em seus scripts. É melhor que eles sejam deixados como reservados para as variáveis de ambiente do shell.

    
por 25.05.2017 / 10:03

Tags