rsync dá um erro no shell script

rsync dá um erro no shell script

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

Posso usar o rsync sem nenhum problema quando executo na linha de comando. Mas quando eu uso no script, o rsync não funciona. Dá 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]

Gostaria de salientar que o erro énãoNão existe tal arquivo ou diretório(2)

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

Aqui está o roteiro:

#!/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 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

Servidor: CentOS Linux versão 7.2.1511 (núcleo)

Rsync: protocolo rsync versão 3.0.9 versão 30

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

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

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

abresh-6.6.1p1-22.el7.x86_64

rsync-3.0.9-17.el7.x86_64

Você poderia me ajudar a resolver o problema?

Responder1

Não use $PATHcomo variável em 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 outra coisa 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 recomendação geral, sugiro evitar usar totalmente MAIÚSCULAS ao atribuir variáveis ​​em seus scripts. É melhor que eles sejam deixados reservados para as variáveis ​​de ambiente do shell.

informação relacionada