Введение
Текущее расписание мастерской случайно отменено, а файл контакта отсутствует. Доступны два собственных снимка HDFS, но более новый содержит неутверждённый черновик. Команде нужно вернуть утверждённое расписание, сохранив позднее добавленное занятие Paper Folding и неизменённое примечание о доступе.
Эта независимая среда содержит все нужные данные и не использует файлы предыдущей работы. Вы должны знать уже отработанные пути к снимкам и обычные файловые операции HDFS. Вы выберете версию по требованиям к расписанию, восстановите два именованных объекта и проверите фактическое совместное чтение. Используйте Terminal на всех этапах. Авторская оценка времени — 45 минут, включая чтение и исправление обычных ошибок.
Выберите утверждённую версию и восстановите расписание
На этом шаге вы сравните две точки восстановления и восстановите только расписание, соответствующее опубликованным занятиям. Откройте Terminal и начните в локальной рабочей области:
cd /home/labex/project
Опубликованное расписание требует Printmaking в помещении A и Bookbinding в помещении B. Адрес для посетителей — visitors@example.test. Черновик не становится утверждённым только потому, что он новее. Позднее добавленный текущий файл late-session.csv содержит помещение C и Paper Folding и должен остаться. Сохраните также notes.txt, все предоставленные снимки, владение обычного пользователя и доступ только для чтения. Не пересоздавайте весь каталог.
Выведите текущие файлы и собственные точки восстановления HDFS:
hdfs dfs -ls /user/labex/snapshot-workshop/team
hdfs dfs -ls /user/labex/snapshot-workshop/team/.snapshot
Текущее расписание существует, но contacts.csv отсутствует. Снимки называются morning-approved и afternoon-draft. Сравните фактически содержащиеся в них расписания: одного имени недостаточно для доказательства:
hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/morning-approved/schedule.csv
hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/afternoon-draft/schedule.csv
Утренняя версия содержит Printmaking и Bookbinding. В дневной версии занятие помещения A заменено на Draft Planning. Прочитайте текущее расписание:
hdfs dfs -cat /user/labex/snapshot-workshop/team/schedule.csv
Оно содержит A,CANCELLED. Значит, правильная точка восстановления — утверждённая утренняя версия, а не самый новый снимок. Отсутствующий файл можно восстановить отдельно; заменять всё дерево незачем.
Операция HDFS -cp копирует между путями HDFS. Параметр -p сохраняет временные метки, владельца, группу и режим разрешений источника; -f разрешает замену указанного существующего назначения. Здесь оба пути остаются в папке курса, и вы владеете назначением:
hdfs dfs -cp -p -f /user/labex/snapshot-workshop/team/.snapshot/morning-approved/schedule.csv /user/labex/snapshot-workshop/team/schedule.csv
Прочитайте восстановленное расписание от имени фактического пользователя analyst:
sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/schedule.csv
Теперь оно показывает Printmaking и Bookbinding. Убедитесь, что более позднее дополнение текущей папки доступно:
hdfs dfs -cat /user/labex/snapshot-workshop/team/late-session.csv
Оно по-прежнему показывает Paper Folding. Если копирование сообщает об отсутствии источника, выведите именно этот каталог снимка и исправьте путь источника; не создавайте пустую замену. Если случайно скопировали черновик, снова сравните исторические версии и повторите только правильное копирование именованного файла. Копирование с -f заменит только эту неверную версию, не затрагивая новое занятие.
Восстановите контакт и сохраните доступ только для чтения
На этом шаге вы восстановите удалённый контакт, прочитаете полное расписание и проверите границы доступа. Продолжайте в том же Terminal.
Прежде чем выбирать, сравните два исторических файла контакта:
hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/morning-approved/contacts.csv
hdfs dfs -cat /user/labex/snapshot-workshop/team/.snapshot/afternoon-draft/contacts.csv
Утренняя версия содержит требуемый адрес visitors@example.test, а черновик использует временный адрес. Скопируйте утверждённый исторический файл по его отсутствующему текущему пути. Если назначения нет, параметр перезаписи не нужен:
hdfs dfs -cp -p /user/labex/snapshot-workshop/team/.snapshot/morning-approved/contacts.csv /user/labex/snapshot-workshop/team/contacts.csv
Если после завершённого копирования это назначение уже существует, сначала прочитайте его. Если содержимое неверно, примените тот же ограниченный вариант -cp -p -f из шага 1 с утверждённым контактом как источником и только этим назначением. Не удаляйте всю папку для устранения ошибки существующего файла.
Прочитайте восстановленный контакт от имени пользователя совместного доступа analyst:
sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/contacts.csv
Прочитайте неизменённое примечание и позднее занятие от имени того же фактического пользователя:
sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/notes.txt
sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/late-session.csv
Примечание оставляет тихую комнату открытой, а позднее занятие остаётся Paper Folding. Это фактическое чтение сохранённых данных; одно локальное скачивание не исправило бы расписание HDFS.
Проверьте владельца и режимы каталога и каждого текущего файла. -ls -d показывает саму запись каталога; кавычки вокруг * позволяют выбирать пути HDFS, а не локальной оболочке:
hdfs dfs -ls -d /user/labex/snapshot-workshop/team '/user/labex/snapshot-workshop/team/*'
Подготовленный каталог использует 750, файлы — 640, владелец — labex, группа — bigdata. Эти режимы разрешают группе чтение и проход по каталогу без записи. Каталог тоже важен: группа с правом записи в него могла бы удалять или заменять файлы, даже если каждый из них доступен только для чтения.
Подготовленная операция HDFS -test -w выясняет, есть ли у пользователя право записи. Она не пытается писать. Следующая команда должна вернуть ненулевой код без вывода, поскольку analyst не должен изменять каталог команды:
sudo -u analyst /usr/local/bin/hdfs dfs -test -w /user/labex/snapshot-workshop/team
Этот ожидаемый ненулевой результат означает успешную проверку границы; продолжайте. Посторонняя учётная запись не должна читать закрытые общие файлы. Следующие две команды должны завершиться ошибкой Permission denied:
sudo -u nobody /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/schedule.csv
sudo -u nobody /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/contacts.csv
Если случайное изменение разрешений заблокировало analyst, восстановите только затронутый объект курса: -chgrp bigdata задаёт группу совместного доступа, -chmod 750 применяется к каталогу команды, а -chmod 640 — к именованному текущему файлу. Например, следующие полные команды исправляют только контакт и каталог команды:
hdfs dfs -chgrp bigdata /user/labex/snapshot-workshop/team/contacts.csv
hdfs dfs -chmod 640 /user/labex/snapshot-workshop/team/contacts.csv
hdfs dfs -chmod 750 /user/labex/snapshot-workshop/team
В завершение выведите полное текущее расписание и сохранённые точки восстановления:
hdfs dfs -ls /user/labex/snapshot-workshop/team
hdfs dfs -ls /user/labex/snapshot-workshop/team/.snapshot
Все четыре текущих файла и оба исходных снимка остаются на месте. Вы восстановили два затронутых объекта, не потеряв более новую работу. Другой допустимый способ — удалить один текущий файл, о повреждении которого известно, и скопировать его историческую версию, сохранив то же содержимое и границы доступа. Задача не требует определённого написания команд или редактора.
Резюме
Вы выбрали утверждённую историческую версию по её смысловому содержимому, восстановили изменённый и отсутствующий файлы, сохранив позднюю работу и исходные снимки. Фактическое чтение от имени analyst и отказ посторонним пользователям подтвердили общий результат. Снимок в том же HDFS остаётся средством восстановления, а не независимой резервной копией или гарантией восстановления после потери всего хранилища.



