我正在使用SCP
withControlMaster
复制文件,但不知何故我又收到此错误 -
command-line: line 0: Bad configuration option: ControlPersist
command-line: line 0: Bad configuration option: ControlPersist
command-line: line 0: Bad configuration option: ControlPersist
command-line: line 0: Bad configuration option: ControlPersist
command-line: line 0: Bad configuration option: ControlPersist
这是我的 shell 脚本 -
#!/bin/bash
export PRIMARY=/filetransfer/test01/primary
readonly SERVERS_LOCATION=(machineB machineC)
export SERVERS_LOCATION_1=${SERVERS_LOCATION[0]}
export SERVERS_LOCATION_2=${SERVERS_LOCATION[1]}
export MAPPED_LOCATION=/data/snapshot
FILE_PARTITION=(550 274)
export dir3=$MAPPED_LOCATION/20140510
find "$PRIMARY" -mindepth 1 -delete
do_CopyFiles() {
el=$1
scp -o ControlMaster=auto -o 'ControlPath=~/.ssh/control-%r@%h:%p' -o ControlPersist=900 david@$SERVERS_LOCATION_1:$dir3/pp_week_1543_"$el"_200003_5.data $PRIMARY/. || scp -o ControlMaster=auto -o 'ControlPath=~/.ssh/control-%r@%h:%p' -o ControlPersist=900 david@$SERVERS_LOCATION_2:$dir3/pp_week_1543_"$el"_200003_5.data $PRIMARY/.
}
export -f do_CopyFiles
parallel -j 5 do_CopyFiles ::: "${FILE_PARTITION[@]}"
我做错了什么吗?
这种情况只发生在我运行 shell 脚本的机器上。我在其他机器上运行相同的 shell 脚本,它工作正常。所以我猜这台机器的某些设置配置是不同的,我不知道。
答案1
该ControlPersist
选项首次出现在 OpenSSH 5.6 中。您可能使用的是旧版本。
如果没有ControlPersist
,您可以在完成连接后显式终止连接。
答案2
最明显的答案是您在所有系统上都没有相同的版本,scp
并且其中一些系统不支持-o ControlPersist
。
但真的需要 ControlMaster 吗?你真的能衡量你所从事的工作的差异吗?
您可能还想研究一下 rsync。