计数ssh查找结果

用户123

我的脚本中包含这一部分,我会将1小时的文件从一台服务器复制到当前登录的当前服务器:

ssh testuser@sampleServer find /home/testuser/files -type f -mmin -60 > /home/user/bin/tmp/results.txt

while read LINE
do
    scp -r testuser@sampleServer:$LINE /home/user/bin/tmp
done < /home/user/bin/tmp/results.txt

我想计算在代码的第一行中检索到的文件数,并将其值存储在变量中,所以我只需要输入:

COUNT=`ssh testuser@sampleServer find /home/testuser/files -type f -mmin -60 | wc -l`

但是我认为,由于有多余,因此仍然可以改进。您对我如何修改它有任何建议吗?谢谢

三元组

打开n +1个TCP连接并为每个文件执行SSH握手等操作以复制n个文件似乎效率很低。

这是通常的做法(并避免使用讨厌的临时文件):

ssh testuser@sampleServer '
    find /home/testuser/files -type f -mmin -60 -print0 |
    xargs -r0 tar zcf -' |
tar -C /home/user/bin/tmp -z -x -f -

这是假设任何文件名中都没有换行符(这也会破坏您的原始脚本),并且/home/user/bin/tmp如果远程站点上存在镜像目录结构,您不介意创建镜像目录结构

现在,将行数添加到原始脚本中已经很简单了-为什么不在临时文件上运行它呢?-但是这里同样容易。只需-v在提取tar过滤器中添加一个选项并计算输出行数即可。

... | tar -C /home/user/bin/tmp -z -x -v -f - | wc -l

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章