доб[234]
Если в корневом каталоге /dev/независимо находится файлfoo
:
debugfs -f <(echo cat /foo) /dev/whatever | tail -n +2 > /restore/file
общий подход
Общий подход заключается в создании ВМ с двумя дисками (с файлами в необработанном режиме ), один из которых является образом (, переданным ВМ для чтения -только ), а другой — для восстановление файла (, если вы не можете использовать сеть для его передачи ).
Вы должны быть в состоянии загрузиться с образа (, если нет :, создать виртуальную машину с тремя дисками, один для загрузки )и, таким образом, получить доступ к файловой системе.
Поскольку вы не можете монтировать, вам нужно записать данные в какой-либо форме, которая распознается без файловой системы, например.
tar -cf /dev/vdc /etc/passwd
На хосте вы можете просто прочитать файл изображения:
tar -xf imagefile.img
tar
распознает конец архива и игнорирует остальную часть файла.
Если вы хотите передать пробел внутри параметра, вам нужно посмотреть, как кавычки и двойные -кавычки обрабатываются сценарием perl cssh
. Простой способ сделать это — использовать встроенную опцию -в отладке. На уровне 2 он покажет вам запущенную команду xterm.Он довольно сложный и включает в себя встроенный perl-скрипт, заключенный в одинарные кавычки. Внутри скрипта он устанавливает переменную в строку, заключенную в двойные кавычки. Поэтому, когда вы указываете параметр, например -o "-o 'x y'"
, выполняется:
xterm... -e perl -e '... my $command="ssh -o 'x y'";... '
Это разбивает perl-скрипт на 2 слова, поэтому работать не будет.
Если вы используете двойные кавычки в -o "-o \"x y\""
, вы получите
... my $command="ssh -o "x y"";
Это нарушает присваивание perl, так как x y
находится за пределами строки.
Наконец, используйте одинарные кавычки и экранированные двойные кавычки, -o '-o \"x y\"'
, и это должно работать:
... my $command="ssh -o \"x y\"";