工作中有需求,要對某些數據進行備份,所以羅列了需要備份后檢查的方法,我知道的有四種,按照精確度進行如下排列:
du看占用空間大小 《 du-b文件字節數大小 《 diff對比 《 md5、sha等校驗
測試文件如下:
E:\test>tree /F │ 1.txt │ 2.txt │ 3.txt │ 4.txt │ 5.txt │ ├─11 │ 1.txt │ 2.txt │ 3.txt │ 4.txt │ ├─22 │ 1.txt │ 2.txt │ 3.txt │ 4.txt │ ├─33 │ 1.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好麻煩。。。
