问题描述
Linux 系统我们一般通过du -sh 命令查看文件大小,遇到这么一个情况,同一个文件,通过两种方式查看大小不一样,如下
[root@VM-80-27-centos ~]# du -sh /data/test1 # 直接du这个目录
659M /data/test1
[root@VM-80-27-centos ~]#
[root@VM-80-27-centos ~]# du -sh /data/* | grep test1 # du 这个文件上层
4.0K /data/test1
排查过程
1、查看这个目录下的文件大小
[root@VM-80-27-centos ~]# du -sh /data/test1/*
0 /data/test1/1
0 /data/test1/2
659M /data/test1/testfile1
[root@VM-80-27-centos ~]#
很明显,有内容,不止 4.0K, /data/test1/testfile1 这一个文件就有 659M
2、使用stat命令查看文件,显示 Links: 2,说明存在硬连接
[root@VM-80-27-centos ~]# stat /data/test1/testfile1
File: ‘/data/test1/testfile1’
Size: 690850711 Blocks: 1349328 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 657894 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-08-25 03:26:13.530107939 +0800
Modify: 2022-08-25 03:26:18.691100790 +0800
Change: 2022-08-25 03:30:45.641836356 +0800
Birth: -
[root@VM-80-27-centos ~]#
3、通过find 查找硬连接
- -inum:根据Inode 查找
[root@VM-80-27-centos ~]# find / -inum 657894
/data/test1/testfile1
/data/test/testfile
4、查看这两个文件确实 Inode 一致
[root@VM-80-27-centos ~]#
[root@VM-80-27-centos ~]# stat /data/test1/testfile1
File: ‘/data/test1/testfile1’
Size: 690850711 Blocks: 1349328 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 657894 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-08-25 03:26:13.530107939 +0800
Modify: 2022-08-25 03:26:18.691100790 +0800
Change: 2022-08-25 03:56:00.063978883 +0800
Birth: -
[root@VM-80-27-centos ~]#
[root@VM-80-27-centos ~]# stat /data/test/testfile
File: ‘/data/test/testfile’
Size: 690850711 Blocks: 1349328 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 657894 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-08-25 03:26:13.530107939 +0800
Modify: 2022-08-25 03:26:18.691100790 +0800
Change: 2022-08-25 03:56:00.063978883 +0800
Birth: -
[root@VM-80-27-centos ~]#
补充
1、软连接和硬链接的区别可参考:https://www.runoob.com/note/29134
2、find命令也可以通过find -samefile 这个参数来查找 硬链接文件
[root@VM-80-27-centos ~]# find /data/ -samefile /data/test1/testfile1
/data/test1/testfile1
/data/test/testfile