LINUX.ORG.RU
решено ФорумAdmin

Скрипт бекапа на bash

 , ,


0

2

Привет, ЛОР.
Пишу скрипт бекапа для виртуальных машин, возникла проблема. В переменной $CFG и $VDI пути разбираются на 2 строки, но если выполнить команду, то путь нормальный.
пример

cp: не удалось выполнить stat для «/home/user/VirtualBox»: Нет такого файла или каталога
cp: не удалось выполнить stat для «VMs/linux/linux.vbox»: Нет такого файла или каталога
 
#!/bin/bash
BackD=/home/user/tester
VMs=`VBoxManage list runningvms | awk '{FS=" "}{print $1}' | sed s/\"//g`
for VM in $VMs
do
	echo $VM
	mkdir $BackD/$VM/
	CFG=`VBoxManage showvminfo $VM --machinereadable | grep CfgFile | sed -r 's/^[^=]+//'| sed -r 's/^[^"]+//'| sed s/\"//g | sed 's/\ /\\ /g'`
	echo "Copy $CFG ==> $BackD/$VM"
	cp $CFG $BackD/$VM/
	
	VDIS=`VBoxManage showvminfo $VM --machinereadable | grep .vdi | sed -r 's/^[^=]+//'| sed -r 's/^[^"]+//'| sed s/\"//g | sed 's/\ /\\ /g'`
	echo "Make snapshot of $VM"
	VBoxManage snapshot $VM take autobackup

	for VDI in $VDIS
	do
		echo "Copy $VDI>$BackD/$VM"
		cp $VDI $BackD/$VM/
	done

	echo "Delete snapshot of $VM"
	VBoxManage snapshot $VM delete autobackup

done

Прошу подсказать, что я делаю не так

читай документацию к башу про экранирование аргументов с целью корректной обработки пробелов в именах файлов.
cp «$VDI» «$BackD/$VM/»

bl ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.