我正在尝试为图像上传创建一个目录结构,如下所述,结果应如下所示:
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文件夹)?
更新(托马斯·奥罗斯科):
[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 /]#
正如@Ricardo Cárdenes 所说 - 异常的原因 - 文件系统中索引节点数量的限制。在另一个具有足够索引节点的挂载点(在我的例子中为/home) - 这个脚本运行良好。
正如@Krumelur所说,对我来说合适的解决方案 - 根据需要创建目录。
谢谢大家!