【问题标题】:How to get distant server free space如何获得远程服务器可用空间
【发布时间】:2022-01-05 05:43:12
【问题描述】:

您好,我目前正在尝试使用 bash 命令自动将文件传输到远程服务器,但我希望能够在尝试发送多个文件之前知道该服务器上剩余多少空间。

例如,如果服务器剩余 5GB,我想发送 4.5GB。这是我想出的代码(形成多个其他类型的问题),但我不能使用这些数据来自动化流程

spaceLeft=`ssh -i /cygdrive/C/cygwin64/home/turco/IDs/fileTransfer -p 2222 root@localhost " df -h /var/mobile"`
echo $spaceLeft
IFS=' ' read -r -a array <<< "$spaceLeft"
for index in "${!array[@]}"
do
    echo "$index ${array[index]}"
done

当我回显 spaceleft 时出现

Filesystem     Size Used Avail Capacity iused  ifree     %iused Mounted on 
/dev/disk0s1s2 60Gi 45Gi 6.9Gi 87%      318900 624035540 0%     /private/var

当我回显数组中的所有项目时,会出现这种情况

0 Filesystem
1 Size
2 Used
3 Avail
4 Capacity
5 iused
6 ifree
7 %iused
8 Mounted
9 on

我只想知道剩下的 6.9Gi 空间,但我找不到办法得到它

【问题讨论】:

  • 您使用哪个操作系统和df 的版本?
  • 有问题的服务器是我在 IOS 14.3 上越狱的 iPhone,并且正在使用 OpenSSH 调整作为 df 版本......我不能说。在我的电脑上,我使用的是 cygwin
  • 出于好奇,如果服务器还剩 5TB、5MB 或 5kB,那么您应该发送多少?
  • 如果传输后剩余空间超过 500MB,我想发送文件。我稍后会编码
  • 所以您需要PiBTiBMiB 等...的翻译?

标签: bash ssh automation


【解决方案1】:

我建议使用 GNU df:

df -hP /var/mobile | awk 'NR==2{print $4}'

见:8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

【讨论】:

  • 我怎样才能显示更多的小数,如 6.905GB 或 6.91GB。我还发现它用于文件大小调整,它使用相同的 awk 选项并提供我想要的小数位数。 Code我怎样才能编辑它有用?
  • 我不知道您的df 的功能/选项。如果您从我的回答中删除 -h-P,您的 df 会输出什么?
  • 当我输入 -hP 时会发生这种情况 Space left : 4104440 当我输入 -h 时会发生这种情况 Space left : 2.0Gi
  • 好的,使用-hP并将print $4替换为printf("%.3fGi\n", $4*512/1024/1024/1024),例如,得到1.957Gi
【解决方案2】:

由于您只想要一个驱动器上剩余的内容,您可以tail -1 跳过标题,然后打印第四个字段。

我还建议您将块大小设置为您想要处理的最小单位,而不是使用-h(人类可读)格式。

gigsleft=$(ssh ... df -B 1G /var/mobile | tail -1 | awk '{ print $4 }')

gigsleft 现在应该包含剩余的演出数量,没有单位 - 所以你不需要解析它。如果你想在 megs 中留下空间,请改用-B 1M

如果您希望它以千兆字节为单位带小数,请使用与df -B 相同的方法并选择更小的单位,例如k,然后将其除以:

df -B 1k /var/mobile | tail -1 | awk '{ printf("%.3f\n", $4/1024^2); }'

不过,为此使用小数似乎没有多大意义。您正在使用该数字来填充一定百分比或数量的磁盘,因此我建议您向df 请求较小的单元,例如k,甚至df -B 1

df -B 1 /var/mobile | tail -1 | awk '{ print $4 }'

...获取空闲字节数,并将其用作整个脚本中的最小单位。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    相关资源
    最近更新 更多