我的脚本中包含这一部分,我会将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] 删除。
我来说两句