rsync가 쉘 스크립트에서 오류를 발생시킵니다.

rsync가 쉘 스크립트에서 오류를 발생시킵니다.

파일을 다른 서버로 복사하는 스크립트가 있습니다. 파일을 덮어쓰고 싶지 않으므로 rsync를 사용해야 합니다.

명령줄에서 실행할 때 아무 문제 없이 rsync를 사용할 수 있습니다. 하지만 스크립트에서 사용하면 rsync가 작동하지 않습니다. 오류가 발생하는데 Google에서도 해당 오류를 찾을 수 없었습니다.

오류는 다음과 같습니다.

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]

나는 그 오류가~ 아니다해당 파일이나 디렉터리가 없습니다(2)

오류는 다음과 같습니다:디렉터리가 아님(20)

스크립트는 다음과 같습니다.

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

나는 이렇게 사용하고 있다

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

다음은 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

서버: CentOS Linux 릴리스 7.2.1511(코어)

Rsync: rsync 버전 3.0.9 프로토콜 버전 30

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

openssh-클라이언트-6.6.1p1-22.el7.x86_64

openssh-서버-6.6.1p1-22.el7.x86_64

openssh-6.6.1p1-22.el7.x86_64

rsync-3.0.9-17.el7.x86_64

문제를 해결하는 데 도움을 주실 수 있나요?

답변1

$PATH스크립트에서 변수로 사용하지 마세요.!!!

이는 귀하의, 어, $PATH.

예:

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

에 다른 것을 할당하면 $PATH어떻게 되나요?

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

일반적인 권장 사항으로는 스크립트에 변수를 할당할 때 대문자만 완전히 사용하지 않는 것이 좋습니다. 쉘의 환경 변수를 위해 예약된 상태로 두는 것이 더 좋습니다.

관련 정보