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 (Core)

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

В качестве общей рекомендации я бы предложил избегать использования только ВЕРХНИХ БУКВ при назначении переменных в ваших скриптах. Лучше оставить их зарезервированными для переменных окружения оболочки.

Связанный контент