通常は scp を使用してコピーしますが、今はより強力な rsync コマンドに慣れようとしています。変更されたファイルのみをコピーすることで、帯域幅の使用を抑えることができます。ただし、rsync には多くの複雑なパラメーターがあるため、簡単に実行できるように簡単な Bash スクリプトを作成して、コマンド 'rscp' を呼び出してみようと思いました。それで、私はこのようなものを構築し始めました。以下の例では、私の Web ホストが 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スクリプトで私が間違っていることを誰かが理解できますか?