VDI – это формат образов дисков, используемых системой виртуализации VirtualBox. Использование виртуального диска в реальной системе. Таким образом вы можете получить доступ к данным, находящимся на диске виртуальной машины без необходимости еезапускать. Использование образов дисков VDI в Linux сводится к установке пакета и двухэтапному монтированию, после чего содержимое можно использовать точно так же, как и содержимое любой другой файловой системы.

Для подключения виртуального диска в формате VDI используется программа vdfuse, входящая в состав пакета virtualbox-fuse.

Установка пакета

В Debian/Ubuntu пакет устанавливается командой

Если у вас установлена версия VirtualBox от Oracle, может потребоваться установить по зависимостям VirtualBox OpenSource Edition (virtualbox-ose).

Подключение диска

На первом этапе монтируется образ VDI. Это можно сделать следующей командой:

Таким образом мы получим доступ к разделам, которые присутствуют на виртуальном диске. На втором этапе монтируется необходимый раздел:

После этого можно работать с файловой системой на виртуальном разделе.

Параметры командной строки vdfuse

В общем виде формат выглядит так:

Вот какие опции есть у vdfuse:

ОпцияЗначение
-hПомощь
-rМонтировать только для чтения
-tУказать тип образа диска (VDI, VMDK, VHD, или raw). Значение по умолчанию – auto
-fУказать имя файла образа диска
-aРазрешить всем пользователям читать диск
-wРазрешить всем пользователям читать диск и писать на него
-gРаботать как приложение (не в фоновом режиме)
-vВыводить дополнительную информацию
-dВключить режим отладки

Как говориться «лень — двигатель прогресса» поэтому я покажу как можно еще работать с командной строкой bash, стандартно с помощью клавиш перемещения курсора можно перемещаться по списку ранее введенных команд. Если мне была нужна определенная команда из ранее введенных — „стрелка вверх“ и до тех пор пока нужная команда не появиться в терминале далее корректировка по надобности и выполнения ее.
Оказываеться есть еще один хороший способ — для просмотра списка ранее введенных команд в bash — имеется команда history. По умолчанию она выводит список команд хранящийся в истории.
$ history
1 sudo route del -net
2 cat /etc/resolv.conf
3 htop
......
50 nslookup
51 ping mail.ru
52 ifconfig
......
200 sudo aptitude full-upgrade
......
300 mc


По умолчанию все пишиться в файл ~/.bash_history, а его размер — 500 команд.
Если хотим хранить историю в другом файле, то нужно в .bashrc, задать команду HISTFILE=~/.my_history.
HISTSIZE — определяет число строк, хранящихся в списке истории (в памяти интерпретатора).
HISTFILESIZE — максимальное количество команд хранящихся в файле истории.
Если интересует больше записей, по можно поменять под себя:

$ export HISTSIZE=1000
$ export HISTFILESIZE=1000

При запуске команды history без параметров, выдаеться весь список сохранненных команд, что довольно громоздко, поэтому есть возможность указать
количество выводимых строк (команд):
$ history 20
280 sudo aptitude full-upgrade
281 ps ax | grep conky
282 dig @217.23.122.130 ya.ru mx
......
300 mc

Выдаст 20 последних команд, все команды имеею свой номер, с помощью которого к ней можно обратится.
Если нам надо повторить 282 команду, то просто набираем в терминале:
$ !282
dig @217.23.122.130 ya.ru mx
; <<>> DiG 9.5.0-P2 <<>> @217.23.122.130 ya.ru mx
; (1 server found)
... ......

Сначало показываеться команда соответствующая этому номеру, потом ее выполнения.
Cписок наиболее распространенных команд:

 

  • !! — ссылается на предыдущую команду;
  • !n — ссылается на команду под номером n;
  • !-n — ссылается на команду по номером „текущая минус n“;
  • history -c — очистить историю команд, удалив все записи
  • history -d n — удалить из истории запись под номером n
  • history -a — дописать команды, введенные в текущей сессии bash, в конец файла $HISTFILE

 

Дополнения:
Так же можно сохранить дату и время для каждой команды в истории, для этого в конец .bashrc дописываем:
$ nano .bashrc

export HISTTIMEFORMAT="%h/%d-%H:%M:%S"

и применяем изменений в .bashrc без перезапуска сеанса/системы делаем командой
$ bash
Получаем :
$ history 3

147 Aug/11 — 11:05:28 sudo aptitude install gspca-source
148 Aug/11 — 11:07:23 cd /lib/modules/2.6.32-22-generic/
149 Aug/11 — 11:11:08 modprobe gspca

 

Контролируйте Bash History

HISTCONTROL — представляет из себя список опций, разделенных двоеточиями.

Они контролируют каким образом список команд сохраняется в истории.

ОпцияОписание
ignorespaceне сохранять строки начинающиеся с символа <пробел>
ignoredupsне сохранять строки, совпадающие с последней выполненной командой
ignorebothиспользовать обе опции 'ignorespace' и 'ignoredups'
erasedupsудалять ВСЕ дубликаты команд с истории

Пример :

export HISTCONTROL=ignorespace:erasedups

Добавьте в .bashrc:

export HISTCONTROL="ignoredups"

Или даже так:

export HISTIGNORE="&:ls:[bf]g:exit"

Это заставит bash игнорировать дупликаты, так же как ls, bg, fg и exit, делая историю чище.

Забытая история bash.

Если вы открыли терминал и печатаете там команды, потом открыли еще один, немного его поиспользовали, то новый терминал не «вспомнит» ни одной команды, напечатанной в первом. Вдобавок, при закрытии первого терминала второй перезапишет все команды в истории, введённые в первом. Вдвойне досадно!

Это происходит потому, что история bash сохраняется только когда вы закрываете терминал, а не после каждой команды. Чтобы исправить такое поведение, добавьте в ~/.bashrc строки:

shopt -s histappend
PROMPT_COMMAND=`history -a`

Добавьте следующую строку, если переменная $PROMPT_COMMAND уже была задана :

PROMPT_COMMAND='$PROMPT_COMMAND; history -a'

Это заставит bash дополнять историю вместо того, чтобы перезаписывать её: каждый раз, когда показывается приглашение командной строки, последняя команда добавляется в историю.

 

Увеличиваем Размер Хранимой Истории

Увеличьте HISTSIZE — количество команд, которые необходимо запоминать в списке истории (стандартное значение — 500).

export HISTSIZE=10000

Увеличьте HISTFILESIZE — максимальное количество строк, содержащееся в файле истории (стандартное значение — 500).

export HISTFILESIZE=10000

Одна Команда — Одна Запись в Истории

Сохранять все строки многострочной команды в одной записи списка истории :

shopt -s cmdhist

Изменить Имя Файла с Историй Команд

Используйте HISTFILE для изменения имени файла, в котором сохраняется история команд. Стандартное значение ~/.bash_history.

export HISTFILE=~/.custom_file
 

Чтобы Linux выполнил проверку дисков (fsck) при следующей перезагрузке, нужно создать пустой файл forcefsck в корневом каталоге:

cd /
touch forcefsck
reboot

Тот же эффект даст следующая команда:

shutdown -rF now

Для того, чтобы fsck самостоятельно устраняла ошибки без ручного подтверждения запросов, в загрузочных параметрах требуется включить опцию автоматического подтверждения всех запросов.

CentOS, Fedora, RedHat
В конфигурационном файле /etc/sysconfig/autofsck добавляем значение -y переменной AUTOFSCK_OPT:
AUTOFSCK_OPT="$AUTOFSCK_OPT -y"
Debian, Ubuntu
В конфигурационном файле /etc/default/rcS присвоить переменной FSCKFIX значение yes:
FSCKFIX=yes
FreeBSD
В конфигурационном файле /etc/rc.conf присвоить переменной fsck_y_enable значение YES:
fsck_y_enable="YES"

Основной файл конфигурации cron, /etc/crontab, содержит следующие строки:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Первые четыре строки — это переменные, настраивающие среду окружения, в котором будут работать задачи cron. Значение переменной SHELL сообщает системе о том, какую оболочку использовать (в этом примере будет использована оболочка bash), а переменная PATH определяет пути, используемые для выполнения команд. Результат выполнения задач cron будет выслан по электронной почте пользователю, определённому в переменной MAILTO. Если в качестве значения переменной MAILTO задана пустая строка (MAILTO=""), электронные письма отправляться не будут. Переменная HOME задаёт домашний каталог, используемый при выполнения команд или сценариев.

Каждая строка в файле /etc/crontab имеет следующий формат:

minute   hour   day   month   dayofweek   command
  • minute — любое целое число от 0 до 59
  • hour — любое целое от 0 до 23
  • day — любое целое от 1 до 31 (день должен быть корректным, если указан месяц)
  • month — любое целое от 1 до 12 (или короткое название месяца, например: jan, feb и так далее)
  • dayofweek — любое целое от 0 до 7, где 0 или 7 означает Воскресенье (или короткое название дня недели, например: sun, mon и так далее)
  • command — команда, которая должны быть выполнена. Командой может быть как простая команда, например, ls /proc >> /tmp/proc, или команда запуска написанного вами специального сценария.

Для любых указанных выше параметров можно использовать звездочку (*), что означает все допустимые значения. Например, если поставить звёздочку в значении месяца, команда будет выполняться каждый месяц во время, указанное другими параметрами.

Дефис (-) между целыми числами обозначает диапазон чисел. Например, 1-4 означает целые числа 1, 2, 3 и 4.

Список значений, разделенных запятыми (,), обозначает перечень. Например, перечисление 3, 4, 6, 8 означает четыре указанных целых числа.

Косая черта (/) используется для определения шага значений. Целочисленное значение может быть пропущено в диапазоне, если после диапазона указать /<целое>. Например, значение минут 0-59/2, определяет, что будет пропущена каждая вторая минута. В качестве шага значений также может быть указана звёздочка. Например, значение месяца */3 определяет, что будет пропущен каждый третий месяц.

Любые строки, начинающиеся с символа решетки (#), являются комментариями, и не обрабатываются.

ПРИМЕРЫ

*/5 * * * * — запускать команду каждые пять минут
0 */3 * * * — запускать каждые три часа
0 12,13,14 * * * — запускать команду каждый час с 12 до 14

*/1 * * * * /usr/bin/php ~/site.ru/public_html/test.php   -   запуск каждую минуту php-скрипта test.php
0 */1 * * * /usr/bin/perl ~/site.ru/public_html/test.pl     -   запуск каждый час perl-скрипта test.pl

КОМАНДА

Необходимо задать путь до скрипта от домашнего каталога
Например: public_html/cgi-bin/script.pl
Cистема сама подставит символ ~/ (эта комбинация заменяет полный путь)
Получится: ~/public_html/cgi-bin/script.pl
Если в конце пути поставить символ & (амперсанд), то скрипт будет работать в фоновом режиме.
Установка этого символа необязательна.

Монтироание папки по ssh.

SSHFS (Secure SHell FileSystem) это файловая система для Linux (и других операционных систем, для которых существует реализация FUSE (Filesystem in Userspace), например Mac OS X), используемая для удаленного управления файлами по протоколу SSH (точнее, его расширению SFTP) таким образом, как будто они находятся на локальном компьютере.

Таким образом, если у нас есть доступ по ssh на сервер или на какой-либо компьютер, мы можем легко примонтировать любую папку удаленного компьютера. Чтобы это сделать нужно установить sshfs

<span class="hljs-built_in">sudo</span> apt-get install sshfs

sshfs работает по ssh, поэтому обязательно наличие действующего соединения

sshfs user@server:/home/server/sites ~/sshfs_folder

Подключение идентично подключению по ssh, указываем пользователя, после собачки адрес сервера, и папку, которую будем монтировать,
ну и наконец папку на нашем компьютере, в которую будем монтировать.

Все папка примонтирована.

Чтобы отмонтировать папку, нужно выполнить

fusermount -u ~/sshfs_folder

В последнее время ситуация с носителями, типа CD/DVD дисков, уже не так актуальна как 2-4 года назад, в наше время уже во всю популярны флешки и внешние жесткие диски, но бывают еще случаи, когда нужно скопировать диск, а он либо царапаный, либо записан не корректно и программа для записи выплевывает его. Что в таких случаях может нам предложить любимаяUbuntu?

На первый взгляд ситуация не радужная, но после некоторых проб и экспериментов могу сказать, что не все уж так плохо. Кто, как я, привык к графическому интерфейсу, может воспользоваться программой DVDisaster. Если мало, то можно запустить через Wine, к примеру ISOBuster, который можно скачать с торрент-трекеров, либо воспользоваться весьма неплохой бесплатной программой Non-Stop Copy.

Но мне оказалось и этого мало, и я захотел попробовать истинно линуксные программы. После моей беды с потерянными файлами, я начал уже без особой опаски относиться к Терминалу. Хотя я до сих пор не могу понять, как можно скажем кодировать видео из одного формата в другой, при этом создавать меню для DVD с фоном и фоновой музыкой и все это делать в консоли. Это ж сколько нужно команд вбить в Терминале, сколько всяких путей прописать, названий файлов и т.д. По мне такие вещи удобней делать исключительно с GUI интерфейсом, но опять таки, это сугубо мое мнение. Но вот что касается восстановления файлов, создания образов, копирования нечитаемых DVD дисков, то тут Терминал может оказаться как нельзя кстати и не такой уж он и страшный. Итак идем дальше.

dd

Программа dd. Очень старая и очень популярная среди линуксоидов программа. При помощии dd создают образы жестких дисков, флешек и других накопителей, создают образ системы и т.д.  Она поблочно копирует файлы из одного места в другое. Чтобы скопировать «битый» DVD при помощи этой программы, выполним следующее:

dd if=/dev/cdrom of=image.iso conv=noerror

dev/cdrom — это ваш DVD привод

image.iso — образ копируемого DVD/CD диска

conv=noerror — параметр, который указывает, что нужно копировать, игнорируя ошибки

Это простейший пример, который показывает как можно использовать программу dd. При желании можно найти массу информации о данной программе: настройки, параметры и прочее.

Далее идет тяжелая артиллерия.  Опытные пользователи говорят, что «битые» диски лучше всего копировать программами gddrescue (в Терминале пишем ddrescue) и dd_rescue. Несмотря на схожесть названий, это совершенно разные программы. Установить эти программы можно из Центра приложений Убунту. И добавлю от себя — gddrescue лучше чем dd_rescue. Итак идем далее.

gddrescue

Установим ddrescue. Установить можно из Центра приложений, либо командой:

sudo apt-get install gddrescue

  • gddrescue копирует информацию из одного источника (винчестер, CD-ROM и т.д.) в другой, пытаясь восстановить данные если есть ошибки чтения.
  • gddrescue не затирает выходной файл, если это не запрошено, поэтому при каждом запуске для одного и того же выходного файла делаются попытки заполнить пробелы.
  • gddrescue работает абсолютно в автоматическом режиме.
  • Если ведется журнал работы, то информация восстанавливается еще эффективее, потому что считываются лишь нужные блоки. Более того, восстановление можно прекратить когда угодно вам, а потом продолжить.
  • Журнал все время сохраняется на диск. Поэтому, если копирование прервано, то его можно продолжить с минимальным повторным копированием.

Как использовать данную программу? Программа консольная, поэтому работать с ней будем в Терминале, собственно как и со всеми программами, которые описаны в этом обзоре.

Схема использования: ddrescue [options] infile outfile [logfile]

Параметры:

— h,--help показать справку
— V,--version показать номер версии
— b,--block-size=bytes аппаратный размер блока на исходном устройстве [512]
— B,--binary-prefixes использовать степени двойки в числах [по умолчанию SI]
— c,--cluster-size=blocks число аппаратных блоков для разового копирования [128]
— C,--complete-only не считывать данные дальше, чем указано в лог-файле
— e,--max-errors=n максимально разрешенное количество областей с ошибками
— i,--input-position=pos начальная позиция в исходном файле [0]
— n,--no-split не стараться дробить области с ошибками
— o,--output-position=pos начальная позиция в целевом файле [ipos]
— q,--quiet минимум подробностей
— r,--max-retries=n выйти после этого числа повторов чтения(-1=до бесконечн.)[0]
— s,--max-size=bytes максимальный объём данных для копирования
— t,--truncate очистить целевой файл перед записью
— v,--verbose максимум подробностей

Полный список параметров можно посмотреть при помощи команды:

ddrescue -h

Пример использования:

ddrescue -v /dev/cdrom Recovered.iso ddrescue.log

В данном примере будет копироваться диск в приводе, с созданием образа Recovered.iso и лога ddrescue.log с применением параметра -v (максимум подробностей)

dd_rescue

Далее идет программа dd_rescue. Установить также можно через Центр приложений Убунту, либо в Терминале:

Схема использования: dd_rescue [options] infile outfile

Параметры:

— s ipos              начальная позиция в исходном файле (default=0),
— S opos            начальная позиция в целевом файле (def=ipos),
— b softbs          размер блока для копирования (def=65536),
— B hardbs         размер блока во время возникновении ошибок копирования (def=512),
— e maxerr         окончание работы после установленного количества ошибок (def=0=infinite),
— m maxxfer       максимальный объём копируемых данных (def=0=inf),
— y syncfrq         частота запросов fsync к целевому файлу (def=512*softbs),
— l logfile            имя файла для регистрации ошибок и вывода сводки (def=»»),
— o bbfile           имя файла для регистрации номеров сбойных блоков (def=»»),
— r                    копирование данных в обратном направлении (def=forward),
— t                    очищать целевой файл перед записью (def=no),
— d/D                использовать O_DIRECT для ввода/вывода (def=no),
— w                  окончание работы во время возникновения ошибок (def=no),
— a                   запись файла с пустотами (def=no),
— A                   всегда записывать блоки, заполняя нулями сбойные (def=no),
— i                    интерактивный режим: спрашивать перед перезаписью данных (def=no),
— f                    принудительный режим: пропустить ряд проверок (def=no),
— p                   сохранять права доступа и владельца файла (def=no),
— q                   минимум подробностей,
— v                   максимум подробностей,
— V                  вывести номер версии и выйти,
— h                  вывести данную справку и выйти.

Пример использования:

dd_rescue -v /dev/cdrom Recovered.iso

recoverdm

Установить recoverdm можно как и все предыдущие, в данном обзоре, программы из Центра приложений, либо командой:

sudo apt-get install recoverdm

Схема использования: recoverdm -t type -i file/devicein -o fileout [-l list] [-n retries] [-s speed]

Параметры:

— t    тип данных
— i    откуда копируем
— o   восстановленный файл
— l    этот файл будет содержать смещение из плохих(!) блоков
— n   количество попыток чтения прежде чем перейдет к следующему сектору
— s   скорость чтения приводов CD/DVD (по умолчанию 1х)
— r   количество повторов при чтении с RAW

Пример использования:

recoverdm -i /dev/cdrom -o Recovered.iso

Ну вот в принципе и заканчивается данный обзор. Могу лишь написать, что по умолчанию программа recoverdm очень медленно копировала битый диск, в отличии от gddrescue и ddrescue. Я остановил свой на выбор именно на них.