从远程网络获取 40k 路径的大小

从远程网络获取 40k 路径的大小

我有大约 40k 行的文件,其中包含我需要从远程站点获取大小的路径(使用rsh&du -scL命令)。我尝试过,while read line但由于远程连接,它在 100 多行后退出。因此,我尝试将所有行复制到一个文件中,du -scL并将该文件输入到一个文件中rsh,但它再次崩溃,说“命令太长”。我需要编写一个脚本,使用rsh和计算远程站点的所有这些路径的大小du

#!bin/bash
for line in `cat $destbang1`
do
  rsh vnc.<remotesite> du -sL $line | awk '{print $1}' >> /tmp/size1.txt
done
total=`gawk '{ sum += $1 }; END { print sum}' /tmp/size1.txt`
echo $total

答案1

您可以使用足够低的数量或参数来xargs创建多个调用。rsh

假设远程和本地限制相同:

xargs --delimiter='\n' rsh /path/to/script.sh <lists.txt

答案2

您可以使用单个rsh远程 shell 运行整个过程:

tr '\012' '\0' < "$destbang1" |
    rsh vnc.remotesite du -sL --files0-from=- |
    awk '{sum += $1} END {print sum}'

这要求您的du命令理解该--files0-from选项,并且文件中的任何文件名都不$deskbang1包含嵌入的换行符。

相关内容