У меня chrooted, и у меня заканчивается место на диске, поэтому я снова подключился к главному диску, на котором много места, но я не могу перенаправить выведенные данные на мой пустой диск
[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
Как правильно вывести дамп в /mnt/maindrv/
?
Похоже, вы что-то здесь упустили:
for i in `ls *.rrd`; do rrdtool dump $i > '/mnt/maindrv/'.$i.'xml'; done
На некоторых языках .
используется для объединения переменных, но в Bash это буквальная точка. Так, например, если у вас есть файл hello.rrd
, то команда поместит дамп в:
/mnt/maindrv/.hello.rrd.xml
Поскольку файл начинается с точки, ls /mnt/maindrv/
не буду его перечислять, даже если он есть.
Другое дело, вы не должны зацикливаться ls *.rrd
но просто *.rrd
. Это не связано с вашим вопросом, это плохая практика.
Это должно сделать то, что вам нужно, чище и лучше:
for i in *.rrd; do rrdtool dump "$i" > "/mnt/maindrv/$i.xml"; done