文件夾大小和文件夾占用大小


工作中有需求,要對某些數據進行備份,所以羅列了需要備份后檢查的方法,我知道的有四種,按照精確度進行如下排列:

du看占用空間大小 《 du-b文件字節數大小 《 diff對比 《 md5、sha等校驗

測試文件如下:

E:\test>tree /F
│ 1.txt
│ 2.txt
│ 3.txt
│ 4.txt
│ 5.txt
│
├─111.txt
│ 2.txt
│ 3.txt
│ 4.txt
│
├─221.txt
│ 2.txt
│ 3.txt
│ 4.txt
│
├─331.txt
│ 2.txt
│ 3.txt
│ 4.txt
│
└─44
1.txt
2.txt
3.txt
4.txt

每個1-4.txt內文字為1-4,都是一個字符。

5.txt內為55,是2個字符。

現在對以上幾種方法進行對比

1.du看文件夾大小

[root@localhost test]# du -a -h
4.0K    ./1.txt
4.0K    ./5.txt
4.0K    ./33/1.txt
4.0K    ./33/4.txt
4.0K    ./33/3.txt
4.0K    ./33/2.txt
20K     ./33
4.0K    ./44/1.txt
4.0K    ./44/4.txt
4.0K    ./44/3.txt
4.0K    ./44/2.txt
20K     ./44
4.0K    ./22/1.txt
4.0K    ./22/4.txt
4.0K    ./22/3.txt
4.0K    ./22/2.txt
20K     ./22
4.0K    ./4.txt
4.0K    ./3.txt
4.0K    ./2.txt
4.0K    ./11/1.txt
4.0K    ./11/4.txt
4.0K    ./11/3.txt
4.0K    ./11/2.txt
20K     ./11
104K    .

可以得出test文件夾總共占用了104K磁盤空間。

[root@localhost test]# ls -l |grep "^-"|wc -l    #統計當前文件夾下文件的個數,不包含子文件夾里的
5
[root@localhost test]# ls -l |grep "^d"|wc -l    #統計當前文件夾下目錄的個數,不包含子文件夾里的
4
[root@localhost test]# ls -lR|grep "^-"|wc -l    #統計當前文件夾下文件的個數,包括子文件夾里的
2
[root@localhost test]# ls -lR|grep "^d"|wc -l    #統計文件夾下目錄的個數,包括子文件夾里的
4

 可惜我的實際文件只有22字節,所以以上命令是占用的空間大小,ext4默認最小塊為4k,所以一個1字節(1到4096字節)的文件占用空間為4k,4097字節占用空間為8k

不過如果在相同的文件系統中,占用空間應該是一致的,所以這是一種驗證數據一致的方法,只是很嘈。

2.文件字節數大小

2.1 du -b

[root@localhost test]# du -ba
1       ./1.txt
2       ./5.txt
1       ./33/1.txt
1       ./33/4.txt
1       ./33/3.txt
1       ./33/2.txt
4100    ./33
1       ./44/1.txt
1       ./44/4.txt
1       ./44/3.txt
1       ./44/2.txt
4100    ./44
1       ./22/1.txt
1       ./22/4.txt
1       ./22/3.txt
1       ./22/2.txt
4100    ./22
1       ./4.txt
1       ./3.txt
1       ./2.txt
1       ./11/1.txt
1       ./11/4.txt
1       ./11/3.txt
1       ./11/2.txt
4100    ./11
20502   .
[root@localhost test]# du -ba
1       ./1.txt
2       ./5.txt
1       ./33/1.txt
1       ./33/4.txt
1       ./33/3.txt
1       ./33/2.txt
4100    ./33
1       ./44/1.txt
1       ./44/4.txt
1       ./44/3.txt
1       ./44/2.txt
4100    ./44
1       ./22/1.txt
1       ./22/4.txt
1       ./22/3.txt
1       ./22/2.txt
4100    ./22
1       ./4.txt
1       ./3.txt
1       ./2.txt
1       ./11/1.txt
1       ./11/4.txt
1       ./11/3.txt
1       ./11/2.txt
4100    ./11
20502   .

20502=test文件夾(4k)*1 + 4個子文件夾(4k)*4 + 20個文件(1bytes) + 5.txt(2bytes) = 20502字節

 2.2 winscp查看

通過winscp查看文件夾屬性

這里看到的和du -b略有差別

  du -b看到是包含文件夾大小的字節數

  winscp看到是不包含文件夾大小的字節數

我常用winscp查看,因為和windows內的一致,方便在不同OS之間保持一致。其實兩種都OK啦

3.diff查看 

diff -ruNaq ./11 ./22

diff比較也是很痛苦的,凡事一旦量大了,都痛苦。。。。

4.MD5查看

md5sum 1.txt    #單個文件的md5計算
find ./ -type f -print0 | xargs -0 md5sum > ./my.md5  #整個文件夾所有文件的md5計算

md5是我在實際工作中最經常用的校驗方式,絕對保證數據一致,~~哈哈~~~

不過在遇到超大文件夾(TB級別)的時候md5好麻煩。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM