约 10695 字

约 53 分钟

#Bash 的 hardlink 命令

hardlink [OPTIONS] [FILE...]

功能

通过硬链接合并多个相同的文件以节省磁盘空间。

类型

可执行文件(/usr/bin/hardlink),属于 util-linux。

参数

  • OPTIONS 选项:
    • -c, --content - 仅根据文件内容判断是否相同,忽略文件属性;等价于 -pot
    • -b, --io-size SIZE - IO 缓冲区大小
    • -d, --respect-dir - 仅链接相同目录里的重复文件
    • -f, --respect-name - 仅链接同名的重复文件
    • -i, --include REGEXP - 仅扫描 REGEXP 匹配的文件
    • -m, --maximize - 合并时保留链接数最多的文件
    • -M, --minimize - 合并时保留链接数最少的文件
    • -n, --dry-run - 仅显示将要执行的操作,而不实际执行
    • -o, --ignore-owner - 允许链接所有者不同的重复文件
    • -O, --keep-oldest - 合并时保留最旧(mtime 最早)的文件
    • -p, --ignore-mode - 允许链接权限不同的重复文件
    • -q, --quiet - 不打印消息
    • -r, --cache-size SIZE - 校验和缓存大小
    • -s, --minimum-size SIZE - 不链接小于 SIZE 的文件
    • -S, --maximum-size SIZE - 不链接大于 SIZE 的文件
    • -t, --ignore-time - 允许链接时间不同的重复文件
    • -v, --verbose - 打印详细信息
    • -x, --exclude REGEXP - 排除 REGEXP 匹配的文件
    • -X, --respect-xattrs - 仅链接扩展属性也相同的重复文件
    • -y, --method NAME - 设置比较内容的方法,支持:sha256(默认), sha1, crc32c 和 memcmp
    • --reflink[=WHEN] - 创建写时复制克隆(引用链接),而非硬链接
    • --skip-reflinks - 忽略引用链接
    • --help - 显示帮助
    • --version - 显示版本

#示例

$ echo Primers 编程伙伴 | tee 1.txt 2.txt       # 同时向两个文件写入相同内容
Primers 编程伙伴
$ ls -i                                         # 查看文件的 inode 号
9851498 1.txt  9851499 2.txt
$ hardlink .                                    # 合并相同文件
Mode:                     real
Method:                   sha256
Files:                    4
Linked:                   1 files
Compared:                 0 xattrs
Compared:                 1 files
Saved:                    21 B
Duration:                 0.000573 seconds
$ ls -i                                         # 查看文件的 inode 号
9851498 1.txt  9851498 2.txt

#推荐阅读

#手册

更新: 2026/1/18

作者: PlanC

创建: 2026/1/16