我想从远程机器复制与我的机器(x86_64 / aarch64)相关的文件。我想使用:scp user@host:*$(uname)* .
复制 wheel 和 .deb 文件,例如:
- 名称-xyz-cp36-cp36m-linux_x86_64.whl
- 名称_x.y.z_amd64.deb
现在,使用$(uname -m)
将产生x86_64
与 wheel 匹配的结果,而使用$(dpkg --print-architecture) will yield
amd64` 将与 .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="*"
将删除其他所有内容