我通常使用 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 脚本中做错了什么?