IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    当du遇上硬链接

    夜行人发表于 2016-03-08 03:45:59
    love 0

    同一个目录,大小前后不一致

    昨天重新看了zimbra的备份,发现源已经降到200G了,但同步后的目标目录还有300G,百思不得其解。用du看目录大小,也遭遇了很奇怪的现象,来看下面的命令

    # 下面的命令得出的大小是700M
    du -sh 106
    # 下面的命令会先后(注意这个先后)匹配出100、106、108,得出106是300M
    du -sh 10*

    解决过程

    按照惯例,如此奇葩的问题,当然要抛出来给大家看看,同事的处理过程

    # 当我们调整下目录的顺序
    # 得出的大小和上面单独检查106的大小是一样的
    du -sh 106 100 108

    strace跟踪,发现有SYMLINK字样,0代表是具有相同链接的文件只统计一次,这里也解释了为什么把目录的顺序调整下,大小就不一样,因为前面统计了,后面的就不统计

    AT_SYMLINK_NOFOLLOW
    newfstatat(6, "4540-21500.msg", {st_mode=S_IFREG|0640, st_size=2590, ...}, AT_SYMLINK_NOFOLLOW) = 0

    查找链接

    首先是软链接

    # 可惜没有找到
    find . -type l

    那么就是硬链接啦,没有什么好办法,只好统计下具有相同inode节点文件个数

    ls -liR | awk '{print $1}' | sort | uniq -c | sort -k1r

    解决rsync后目录变大的问题

    其实zimbra官方提供的备份脚本,rsync带有HK参数,其中H就是处理硬链接,而我们只用了av,解决办法就是加上HK

    rsync -avHK


沪ICP备19023445号-2号
友情链接