1

До сих пор я каждый раз сохранял и загружал машину из моментального снимка, но мой SSD-диск сейчас заполнен, и я ничего не могу сделать. Папка со снимками использует 70 ГБ, и сейчас я хочу удалить все снимки и каждый раз выключать компьютер, а затем включать без снимков. Есть ли способ загрузить состояние последнего снимка в компьютер и удалить все снимки?

2 ответа2

2

Возможность удаления всех моментальных снимков была запрошена на улучшении Oracle и системе отслеживания ошибок, а также на форумах Virtualbox. К сожалению, AFAIK, это все еще невозможно сделать; вне коробки.

Однако есть решение!

В виде исходного кода на Python и XAML: графический интерфейс удаления снимков VirtualBox.

Вам нужно будет скомпилировать это в файл .exe чтобы запустить его. Информацию о том, как это сделать, можно найти в Stack Overflow: Компиляция проекта IronPython WPF для exe.

Автор инструмента считает, что он также будет совместим с хостами OS X и Linux.

0

Этот ответ работает, но он немного более груб, чем альтернатива графическому интерфейсу (который 5 лет спустя все еще не был перенесен на работу ни на что, кроме Windows). Это будет работать на BSD, Linux, Mac, но не на Windows (без Cygwin). ** Беги на свой страх и риск **

DEBUG=true; PROMPT=true

vbox_delete_all_snapshots() { 
  vboxmanage snapshot "$1" list | 
    tac |perl -lane 'print $1 if /UUID: ([a-z0-9-]+)/' |
    xargs ${PROMPT:+-p} -n1 ${DEBUG:+echo} vboxmanage snapshot "$1" delete
  if $DEBUG && [ $? = 0 ] ; then
    echo "The above commands were NOT run. Unset DEBUG (and PROMPT if you feel lucky) to do so."
  fi
}
read -p"Enter the name of the VM (or its ID): " vmname; vbox_delete_all_snapshots "$vmname"

Предостережения

  • Linux будет жаловаться, если нет снимков. Если вы используете Linux/GNU, вы можете добавить опцию -r к команде xargs
  • Чтобы на самом деле выполнить команду execute, выполните unset DEBUG . Для запуска команд без запроса каждой из них выполните unset PROMPT .
  • Это должно обрабатывать обычное "дерево" снимков, но я протестировал его только в случае, когда у каждого снимка было ровно 0 или 1 дочерний элемент.

Пример вывода

Deleting snapshot 'B5' (a02cb9e8-c5be-425d-9bcd-806d72e5a083)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Deleting snapshot 'B4' (422b29b8-cf79-4c92-a415-a08c1d3dd5a0)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Deleting snapshot 'B3' (c1ed469f-ffc3-4cb8-81fe-bbf6581e5858)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Deleting snapshot 'b2' (c0fa9d90-6293-46e5-bcd7-25f2b36f95c4)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Deleting snapshot 'B1' (894147cb-2cc0-48e3-86c7-bec156da762a)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Deleting snapshot 'test' (44a69565-1354-4b98-a2cf-64fd7caa6c56)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .