使用 scp 将几个文件(具有不同的扩展名,例如 xml、crt.jks)从一台服务器复制到另一台服务器
Copy few files (of different extenstion e.g. xml, crt. jks) from one server to another server using scp
我有一个要求,我需要复制几个不同扩展名的文件,例如xml, crt, jks 从一台服务器到另一台服务器使用 scp
.
截至目前,它从目录 (/tmp
) 复制所有文件并将其放入新创建的子目录 tmp
下的 destination server
中。文件传输到 destination server
后,我需要使用复制的文件执行一些命令,并且会生成一些结果文件。
在 destination server
中执行命令后,我需要将结果文件复制到 source server
中,但它会再次复制所有文件:-(
我尝试了这些命令,但没有成功
$scp '/tmp/*.{xml,crt,jks}' user@<destination server>
这会导致不必要的文件跨网络传输,因此我正在努力减少它。
尝试有条件地 select 应该对哪些文件扩展名进行 scp 而不是全部发送?没问题,无论如何你都是朝着正确方向迈出的一步!让我们花点时间看看您的原始命令在做什么...
$scp '/tmp/*.{xml,crt,jks}' user@<destination server>
好的,从命令的角度来看,
"I'm going to run the scp command and then look for a terminating '
character, and treat the internal as a literal. I see we will be looking for files within /tmp and take the file named *.{xml,crt,jks}. I see the ending '
so the literal is done, now I'll migrate this over to the passed server."
命令失败并不奇怪,因为您的 /tmp
文件夹中可能没有任何名为 *.{xml,crt,jks}
的文件。您使用 {}
according to the documentation on wildcards 并没有错,但是您 运行 遇到的问题是文字阻塞 shell 扩展的简单错误。您对 ''
的使用导致输入被视为实际文字,从而无需 bash 扩展这些通配符并有条件地执行您的操作。因此,真正的命令是...
scp /path/to/files/{*.fileType1,*.fileType2,...} user@<destination server>
I suggest reading more into shell expansions 如果您希望保留 ''
并且仍然有可变术语,请做更多研究以在引号或文字中获取变量或可扩展术语。
我有一个要求,我需要复制几个不同扩展名的文件,例如xml, crt, jks 从一台服务器到另一台服务器使用 scp
.
截至目前,它从目录 (/tmp
) 复制所有文件并将其放入新创建的子目录 tmp
下的 destination server
中。文件传输到 destination server
后,我需要使用复制的文件执行一些命令,并且会生成一些结果文件。
在 destination server
中执行命令后,我需要将结果文件复制到 source server
中,但它会再次复制所有文件:-(
我尝试了这些命令,但没有成功
$scp '/tmp/*.{xml,crt,jks}' user@<destination server>
这会导致不必要的文件跨网络传输,因此我正在努力减少它。
尝试有条件地 select 应该对哪些文件扩展名进行 scp 而不是全部发送?没问题,无论如何你都是朝着正确方向迈出的一步!让我们花点时间看看您的原始命令在做什么...
$scp '/tmp/*.{xml,crt,jks}' user@<destination server>
好的,从命令的角度来看,
"I'm going to run the scp command and then look for a terminating '
character, and treat the internal as a literal. I see we will be looking for files within /tmp and take the file named *.{xml,crt,jks}. I see the ending '
so the literal is done, now I'll migrate this over to the passed server."
命令失败并不奇怪,因为您的 /tmp
文件夹中可能没有任何名为 *.{xml,crt,jks}
的文件。您使用 {}
according to the documentation on wildcards 并没有错,但是您 运行 遇到的问题是文字阻塞 shell 扩展的简单错误。您对 ''
的使用导致输入被视为实际文字,从而无需 bash 扩展这些通配符并有条件地执行您的操作。因此,真正的命令是...
scp /path/to/files/{*.fileType1,*.fileType2,...} user@<destination server>
I suggest reading more into shell expansions 如果您希望保留 ''
并且仍然有可变术语,请做更多研究以在引号或文字中获取变量或可扩展术语。