小编Bri*_*mas的帖子

将人类可读的大小转换为字节数量的有效方法是什么?

我想的“10.9T的” ZFS输出转换为实际字节,使用一两行的东西,而不是运行通用的数学函数,并且如果条件TGM,等有没有一种有效的方式来做到这一点?

现在,我有这样的事情:

MINFREE="50G"
POOLSIZE=`zpool list $POOLNAME -o size` #Size 10.9T
POOLSIZE=$(echo "$POOLSIZE" | grep -e [[:digit:))]  #10.9T
POOLFREE=500M #as an example
let p=POOLSIZE x=POOLFREE y=MINFREE z=POOLSIZE; 
CALC=$(expr "echo $((x / y))")


if [ "${CALC}" < 1 ]; then
  # we are less than our min free space
  echo alert
fi
Run Code Online (Sandbox Code Playgroud)

这会产生一个错误:无法在 上运行表达式10.9T,或者50G因为它们不是数字。

是否有已知的bash功能?

我也喜欢指定它的便利,就像我MINFREE在顶部的var 中所做的那样。所以一个简单的转换方法会很好。

是我希望避免的(为每个字母设置大小写),尽管脚本看起来很干净。

编辑:感谢所有评论!这是我现在拥有的代码。,至少相关部分;

POOLNAME=san
INFORMAT=auto
#tip; specify in Gi, …
Run Code Online (Sandbox Code Playgroud)

bash text-processing

14
推荐指数
4
解决办法
2283
查看次数

批量删除 ZFS 上的大目录而不递归遍历它

我想删除zfs数据集子目录的内容。这是大量的数据。对于池“nas”,路径是/nas/dataset/certainFolder

$ du -h -d 1 certainFolder/
1.2T    certainFolder/
Run Code Online (Sandbox Code Playgroud)

而不是我必须等待,rm -rf certainFolder/我不能只是销毁该目录的句柄,以便它可以覆盖(如果我选择重新创建它,甚至可以使用相同的目录名称)??

因此,例如,对于zfs文件系统内部结构知之甚少,特别是它如何记录其文件,我想知道我是否能够直接访问该日志/映射,例如,然后删除正确的条目,以便不再显示目录。该空间目录也必须从某种审计中删除。

是否有捷径可寻?即使在ext3 fs 上,或者这已经是递归删除命令首先要做的事情,即窃取和编辑期刊?

我只是希望做一些类似的事情kill thisDir,它只是删除某种 ID,并且目录不再出现在ls -la. 数据显然仍然在驱动器上,但现在空间将被重用(覆盖),因为 ZFS 就那么酷?

我的意思是我认为zfs真的很酷,我们该怎么做?理想情况下?搓手:-)

我的具体用例(除了我对 的热爱zfs)是管理备份存档。数据通过 freefilesync (AWESOME PROG) 推送到 zfs,在 SMB 上/从 win box 到 zfs 池。删除rm -rf /nas/dataset/certainFolder一个putty词条时,它就卡住了,这个词条现在很长一段时间都不能用了。我当然必须打开另一个终端才能继续。那已经过时了,而且监视 rm -rf 没有乐趣,这可能需要几个小时。

也许我应该将命令设置为仅释放句柄,例如&,然后打印到标准输出,这可能很好。 更现实的是zfs destroy nas/dataset; zfs create -p -o compression=on nas/dataset根据@Gilles 的响应,在几秒钟内重新创建数据集。

filesystems zfs directory recursive rm

13
推荐指数
2
解决办法
7086
查看次数

标签 统计

bash ×1

directory ×1

filesystems ×1

recursive ×1

rm ×1

text-processing ×1

zfs ×1