У меня есть скрипт, который копирует файлы на другой сервер. Я не хочу перезаписывать файлы, поэтому мне приходится использовать 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
В качестве общей рекомендации я бы предложил избегать использования только ВЕРХНИХ БУКВ при назначении переменных в ваших скриптах. Лучше оставить их зарезервированными для переменных окружения оболочки.