将 rrd 传输到新目录

将 rrd 传输到新目录

我已 chroot 并且驱动器空间不足,因此我重新挂载到主驱动器,该驱动器有足够的空间,但似乎无法将输出的数据重定向到我的空驱动器

[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/

答案1

看来你忽略了一些东西:

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

相关内容