对于通用 scp,dpkg --print-architecture 和 uname -m 之间是否有一个简单的转换器?

对于通用 scp,dpkg --print-architecture 和 uname -m 之间是否有一个简单的转换器?

我想从远程机器复制与我的机器(x86_64 / aarch64)相关的文件。我想使用:scp user@host:*$(uname)* .复制 wheel 和 .deb 文件,例如:

  1. 名称-xyz-cp36-cp36m-linux_x86_64.whl
  2. 名称_x.y.z_amd64.deb

现在,使用$(uname -m)将产生x86_64与 wheel 匹配的结果,而使用$(dpkg --print-architecture) will yieldamd64` 将与 .deb 匹配

在本地,我使用

find . | grep -E "$(uname -m)|$(dpkg --print-architecture)" | xargs -I{} cp -u {} dst/

查找并复制 - 但我不确定如何将其移动到 scp。

我目前的尝试坚持:

scp user@host:dst/[*$(uname -m)*][*$(dpkg --print-architecture)*]

什么也没找到。

答案1

看了一会儿后,我发现这个答案可以帮我。

使用rsync我可以准确复制我想要的内容:

py_version=$(python -V | cut -d' ' -f2 | tr -d ".")

rsync -am --include="*$(dpkg --print-architecture)*" --include="*${py_version:0:2}*$(uname -m)*" --exclude="*" user@host:dst .

解释:

  • py_version=$(python -V | cut -d' ' -f2 | tr -d ".")获取前 2 个版本数字(例如 3.6.9 -> 36),这将有助于我精确定位车轮
  • --include="*$(dpkg --print-architecture)*"将精确定位 .deb
  • --include="*${py_version:0:2}*$(uname -m)*"将使用架构 + python 版本精确定位轮子
  • --exclude="*"将删除其他所有内容

相关内容