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