OpenBSD如何统计目录中所有文件实际总大小(单位用字节)?

OpenBSD的安装、升级、更新等日常问题。

版主: chenjun天地乾坤

回复
f5b
锆 Zr
帖子: 643
注册时间: 2011-10-22 20:43

OpenBSD如何统计目录中所有文件实际总大小(单位用字节)?

帖子 f5b » 2013-03-03 22:04

/home/test/目录就只有2个文件,没有子目录。
img011.jpg 有1.93 MB (2,031,824 字节)
img016.jpg 有1.42 MB (1,498,669 字节)

那么2个文件总大小应该是3.36 MB (3,530,493 字节)

请问,用啥命令能统计本目录2个文件的总字节数(单位用字节B,不是KB或MB等)
man ls和du没有找到相关信息。


另一个个可能不相关的问题
Windows下面用记事本编辑文本文档a.txt,内容只有test这4个字符,右击a.txt属性中看到文件大小就是4字节。
OpenBSD下面vi b.txt,内容也是test这4个字符,保存后退出,ls -l b.txt看到大小是5字节。
把OpenBSD下面的b.txt传输到Windows系统,用记事本打开,发现test下面多一个空白行。

请问vi搞多一空白行干嘛呢?

f5b
锆 Zr
帖子: 643
注册时间: 2011-10-22 20:43

回复: OpenBSD如何统计目录中所有文件实际总大小(单位用字节)?

帖子 f5b » 2013-03-04 9:54

已经得到回答,得自己弄个shell脚本
http://marc.info/?l=openbsd-misc&m=136234909121005&w=2

~/bin> cat filesizes
#!/bin/sh
ls -l $@ | awk '{sum += $5} END { print sum }'

用途:
简单快速比较Windows和OpenBSD同样目录是否完全同步完毕,目录必须只有文件,没有子目录,否则得到的byte可能不一致。

头像
acheng
锌 Zn
帖子: 581
注册时间: 2011-07-07 21:52

回复: OpenBSD如何统计目录中所有文件实际总大小(单位用字节)?

帖子 acheng » 2013-03-04 12:17

试过du -s $dir?
如果你说用对比字节数来判断文件同步是否完成,我觉得这样不太准确。不同文件系统的block/fragment的大小不同,同一个文件所占的字节数可能也不相同。

f5b
锆 Zr
帖子: 643
注册时间: 2011-10-22 20:43

回复: OpenBSD如何统计目录中所有文件实际总大小(单位用字节)?

帖子 f5b » 2013-03-04 13:20

acheng 写了:试过du -s $dir?
如果你说用对比字节数来判断文件同步是否完成,我觉得这样不太准确。不同文件系统的block/fragment的大小不同,同一个文件所占的字节数可能也不相同。

du -s用过,显示的也没有Byte

确实,不同文件系统中同样文件占用硬盘的空间确实不一样。
但这些文件本身大小是不变的,如果有变化,文件必然被修改了。

说说我的实际应用吧。

1.
OpenBSD机器A下面使用rsync 下载了某OpenBSD镜像B的packages/i386整个目录。
Windows机器C下面用filezilla登陆OpenBSD官方网站D查看packages/i386目录,可以看到文件总数量和所有文件总字节数!

现在就想快速知道A机器的i386目录下几千个文件是否和OpenBSD官方D网站的一样。

2. ftp服务器部署在OpenBSD上,ftp 客户端是Windows机器,Windows上传了文件到OpenBSD服务器,OpenBSd上面可以直接用以上filesizes脚本得到实际总大小。方便和Windows下面的原始文件校对。

头像
acheng
锌 Zn
帖子: 581
注册时间: 2011-07-07 21:52

Re: OpenBSD如何统计目录中所有文件实际总大小(单位用字节)?

帖子 acheng » 2013-03-09 11:15

du -s出来的单位是“block”,应该再乘以512。但如前所示,它显示的是占用磁盘空间的大小,而非文件本身的大小。

想要验证几千个文件是否和原来一致,恐怕没有很快捷的方式。尤其是你要把本地文件和远程主机上的文件做对比。可以在同步时使用rsync的-c参数,让rsync检查对比文件的校验值。而且对于package的话,pkg_add在安装是也会检查里面的每个文件的校验值,如果不匹配的话应该是不会安装的。

f5b
锆 Zr
帖子: 643
注册时间: 2011-10-22 20:43

Re: OpenBSD如何统计目录中所有文件实际总大小(单位用字节)?

帖子 f5b » 2013-03-09 11:26

acheng 写了:du -s出来的单位是“block”,应该再乘以512。但如前所示,它显示的是占用磁盘空间的大小,而非文件本身的大小。

想要验证几千个文件是否和原来一致,恐怕没有很快捷的方式。尤其是你要把本地文件和远程主机上的文件做对比。可以在同步时使用rsync的-c参数,让rsync检查对比文件的校验值。而且对于package的话,pkg_add在安装是也会检查里面的每个文件的校验值,如果不匹配的话应该是不会安装的。
是需要× 512,不过也不精确哦
随便找个很多文件的目录,不含任何子目录。
比较ls -l | head 得到的total × 512和 实际多文件的总大小,是不一样的!
du -s × 512也不精确哦



另外,
Windows的NTFS下,空白文件夹或者文件夹本身不占用任何Byte。
而OpenBSD下面,任何文件夹都占用Byte,即使空白文件夹也有512字节。

回复

在线用户

正浏览此版面之用户: Google [Bot] 和 0 访客