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 $PATH
como 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.