这里只考虑磁盘空间的问题, 也可能是权限的各种问题
有时候创建文件会提示:
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
憬薇 51CTO博客,原文链接:http://blog.51cto.com/welcomeweb/1707197