這裡隻考慮磁盤空間的問題, 也可能是權限的各種問題
有時候建立檔案會提示:
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