rsync da un error en el script de shell

rsync da un error en el script de shell

Tengo un script que copia archivos a otro servidor. No quiero sobrescribir ningún archivo, así que tengo que usar rsync.

Puedo usar rsync sin ningún problema cuando ejecuto en la línea de comando. Pero cuando lo uso en un script, rsync no funciona. Da un error y ni siquiera pude encontrar ese error en Google.

Aquí está el error:

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]

Me gustaría señalar que el error esnoNo existe tal archivo o directorio(2)

El error es:No es un directorio(20)

Aquí está el guión:

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

estoy usando así

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

Aquí está la salida 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

Servidor: CentOS Linux versión 7.2.1511 (Núcleo)

Rsync: rsync versión 3.0.9 protocolo versión 30

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

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

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

openssh-6.6.1p1-22.el7.x86_64

rsync-3.0.9-17.el7.x86_64

¿Podrías ayudarme a resolver el problema?

Respuesta1

No lo use $PATHcomo variable en sus scripts!!!

Anulará tu, eh $PATH,.

Un ejemplo:

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

Si le asigno algo más $PATH, ¿qué pasa?

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

Como recomendación general, sugeriría evitar por completo el uso de MAYÚSCULAS al asignar variables en sus scripts. Es mejor que queden reservados para las variables de entorno del shell.

información relacionada