这里只考虑磁盘空间的问题, 也可能是权限的各种问题

有时候创建文件会提示:

No space left on device


没空空间可用了, 这时就可以去查看磁盘的使用情况:

df -h

可能出现 

1. 磁盘的使用率100%  

2. 磁盘的使用率不到100%   df -i 查看inode  inode的使用率是100%


如果是情况1 :

可以去查找目录下的大文件进行删除或者其他处理   

find /DIR  -type d -size +10G

find /DIR  -type f -size +1G

可能是:磁盘自然增长,程序出现问题产生core文件或者日志打满了。

可以的解决方案;

删除大文件

加磁盘,划分区


如果是情况2:

可以查看inode较多的目录

find */ ! -type l | cut -d / -f 1 | uniq -c

逐层查找  最后定位

一般是cache里面的碎文件。


解决方案:

增加inode

dd if=/dev/zero of=disk.img bs=1M counts=1024

mkfs.ext4 -N 5000000 -b 1024 -I 128 disk.img

mount -o loop disk.img  /mnt/disk

删除这些文件

    在网上找到了一种巧妙的快速删除方法,原理很简单,使用rsync同步一个空目录即可。对于万级文件的目录基本是秒删,回车就OK。

    步骤如下:

    1、建立一个空目录

        mkdir -p /tmp/rsync_blank

    2、确立需要清空的目标目录

        /data/ooxx

    3、使用rsync同步删除(注意目录后面的“/”),整体效率会快一个数量级的样子。

        rsync --delete-before -a -H -v --progress --stats /tmp/rsync_blank/ /data/ooxx/

    选项说明:

    –delete-before 接收者在传输之前进行删除操作

    –progress 在传输时显示传输过程

    -a 归档模式,表示以递归方式传输文件,并保持所有文件属性

    -H 保持硬连接的文件

    -v 详细输出模式

    -stats 给出某些文件的传输状态

    一般我们不需要显示进度,使用以下命令即可

        rsync --delete-before -a -H /tmp/rsync_blank/ /data/ooxx/

  这样我们要删除的 cache目录就会被清空了。


\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


 快速复制大量小文件方法 

  1,在需要对大量小文件进行移动或复制时,用cp、mv都会显得很没有效率,可以用tar先压缩再解压缩的方式。 

  2,在网络环境中传输时,可以再结合nc命令,通过管道和tcp端口进行传输。 

  nc和tar可以用来快速的在两台机器之间传输文件和目录,比ftp和scp要来得简单的多。 

  由于nc是一个超轻量的命令,所以一般busybox都会集成它。当一个linux终端,比如linux pda, 

  通过usblan的方式连接到另一台linux主机的时候,这样的嵌入式终端上一般不会集成ftp server, ssh server 

  这样比较笨重的服务,这个时候, nc可能成为唯一的上传手段。 

  比如将机器A上的mytest目录上传到到机器 B(192.168.0.11)上,只需要: 

  在机器B上,用nc来监听一个端口,随便就好,只要不被占用;并且将收到的数据用tar展开。-l代表监听模式。 

  #nc -l 4444 |tar -C /tmp/dir -zxf - 

  然后,在A上通过nc和 tar发送test目录。使用一致的4444的端口。 

  #tar -zcvf  -  test|nc 192.168.0.11 4444