Restaurar los archivos correctos y conservar los datos nuevos

Big DataBeginner
Practicar Ahora

Introducción

La programación actual del taller se ha cancelado por accidente y falta su archivo de contacto. Quedan dos instantáneas nativas, pero la más reciente contiene un borrador no aprobado. El equipo necesita recuperar la programación aprobada sin perder una actividad posterior de Paper Folding ni la nota de acceso intacta.

Este entorno independiente contiene todos los datos necesarios; no utiliza archivos del laboratorio anterior. Debes conocer las rutas de instantáneas y las operaciones HDFS ordinarias practicadas allí. Elegirás una versión adecuada para los requisitos del trabajo, recuperarás dos objetos concretos y probarás la lectura compartida real. Utiliza Terminal en todo momento. El autor estima 45 minutos, incluida la lectura y la corrección de errores habituales.

Elige la versión aprobada y restaura la programación

En este paso compararás dos puntos de recuperación y restaurarás únicamente la programación que coincide con las actividades publicadas. Abre Terminal y empieza en el espacio de trabajo local:

cd /home/labex/project

La programación publicada exige Printmaking en la sala A y Bookbinding en la sala B. Su contacto para visitantes es visitors@example.test. Un borrador no está aprobado simplemente por ser más reciente. El archivo actual añadido después, late-session.csv, incorpora la sala C y Paper Folding, y debe conservarse. Conserva también notes.txt, todas las instantáneas proporcionadas, la propiedad del usuario ordinario y el acceso compartido de solo lectura. No reconstruyas el directorio completo.

Muestra los archivos actuales y los puntos de recuperación nativos:

hdfs dfs -ls /user/labex/snapshot-workshop/team
hdfs dfs -ls /user/labex/snapshot-workshop/team/.snapshot

La programación actual existe, pero falta contacts.csv. Las instantáneas se llaman morning-approved y afternoon-draft. Compara las programaciones que contienen realmente; el nombre por sí solo no basta como evidencia:

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

La versión de la mañana contiene Printmaking y Bookbinding. La de la tarde cambia la sala A a Draft Planning. Lee la programación actual:

hdfs dfs -cat /user/labex/snapshot-workshop/team/schedule.csv

Contiene A,CANCELLED. Por tanto, el punto correcto es la versión aprobada de la mañana, no la instantánea más reciente. El archivo ausente puede recuperarse por separado; no hay motivo para reemplazar todo el árbol.

La operación HDFS -cp copia entre rutas HDFS. La opción -p conserva las marcas de tiempo, el propietario, el grupo y el modo de permisos del origen; -f permite reemplazar el destino existente indicado. Ambas rutas siguen dentro de la carpeta del curso y tú eres el propietario del destino:

hdfs dfs -cp -p -f /user/labex/snapshot-workshop/team/.snapshot/morning-approved/schedule.csv /user/labex/snapshot-workshop/team/schedule.csv

Lee la programación recuperada mediante la identidad real analyst:

sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/schedule.csv

Ahora muestra Printmaking y Bookbinding. Confirma que sigue disponible la incorporación posterior de la carpeta actual:

hdfs dfs -cat /user/labex/snapshot-workshop/team/late-session.csv

Todavía muestra Paper Folding. Si una copia indica que falta el origen, muestra ese directorio exacto de la instantánea y corrige la ruta de origen; no crees un sustituto vacío. Si copias por accidente el borrador, vuelve a comparar ambas versiones históricas y repite solo la copia correcta del archivo indicado. La copia con -f puede reemplazar de forma segura esa única versión incorrecta sin tocar la actividad nueva.

Recupera el contacto ausente y conserva el uso compartido de solo lectura

En este paso recuperarás el contacto eliminado, leerás la programación completa y comprobarás los límites de acceso. Continúa en la misma Terminal.

Compara los dos archivos históricos de contacto antes de elegir uno:

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

La versión de la mañana contiene la dirección requerida, visitors@example.test; el borrador utiliza una dirección temporal. Copia el archivo histórico aprobado a su ruta actual ausente. No necesitas una opción de sobrescritura para un destino que no existe:

hdfs dfs -cp -p /user/labex/snapshot-workshop/team/.snapshot/morning-approved/contacts.csv /user/labex/snapshot-workshop/team/contacts.csv

Si ese destino ya existe tras una copia completada, léelo primero. Si su contenido es incorrecto, utiliza el mismo patrón limitado -cp -p -f del Paso 1 con el contacto aprobado como origen y ese único destino. No elimines toda la carpeta para resolver un error de archivo existente.

Lee el contacto recuperado con el usuario analyst, que tiene acceso compartido:

sudo -u analyst /usr/local/bin/hdfs dfs -cat /user/labex/snapshot-workshop/team/contacts.csv

Lee la nota intacta y la actividad posterior con la misma identidad real:

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

La nota mantiene abierta la sala silenciosa y la actividad posterior sigue siendo Paper Folding. Estas lecturas reales utilizan los datos conservados; una descarga local por sí sola no repararía esta programación de HDFS.

Inspecciona el propietario y los modos del directorio y de cada archivo actual. -ls -d muestra la entrada del propio directorio; las comillas alrededor de * dejan que HDFS, y no la shell local, seleccione sus rutas de archivo:

hdfs dfs -ls -d /user/labex/snapshot-workshop/team '/user/labex/snapshot-workshop/team/*'

El directorio proporcionado utiliza 750 y sus archivos 640, con propietario labex y grupo bigdata. Estos modos permiten lectura y recorrido al grupo, sin escritura. El directorio también importa: un grupo que pudiera escribir en él podría eliminar o reemplazar archivos aunque cada archivo fuera de solo lectura.

Utiliza la operación HDFS preparada -test -w para preguntar si una identidad tiene acceso de escritura. No intenta escribir. Se espera que el siguiente comando termine con estado distinto de cero y sin salida, porque analyst no debe poder modificar el directorio del equipo:

sudo -u analyst /usr/local/bin/hdfs dfs -test -w /user/labex/snapshot-workshop/team

Ese estado intencional distinto de cero significa que la prueba del límite tuvo éxito; continúa. Una identidad ajena no debe poder leer los archivos compartidos privados. Se espera que los dos comandos siguientes fallen con 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

Si un cambio accidental de permisos impidió el acceso de analyst, restaura únicamente el objeto afectado del curso: -chgrp bigdata asigna el grupo compartido, -chmod 750 se aplica al directorio del equipo y -chmod 640 a un archivo actual concreto. Por ejemplo, estos comandos completos reparan solo el contacto y el directorio del equipo:

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

Por último, muestra la programación actual completa y los puntos de recuperación conservados:

hdfs dfs -ls /user/labex/snapshot-workshop/team
hdfs dfs -ls /user/labex/snapshot-workshop/team/.snapshot

Permanecen los cuatro archivos actuales y las dos instantáneas originales. Recuperaste los dos objetos afectados sin descartar el trabajo más reciente. Una alternativa válida puede eliminar un único archivo actual dañado conocido y copiar de nuevo su versión histórica, siempre que conserve el mismo contenido y los mismos límites de acceso compartido. La tarea no exige una escritura concreta del comando ni un editor determinado.

Resumen

Elegiste la versión histórica aprobada a partir de su contenido y los requisitos del trabajo, recuperaste un archivo modificado y otro ausente, y conservaste tanto el trabajo posterior como las instantáneas originales. Las lecturas reales de analyst y las denegaciones a usuarios ajenos demostraron el resultado compartido. Una instantánea en el mismo HDFS sigue siendo una ayuda para la recuperación, no una copia de seguridad independiente ni una garantía de recuperación ante la pérdida de todo el almacenamiento.