今天收到反馈,某些文件同步失败,查看日志发现:

rsync: recv_generator: mkdir "/app/data/ckl/ckli2780581" failed: Too many links (31)
*** Skipping any contents from this failed directory ***
  1. 进入相关目录建立文件:

cd /app/data/ckl/
mkdir vd

报错一样:

failed: Too many links

2.查看目录

ls /app/data/ckl | wc -l
31998

目录个数竟然这么多,有可能是文件系统的限制

3.查看文件系统

 df -lhT
Filesystem                       Type  Size  Used Avail Use% Mounted on
/dev/sda1                        ext3  7.9G  4.9G  2.7G  65% /

果然是ext3


大概如下:

nclude/linux/ext2_fs.h:#define EXT2_LINK_MAX           32000
include/linux/ext3_fs.h:#define EXT3_LINK_MAX           32000

为什么说31998个呢?这是因为mkdir创建一个目录时,目录下默认就会创建两个子目录的,一个是.目录(代表当前目录),另一个是..目录(代表上级目录)。这两个子目录是删除不掉的,“ rm . ” 会得到“rm: cannot remove `.' or `..'”的提示。所以32000-2=31998。

解决:

ext4 对目录个数没有限制

挂载一块新盘,将目录建立连接

脚本如下:

#!/bin/bash
CUR_DAY=`date +%Y%m%d`
SRC_DIR=/app
DST_DIR=/data

fdisk /dev/vdc <