我正在尝试为here描述的图片上传创建目录结构,结果应如下所示:
upload/
00/00/00/
...
00/00/ff/
...
00/ff/ff/
...
ff/ff/ff/
所以我写了平面python脚本:
ROOT = '/var/upload'
for a in xrange(0, 256):
for b in xrange(0, 256):
for c in xrange(0, 256):
os.makedirs(os.path.join(ROOT, format(a, '02x'), format(b, '02x'), format(c, '02x')))
得到了:
...
os.makedirs(os.path.join(ROOT, format(a, '02x'), format(b, '02x'), format(c, '02x')))
File "/usr/lib64/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 28] No space left on device: '/var/upload/2e/04/cd'
我尝试了其他位置 - '/ opt / upload',结果相同。但是有足够的空间,没有配额:
[root@sky /]# df
/dev/mapper/rfremix_sky-root 51475068 23006628 25830616 48% /
devtmpfs 2016520 0 2016520 0% /dev
tmpfs 2024048 2064 2021984 1% /dev/shm
tmpfs 2024048 500 2023548 1% /run
tmpfs 2024048 0 2024048 0% /sys/fs/cgroup
tmpfs 2024048 32 2024016 1% /tmp
/dev/sda1 487652 90139 367817 20% /boot
/dev/mapper/rfremix_sky-home 424460680 47830948 355045248 12% /home
[root@sky /]# repquota /
repquota: Mountpoint (or device) / not found or has no quota enabled.
repquota: Not all specified mountpoints are using quota.
[root@sky /]#
系统:
[root@sky /]# uname -a
Linux sky.dep1 3.12.10-300.fc20.x86_64 #1 SMP Thu Feb 6 22:11:48 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@sky /]# python --version
Python 2.7.5
[root@sky /]#
所以,问题:我做错了什么?
或者也许在bash上有其他解决方案,perl&等,具有更好的性能(256 ** 3 = 16.777.216文件夹)?
更新(对于Thomas Orozco):
[root@sky /]# df -i
Файловая система Iнодов IИспользовано IСвободно IИспользовано% Cмонтировано в
/dev/mapper/rfremix_sky-root 3276800 3276800 0 100% /
devtmpfs 504130 422 503708 1% /dev
tmpfs 506012 13 505999 1% /dev/shm
tmpfs 506012 504 505508 1% /run
tmpfs 506012 13 505999 1% /sys/fs/cgroup
tmpfs 506012 41 505971 1% /tmp
/dev/sdb3 164849116 96453 164752663 1% /mnt/win
/dev/sda1 128016 380 127636 1% /boot
/dev/mapper/rfremix_sky-home 26968064 218284 26749780 1% /home
tmpfs 506012 4364 501648 1% /home/chip/.chrome/ramdisk
[root@sky /]#
答案 0 :(得分:0)
正如@RicardoCárdenes所说 - 异常的原因 - 限制文件系统中的inode数量。在另一个具有足够inode的挂载点(在我的情况下是/ home) - 这个脚本运行良好。
适合我的解决方案,正如@Krumelur所说 - 根据需要创建目录。
感谢大家!