概念

软链接与硬链接的区别

文件系统中的文件基本上是指向一个 inode 的链接。

image-center

硬链接

创建硬链接,就是创建另一个文件,指向同一个 inode。是非常底层的概念。

  • 只可以链接到文件。
  • 硬链接没有原始文件和链接的概念,大家都一样。
  • 不管哪个硬链接对文件所做的修改,其它硬链接都会看到。
  • 删除、重命名、移动一个硬链接,均不会影响其它硬链接。
  • 删除硬链接时,只会该指向该 inode 的链接删除,当所有指向该 inode 的链接均被删除时,inode 才会被删除,即文件真正被删除。

  • 硬链接只在 同一文件系统内 有效,无法链接到其它文件系统中的文件。

软链接

创建软链接,是指向文件系统中的另一个 路径(文件名),即快捷方式。每次访问软链接时,都会解析该文件的路径、文件名。

  • 可以链接到文件、目录。
  • 要区分原始文件与软链接的概念。
  • 如果移动原始文件,软链接会失效。
  • 如果用新文件覆盖原始文件,只要保持文件名不变,软链接就有效。
  • 如果删除原始文件,软链接即失效,不可用。
  • 软链接可以跨越文件系统,如可以链接到 NFS 上的文件,因为它们指向的只是另一个文件的文件名。

统计

统计 /var/log 目录中的文件总数

$ sudo ls -lR /var/log/ | grep "^-" | wc -l
53

-R :列出子目录的内容

操作

将特定目录中大于 100k 的文件移动到 /tmp 目录

#!/bin/bash
thrshd=102400
from='/home/neo/codes/'
to='/tmp/'

for file in `ls ${from}`
do
  if [ -f ${from}${file} ]
  then
    sz=`ls -l ${from}${file} | awk '{print $5}'`
    if [ ${sz} -gt ${thrshd} ]; then mv ${from}${file} ${to}; fi
  fi
done

查看

如何查看二进制文件 file 的内容

$ hexdump -C file

-C 以十六进制和 ASCII 码显示