Создайте копию сайта о природе для чтения офлайн

LinuxBeginner
Практиковаться сейчас

Введение

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

Изучайте оригинал в Source Guide, загружайте файлы в Workstation, а свои файлы читайте в Field Copy. Вы остановите только подготовленный сервис источника, затем откроете ещё не прочитанную карточку и лист из перенесённой копии. Связь с LabEx останется доступной: моделируется потеря источника контента, а не отключение всей платформы.

Достаточно базовых навыков терминала. Здесь объясняются URL, параметры загрузки и относительные ссылки. Все тексты и иллюстрации — оригинальные вымышленные учебные материалы, а не реальные советы по определению видов, сбору пищи или безопасности. Сайт и вывод команд остаются английскими при любом языке инструкции.

Сохраните страницу и увидьте её ограничения

На этом шаге вы пройдёте настоящий маршрут чтения и сохраните одну HTML-страницу для контролируемого сравнения. Первое сохранение намеренно неполно и ещё не является готовым справочником.

Пройдите по оригиналу

Откройте Source Guide, выберите Woodland, затем Start the route. Перейдите к Silver leaf, прочитайте абзац и рассмотрите иллюстрацию, затем вернитесь через Return to the route. Откройте Open observation sheet: это настоящий SVG-документ с местом для рисунка и наблюдений. Вернитесь кнопкой «Назад» браузера. Оставьте Amber cap и Reed fan непрочитанными для последующего теста с остановленным источником.

Главная страница, маршрут и три карточки — пять отдельных HTML-файлов. Изображения, стили CSS и SVG-лист тоже отдельные файлы. Harbor event — online only, outside this guide — намеренно исключённое соседнее мероприятие, не входящее в офлайн-маршрут.

Прочитайте URL и сохраните главную страницу

Переключитесь в Workstation. pwd показывает текущий каталог. Подготовленный терминал начинается в рабочей области проекта:

pwd
/home/labex/project

При необходимости cd меняет каталог:

cd /home/labex/project

Терминал обращается к источнику по адресу http://127.0.0.1:8081/woodland/index.html. http:// выбирает HTTP; 127.0.0.1 означает эту же машину лаборатории; 8081 — порт источника; /woodland/index.html — запрашиваемый путь файла. Вкладка Source Guide предоставляет тот же сервис через браузерный адрес платформы. Не вводите адрес обратной петли терминала в браузер собственного компьютера.

wget получает URL. Параметр -O с заглавной буквой O задаёт один выходной файл и перезаписывает его при повторении. Команда сохраняет только HTML главной страницы:

wget -O first-save.html http://127.0.0.1:8081/woodland/index.html

Найдите 200 OK и сообщение о сохранении. Время передачи и число байтов могут отличаться. ls позволяет вывести файл в списке и проверить имя:

ls first-save.html

Откройте Field Copy и перейдите к First single-page save. Заголовок и текст есть, но отсутствуют иллюстрации и оформление. Start the route возвращает локальную ошибку 404: File not found, поскольку маршрут не загружен. Вернитесь на стол чтения через Return to local files. Это ожидаемое ограничение, а не поломка оригинала. 404 означает, что сервер ответил, но не имеет этого пути; ошибка соединения означает недоступность самого сервиса.

Локальный стол чтения выдаёт файлы из /home/labex/project на порту 8082. Недостающие файлы он никогда не получает от источника.

Соберите справочник в разрешённых границах

На этом шаге вы соберёте связанные страницы и ресурсы, не загружая соседнее мероприятие. Сначала отделите URL-пути справочника от выходных каталогов машины.

Задайте полезную границу

Источник устроен так:

/woodland/                 homepage, route, species cards
/shared/woodland/          CSS, three illustrations, observation sheet
/harbor/                   a different activity: exclude it

Три карточки находятся в /woodland/species/. Лист наблюдений и стили расположены за пределами /woodland/, в явно разрешённом общем каталоге. Ограничение только потомками начального каталога было бы слишком узким. Загрузка всего узла была бы слишком широкой.

Параметр Wget --recursive следует по ссылкам, а --level=inf снимает обычный предел в пять уровней. Здесь сайт маленький и контролируемый: неограниченная глубина по-прежнему ограничена разрешёнными путями. --page-requisites также собирает зависимости отображения, например изображения и таблицы стилей. Рекурсивный сбор обнаруживает связанные файлы, а не все файлы без ссылок, которые могут существовать на сервере.

--include-directories=/woodland,/shared/woodland разрешает эти два дерева. Запятая соединяет разрешённые URL-префиксы без пробелов. Так включаются более глубокие пути карточек и исключается /harbor/. Параметр --no-parent не нужен: он заблокировал бы необходимый здесь соседний общий каталог.

--no-host-directories убирает дополнительный каталог с именем узла. --directory-prefix=raw-guide помещает сохранённую URL-иерархию под локальный raw-guide/. Каталог создаётся автоматически. Выполните эту одну команду; терминал может визуально перенести её на несколько строк:

wget --recursive --level=inf --page-requisites --no-host-directories --directory-prefix=raw-guide --include-directories=/woodland,/shared/woodland http://127.0.0.1:8081/woodland/index.html

Wget также читает и сохраняет robots.txt источника, разрешающий эту учебную загрузку. Это метаданные робота, а не дополнительная страница справочника. Ожидаются пять HTML-страниц, пять общих ресурсов и эти метаданные: всего одиннадцать файлов.

find raw-guide -type f выводит обычные файлы во всём дереве. -type f выбирает файлы, а не каталоги:

find raw-guide -type f

Убедитесь в наличии двух нужных деревьев и robots.txt; каталога harbor/ быть не должно. Порядок списка не важен.

Узнайте, почему полным файлам ещё нужны рабочие ссылки

В Field Copy откройте Raw collected guide. Его HTML пока использует пути вроде /shared/woodland/guide.css. Начальный слеш означает корень сервера чтения, а не raw-guide/. Файлы лежат в raw-guide/shared/woodland/, поэтому непреобразованные пути всё ещё не находят цели.

Это различие важно: собрать правильные файлы и направить навигацию к ним — разные задачи. Вернитесь на локальный стол чтения. Сохраните raw-guide/ для сравнения, а затем создайте чистую переносимую копию.

Если Wget сообщает об ошибке соединения, выполните source-control start в Workstation и повторите попытку. Подготовленная команда запускает только предоставленный источник, ничего не загружая и не меняя в копиях. Для повторного сбора в пустое место rm -r raw-guide удаляет только этот ненужный сравнительный каталог со всем содержимым. Проверьте написание перед использованием этой необязательной команды восстановления.

Сделайте навигацию переносимой вместе с копией

На этом шаге вы создадите переносимый каталог field-guide/ и воспользуетесь его настоящими ссылками. Wget может переписать загруженные ссылки после окончания сбора.

--convert-links превращает ссылки на загруженные файлы в относительные пути. Например, копия главной страницы использует ../shared/woodland/guide.css; .. обозначает родительский каталог. Более глубокой карточке нужен ещё один .., чтобы добраться до тех же общих ресурсов. Эти пути переносятся вместе с каталогом и не зависят от корня сервера чтения.

Повторите сбор в заданных границах в новое место, добавив преобразование ссылок. Источник пока работает:

wget --recursive --level=inf --page-requisites --convert-links --no-host-directories --directory-prefix=field-guide --include-directories=/woodland,/shared/woodland http://127.0.0.1:8081/woodland/index.html

Дождитесь последнего сообщения Converted links. Преобразование выполняется после загрузки, когда Wget знает, какие цели сохранены. Ссылки на исключённое мероприятие Harbor остаются онлайн-ссылками; подпись явно выводит это мероприятие за пределы офлайн-справочника.

grep показывает совпавшие текстовые строки. Найдите имя таблицы стилей, чтобы увидеть относительную ссылку в настоящем HTML:

grep 'guide.css' field-guide/woodland/index.html

Вывод — одна длинная строка HTML. Найдите в ней ../shared/woodland/guide.css; понимать или редактировать HTML не требуется. Кавычки в 'guide.css' передают шаблон как один аргумент.

В Field Copy выберите Downloaded guide. Теперь должны появиться оформление и три иллюстрации. Откройте Start the route, затем Silver leaf и All field notes. Посмотрите на адрес браузера: ссылки остаются внутри /field-guide/ на сервисе Field Copy. Две остальные карточки пока не открывайте, оставьте их для следующего шага.

При 404 сравните запрошенный адрес с find field-guide -type f: недостающий файл нужно собрать, а неверный корневой путь — преобразовать. Для чистой повторной попытки необязательная команда rm -r field-guide удаляет только этот созданный переносимый каталог; затем повторите полную команду. Повторное использование существующего места Wget может создать нумерованные дубликаты, поэтому сохранённый файл .1 не является ожидаемым результатом.

Остановите источник и перенесите справочник

На этом шаге вы проверите смысл копии: другой читатель сможет пользоваться ею после остановки источника и переноса каталога загрузки.

Уберите зависимость от источника

В Workstation воспользуйтесь подготовленной командой остановки. Она влияет только на порт 8081; терминал и Field Copy остаются доступны:

source-control stop
Source stopped; Field Copy is still running.

Перезагрузите Source Guide. Ожидается ошибка соединения или шлюза платформы, поскольку процесс источника остановлен. Страница из кэша не доказывает, что источник работает. В Workstation curl запрашивает адрес, а --max-time 3 ограничивает ожидание тремя секундами. Суффикс || true позволяет оболочке продолжить работу после этого намеренно неудачного запроса:

curl --max-time 3 http://127.0.0.1:8081/woodland/index.html || true

Ожидайте ошибку соединения, а не HTML справочника. Это подтверждает недоступность источника из самой лаборатории. Теперь в Field Copy откройте Downloaded guide, Start the route и ещё не прочитанную Amber cap. Должны загрузиться настоящие абзац и изображение. Откройте там Observation sheet: должен появиться настоящий печатный SVG. Эти локальные адреса отличаются от исходных URL источника.

Полная локальная карточка с настоящей иллюстрацией

Передайте каталог, который можно перенести

Пустой каталог handover/ уже подготовлен. mv переносит целый каталог со всеми дочерними элементами. Завершающий слеш в handover/ явно указывает, что назначение — каталог:

mv field-guide handover/

Старого места загрузки больше нет. Выведите содержимое перенесённого каталога:

ls handover/field-guide
robots.txt  shared  woodland

Откройте Field Copy в новом приватном окне либо в новой вкладке перейдите со стола чтения в Moved handover guide. Приватное окно может потребовать обычного входа в платформу; для учебного пути достаточно новой вкладки Field Copy. Перенесённый URL — /handover/field-guide/woodland/index.html, его обслуживает локальный сервис чтения. Не возвращайтесь через устаревшую закладку старого места.

Следуйте Start the route, откройте ещё не прочитанную Reed fan, вернитесь через All field notes и откройте Observation sheet. Лист можно сохранить или распечатать через меню браузера. Используются настоящие файлы, а не анимация успеха. Ссылка Harbor event лежит вне офлайн-области, поэтому после отключения источника её работа не требуется.

Если необходимая страница теперь недоступна, восстановите источник командой source-control start, исправьте чистую загрузку по предыдущему шагу и замените неполный каталог передачи, проверив путь. Затем остановите источник и повторите маршрут в перенесённой копии. Сбрасывать всю лабораторию не нужно. Сохраните полную передачу как итог.

Итоговый артефакт — handover/field-guide/ с контентом и общими ресурсами. Лаборатория проверяет чтение в браузере через обычный статический файловый сервер. Она не обещает одинаковое поведение file:// во всех браузерах или скачивание всего каталога на ваш компьютер одним нажатием в платформе.

Резюме

Вы сравнили отдельную сохранённую HTML-страницу со сбором в заданных границах, включили общие зависимости и преобразовали ссылки в относительные пути. Затем сами остановили источник, прочитали ещё не открывавшиеся материалы независимой локальной копии и перенесли целый каталог в место передачи.

Полезный результат — сам справочник: пять читаемых страниц, три иллюстрации, таблица стилей и настоящий лист наблюдений, а также метаданные робота. Доступность источника, границы загрузки и рабочая локальная навигация — разные свойства. Вы проверили каждое.