canaliza rrd para um novo diretório

1

Eu estou chrooted e ficando sem espaço em disco, então montei de volta para a unidade host que tem bastante espaço, mas não consigo redirecionar os dados enviados para minha unidade vazia

[root@localhost rra]# ls /mnt/maindrv/
cacti-0.8.8b  cacti-0.8.8b.tar.gz  cacti2.tar  cactidb
[root@localhost rra]# for i in 'ls *.rrd'; do rrdtool dump $i > '/mnt/maindrv/'.$i.'xml'; done
[root@localhost rra]# ls /mnt/maindrv/
cacti-0.8.8b  cacti-0.8.8b.tar.gz  cacti2.tar  cactidb
[root@localhost rra]# df -h /mnt/maindrv/
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/centos-home
                       97G  1.5G   96G   2% /mnt/maindrv

Como faço a saída correta do meu despejo para /mnt/maindrv/ ?

    
por bro 29.08.2014 / 22:27

1 resposta

1

Parece que você ignorou algo aqui:

for i in 'ls *.rrd'; do rrdtool dump $i > '/mnt/maindrv/'.$i.'xml'; done

Em alguns idiomas o . é usado para concatenar variáveis, mas no Bash é um ponto literal. Por exemplo, se você tiver um arquivo hello.rrd , o comando colocará o despejo em:

/mnt/maindrv/.hello.rrd.xml

Como o arquivo começa com um ponto, ls /mnt/maindrv/ não o listará, mesmo que esteja lá.

Outra coisa, você não deve percorrer ls *.rrd , mas simplesmente *.rrd . Isso não está relacionado à sua pergunta, mas a uma prática ruim.

Isso deve fazer o que você precisa, mais limpo e melhor:

for i in *.rrd; do rrdtool dump "$i" > "/mnt/maindrv/$i.xml"; done
    
por 27.12.2014 / 12:28