使用scp将一些文件(具有不同扩展名,例如xml,crt.jks)从一个服务器复制到另一个服务器

时间:2018-06-07 15:48:04

标签: linux bash unix scp

我有一个要求,我需要复制几个不同扩展名的文件,例如xml,crt,jks使用dic = { 'a' : 2, 'b' : 4, 'c' : 1} df["new_col"] = df.col1.map(dict) 从一台服务器到另一台服务器。

截至目前,它从目录(scp)复制所有文件,并将其放在新创建的子目录/tmp下的destination server中。将文件传输到tmp后,我需要使用复制的文件执行一些命令,并生成一些结果文件。

destination server中执行命令后,我需要复制destination server中的结果文件,但同样会复制所有文件:-(

我尝试了这些命令,但没有运气

source server

这导致跨网络的不必要的文件传输,所以我试图减少相同的。

1 个答案:

答案 0 :(得分:2)

尝试有条件地选择哪些文件扩展名应该scp'd而不发送所有文件扩展名?没问题,你是朝着正确的方向迈出的一步!让我们花一点时间看看你的原始命令在做什么......

$scp '/tmp/*.{xml,crt,jks}' user@<destination server>

从命令的角度来看,确实如此,

“我将运行scp命令,然后查找终止'字符,并将内部视为文字。我看到我们将在/ tmp中查找文件并采取名为*。{xml,crt,jks}的文件。我看到结尾'所以文字已经完成,现在我将把它迁移到传递的服务器上。“

命令失败并不奇怪,因为您的*.{xml,crt,jks}文件夹中可能没有任何名为/tmp的文件。你使用{} according to the documentation on wildcards并没有错,但你遇到的问题是文字阻止shell扩展的一个简单错误。您对''的使用导致输入被视为实际文字,因此无需使用bash扩展这些通配符并有条件地执行操作。因此,真正的命令是......

  

scp /path/to/files/{*.fileType1,*.fileType2,...} user@<destination server>

I suggest reading more into shell expansions如果您希望保留''并且仍然具有可变术语,则可以对引号或文字中的变量或可扩展术语进行更多研究。