Обычно я использую scp для копирования материала, но теперь я пытаюсь привыкнуть к более мощной команде rsync. Это помогает мне использовать меньшую пропускную способность, копируя только те файлы, которые были изменены. Тем не менее, rsync имеет множество сложных параметров, поэтому я подумал, эй, я просто сделаю небольшой скрипт Bash, который упростит для меня, и вызовет команду «rscp». Итак, я пошел строить что-то вроде этого. Обратите внимание в примере ниже, что мой веб-хост использует другой номер порта, кроме 22, поэтому для этого используется $ 1.Ошибка при попытке упростить команду rsync
#!/bin/bash
rsync -avzp --progress --rsh='ssh -p$1' $2 $3 $4 $5 $6 $7
Таким образом, его использование, я надеялся, будет что-то вроде:
rscp 3822 --exclude=tiny_mce /var/www/mysite/* [email protected]:~/www/mysite
Это сделало бы его немного ближе к моему использованию команды УПП вы видите.
Однако, когда я управлял этим, я получаю эту ошибку:
building file list ...
4 files to consider
ERROR: destination must be a directory when copying more than 1 file
rsync error: errors selecting input/output files, dirs (code 3) at main.c(494) [receiver=2.6.9]
rsync: connection unexpectedly closed (8 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(454) [sender=2.6.9]
Но если я вернусь к обычной Rsync команды, он работает просто отлично.
Может ли кто-нибудь понять, что я делаю неправильно в моем сценарии Bash?