Упражнение 22: Файловая система: перемещение данных, tar, dd
Теперь пришло время самостоятельно посмотреть, что всё в Linux — это просто файл.
Это упражнение довольно большое, но посмотрим, чему вы научились. После его выполнения просмотрите в man все намеренно не объяснённые параметры программы и попытайтесь сами объяснить назначение каждой команды.
Сейчас вы узнаете, как манипулировать данными.
tar -czvf root.tgz /opt/root/
— создать архив файлов и папок из каталога /opt/root
с именем root.tgz
.
tar -tzvf root.tgz
— вывести список файлов и каталогов в архиве root.tgz
, чтобы убедиться, что они были правильно заархивированы.
cd /tmp
— перейти в каталог /tmp
.
tar -zxvf ~/root.tgz
— извлечь файлы и папки из архива root.tgz
в текущий каталог.
ls -al
— вывести подробную информацию о файлах и папках в текущем каталоге.
dd_if=$(mount | grep /tmp | cut -d ' ' -f 1) && echo $dd_if
— получить имя устройства, на котором смонтирован каталог /tmp
, и вывести его.
sudo dd if=$dd_if of=~/tmp.img bs=10M
— скопировать содержимое устройства dd_if
в файл tmp.img
.
cd && ls -alh
— вернуться в домашний каталог и вывести подробную информацию о файлах и папках.
sudo losetup /dev/loop1 ~/tmp.img && sudo mount /dev/loop1 /mnt/
— подключить файл tmp.img
к устройству loopback /dev/loop1
и смонтировать его в каталог /mnt
.
ls -al /mnt
— вывести информацию о содержимом каталога /mnt
, который теперь содержит данные из файла tmp.img
.
sudo umount /mnt && sudo losetup -d /dev/loop1
— размонтировать каталог /mnt
и отключить устройство loopback /dev/loop1
.
sudo umount $dd_if && sudo mkfs.ext3 $dd_if
— размонтировать устройство dd_if
и отформатировать его как файловую систему ext3.
new_uuid=$(sudo tune2fs -l $dd_if | awk '/UUID/{print $3}') && echo $new_uuid
— получить новый UUID для устройства dd_if
.
grep '/tmp' /etc/fstab
— найти строку с /tmp
в файле /etc/fstab
.
sed "s/^UUID=.*\/tmp\s\+ext3\s\+defaults\s\+[0-9]\s\+[0-9]\s\?/UUID=$new_uuid \/tmp ext3 defaults 0 2/" /etc/fstab
— заменить старый UUID на новый в строке с /tmp
в /etc/fstab
.
Теперь используйте sudo tune2fs -l
и sudo blkid
для проверки вывода. Если замена UUID в /etc/fstab
выглядит нормально, выполните фактическую замену.
sudo sed -i'.bak' "s/^UUID=.*\/tmp\s\+ext3\s\+defaults\s\+[0-9]\s\+[0-9]\s\?/UUID=$new_uuid \/tmp ext3 defaults 0 2/" /etc/fstab
— выполнить замену UUID в /etc/fstab
, сохранив старую версию файла с расширением .bak
.
sudo mount -a && ls /tmp
— перемонтировать все устройства и вывести содержимое каталога /tmp
.
sudo umount /tmp && pv ~/tmp.img | sudo dd of=$dd_if bs=10M
— размонтировать /tmp
и записать данные из tmp.img
обратно на устройство dd_if
.
new_uuid=$(sudo tune2fs -l $dd_if | awk '/UUID/{print $3}') && echo $new_uuid
— снова получить UUID для dd_if
, чтобы проверить, изменился ли он после записи данных.
sudo sed -i'.bak' "s/^UUID=.*\/tmp\s\+ext3\s\+defaults\s\+[0-9]\s\+[0-9]\s\?/UUID=$new_uuid \/tmp ext3 defaults 0 2/" /etc/fstab
— ещё раз заменить UUID в /etc/fstab
, если он изменился.
sudo mount -a
— перемонтировать все устройства.
rm -v tmp.img
— удалить файл tmp.img
.
Введите y
и нажмите <ENTER>
.
В этом разделе представлен вывод команд, которые выполняются в ходе упражнения. 1024 Jul 3 08:29
drwxrwxrwt 2 root root 1024 Jul 3 08:41 .ICE-unix
drwx------ 2 root root 12288 Jul 3 07:47 lost+found
drwxr-xr-x 3 user1 user1 1024 Jul 5 03:24 opt
-rw-r--r-- 1 root root 489 Jul 3 10:14 sources.list
-r--r----- 1 root root 491 Jul 3 10:21 sudoers
drwxrwxrwt 2 root root 1024 Jul 3 08:41 .X11-unix
user1@vm1:$ sudo umount /mnt && sudo losetup -d /dev/loop1
user1@vm1:$ sudo umount $dd_if && sudo mkfs.ext3 $dd_if
mke2fs 1.41.12 (17-May-2010)
Файловая система label=
Тип ОС: Linux
Размер блока = 1024 (log = 0)
Размер фрагмента = 1024 (log = 0)
Шаг = 0 блоков, ширина полосы = 0 блоков
61752 индексных дескриптора, 246784 блока
12339 блоков (5,00%) зарезервировано для суперпользователя
Первый блок данных = 1
Максимальное количество блоков файловой системы = 67371008
31 группа блоков
8192 блока на группу, 8192 фрагмента на группу
1992 индексных дескрипторов на группу
Суперблоки хранятся в блоках:
8193, 24577, 40961, 57345, 73729, 204801, 221185
Запись таблиц индексных дескрипторов: выполнено Создание журнала (4096 блоков): выполнено Запись суперблоков и учётной информации файловой системы: выполнено
Эта файловая система будет автоматически проверяться каждые 27 монтирований или
180 дней, в зависимости от того, что наступит раньше. Используйте tune2fs -c или -i для переопределения.
user1@vm1:$ new_uuid=$(sudo tune2fs -l $dd_if | awk '/UUID/{print $3}') && echo $new_uuid
f8288adc-3ef9-4a6e-aab2-92624276b8ba
user1@vm1:$ grep '/tmp' /etc/fstab
UUID=011b4530-e4a9-4d13-926b-48d9e33b64bf /tmp ext3 по умолчанию 0 2 user1@vm1:~$ sed "s/^UUID=.*/tmp\s+ext3\s+defaults\s+[0-9]\s+[0-9]\s?/UUID=$new_uuid /tmp ext3 defaults 0 2/" /etc/fstab
proc /proc proc по умолчанию 0 0
UUID=91aacf33-0b35-474c-9c61-311e04b0bed1 / ext3 ошибки = перемонтировать-ro 0 1
UUID=e27b0efb-8cf0-439c-9ebe-d59c927dd590 /home ext3 по умолчанию 0 2
UUID=f8288adc-3ef9-4a6e-aab2-92624276b8ba /tmp ext3 по умолчанию 0 2
UUID=9f49821b-7f94-4915-b9a9-ed9f12bb6847 /usr ext3 по умолчанию 0 2
UUID=b7e908a1-a1cd-4d5c-bc79-c3a99d003e7c /var ext3 по умолчанию 0 2
UUID=292981d7-5a17-488f-8d9a-176b65f45d46 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 пользователь,noauto 0 0
sudo sed -i'.bak' "s/^UUID=.*/tmp\s+ext3\s+defaults\s+[0-9]\s+[0-9]\s?/UUID=$new_uuid /tmp ext3 defaults 0 2/" /etc/fstab
sudo mount -a && ls /tmp
user1@vm1:$ sudo umount /tmp && pv $ Вот перевод текста на русский язык:/tmp.img | sudo dd of=$dd_if bs=10M
241MB 0:00:04 [54,2 МБ/с] [===============================================================================================================>] 100%
0+1928 записей
0+1928 записей
252706816 байт (253 МБ) скопировано, 5,52494 с, 45,7 МБ/с
user1@vm1:$ rm -v tmp.img
rm: удалить защищённый от записи обычный файл tmp.img'? y удален
tmp.img'
user1@vm1:
Показываю, как работает изменённый /etc/fstab
. Для этого используется регулярное выражение в качестве маски, которое определяет эту строку:
```
UUID=f8288adc-3ef9-4a6e-aab2-92624276b8ba /tmp ext3 defaults 0 2
```
После завершения этой книги я дам вам ссылку, чтобы вы научились создавать такие регулярные выражения.
/tmp
./etc/fstab
, и перечислите содержимое нового /tmp
./tmp
и восстановите старое /tmp
из tmp.img
./tmp
, который фактически совпадает с тем, что был до создания новой файловой системы, поскольку tmp.img
является точной копией старого /tmp
./etc/fstab
./etc/fstab
. Если эта команда не вызывает ошибок, всё должно быть в порядке. Поздравляем!tmp.img
из своего домашнего каталога.man
найдите все непонятные команды и параметры.tmp.img
, находящийся в вашем домашнем каталоге, от имени пользователя user1
, учитывая, что tmp.img
был создан пользователем root
?Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )