Обычно я использую scp для копирования, но сейчас я пытаюсь привыкнуть к более мощной команде rsync. Это помогает мне использовать меньшую пропускную способность, копируя только файлы, которые были изменены. Тем не менее, rsync имеет много сложных параметров, поэтому я подумал: эй, я просто сделаю небольшой Bash-скрипт, который облегчит мне задачу, и вызову команду «rscp». Итак, я пошел строить что-то вроде этого. Обратите внимание, что в приведенном ниже примере мой веб-хост использует другой номер порта, кроме 22, поэтому для этого используется $ 1.
#!/bin/bash
rsync -avzp --progress --rsh='ssh -p$1' $2 $3 $4 $5 $6 $7
Итак, я надеюсь, что его использование будет примерно таким:
rscp 3822 --exclude=tiny_mce /var/www/mysite/* root@webhost.com:~/www/mysite
Это бы немного приблизило меня к использованию команды scp, видите ли.
Однако, когда я запустил это, я получаю эту ошибку:
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?