필요한 파일을 복구하고 새 자료 보존하기

빅 데이터Beginner
지금 연습하기

소개

현재 워크숍 일정이 실수로 취소되었고 연락처 파일도 없습니다. HDFS 네이티브 스냅샷 두 개가 남아 있지만 최신 스냅샷에는 승인되지 않은 초안이 있습니다. 팀은 나중에 추가한 Paper Folding 활동과 변경되지 않은 출입 안내를 유지하면서 승인된 일정을 되찾아야 합니다.

이 독립적인 환경에는 필요한 모든 데이터가 있으며 이전 실습의 파일을 사용하지 않습니다. 이미 연습한 스냅샷 경로와 일반 HDFS 파일 작업을 알고 있어야 합니다. 업무 요구 사항에 맞는 버전을 선택하고 이름이 지정된 두 개체를 복구한 다음 실제 공유 읽기를 확인합니다. 처음부터 끝까지 Terminal을 사용하세요. 읽기와 일반적인 실수 복구를 포함한 저자의 예상 소요 시간은 45분입니다.

승인된 버전을 선택하여 일정 복구하기

이 단계에서는 복구 지점 두 개를 비교하고 공개된 활동에 맞는 일정만 복구합니다. Terminal을 열고 로컬 작업 공간에서 시작합니다.

cd /home/labex/project

공개된 일정에 따르면 공간 A는 Printmaking, 공간 B는 Bookbinding입니다. 방문객 연락처는 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

복사를 완료하여 대상이 이미 있다면 먼저 읽으세요. 내용이 잘못되었다면 1단계의 범위가 제한된 -cp -p -f 방식을 사용하여 승인된 연락처를 원본으로, 해당 경로 하나만 대상으로 지정하세요. 파일이 이미 있다는 오류를 해결하려고 폴더 전체를 삭제하지 마세요.

공유 사용자 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는 팀 디렉터리를 수정할 수 없어야 하므로 다음 명령은 출력 없이 0이 아닌 종료 코드를 반환해야 합니다.

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

이 의도한 0이 아닌 결과는 경계 확인에 성공했다는 뜻입니다. 계속하세요. 무관한 계정은 비공개 공유 파일을 읽을 수 없어야 합니다. 다음 두 명령은 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에 있는 스냅샷은 복구 도구이지 독립적인 백업이나 전체 저장소 손실에 대한 복구 보장은 아닙니다.