Linux脚本创建目录结构

时间:2014-02-16 09:57:56

标签: python linux shell

我正在尝试为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 /]#

1 个答案:

答案 0 :(得分:0)

正如@RicardoCárdenes所说 - 异常的原因 - 限制文件系统中的inode数量。在另一个具有足够inode的挂载点(在我的情况下是/ home) - 这个脚本运行良好。

适合我的解决方案,正如@Krumelur所说 - 根据需要创建目录。

感谢大家!