使用 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 如果您希望保留 '' 并且仍然有可变术语,请做更多研究以在引号或文字中获取变量或可扩展术语。