分页: 1 / 1
OpenBSD如何统计目录中所有文件实际总大小(单位用字节)?
发表于 : 2013-03-03 22:04
由 f5b
/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搞多一空白行干嘛呢?
回复: OpenBSD如何统计目录中所有文件实际总大小(单位用字节)?
发表于 : 2013-03-04 9:54
由 f5b
已经得到回答,得自己弄个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可能不一致。
回复: OpenBSD如何统计目录中所有文件实际总大小(单位用字节)?
发表于 : 2013-03-04 12:17
由 acheng
试过du -s $dir?
如果你说用对比字节数来判断文件同步是否完成,我觉得这样不太准确。不同文件系统的block/fragment的大小不同,同一个文件所占的字节数可能也不相同。
回复: OpenBSD如何统计目录中所有文件实际总大小(单位用字节)?
发表于 : 2013-03-04 13:20
由 f5b
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下面的原始文件校对。
Re: OpenBSD如何统计目录中所有文件实际总大小(单位用字节)?
发表于 : 2013-03-09 11:15
由 acheng
du -s出来的单位是“block”,应该再乘以512。但如前所示,它显示的是占用磁盘空间的大小,而非文件本身的大小。
想要验证几千个文件是否和原来一致,恐怕没有很快捷的方式。尤其是你要把本地文件和远程主机上的文件做对比。可以在同步时使用rsync的-c参数,让rsync检查对比文件的校验值。而且对于package的话,pkg_add在安装是也会检查里面的每个文件的校验值,如果不匹配的话应该是不会安装的。
Re: OpenBSD如何统计目录中所有文件实际总大小(单位用字节)?
发表于 : 2013-03-09 11:26
由 f5b
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字节。