IT 지식

파일을 휴지통에 넣을 때 일어나는 일

OIIUOI 2022. 8. 31. 23:15

파일 제거하기 파일이 제거될 때는 앞에서와 정반대 일이 일어난다. 파일의 블록이 미사용 목록으로 돌아가고 파일의 폴더 엔트리는 삭제돼서 파일이 사라진 것처럼 보인다. 하지만 실제는 이와 꽤 다르고, 여기에 몇 가지 흥미로운 점 이 있다.

파일이 윈도우나 맥 OS에서 제거되면 휴지통으로 간다. 휴지통은 일부 속성이 조금 다르다는 점을 제외하면 그저 또 다른 폴더처럼 보인다. 사실 휴지통이 바로 그런 것이다. 파일이 제거되기로 하면 그 파일의 폴더 엔트리와 전체 이름이 현재 폴더에서 휴지통이라는 폴더로 복사되고 원래 폴더 엔트리는 지워진다. 파일의 블록과 그 내용은 전혀 바뀌지 않는다. 휴지통에서 파일을 복원할 때는 이 과정을 정반대로 수행해서, 엔트리를 원래 폴더로 복구한다.

휴지통 비우기가 원래 의도했던 제거 작업에 더 가깝다. 이 작업을 요청하면 휴지통에 있는 폴더 엔트리가 지워지고 블록은 미사용 목록에 진짜로 추가된다. 이 절차는 휴지통 비우기가 명시적인 요청에 의해 수행되든, 파일 시스템이 빈 공간이 부족하다는 것을 알고 사용자가 모르는 상태에서 조용히 진행되든 마찬가지로 적용된다. 휴지통 비우기를 클릭해서 명시적으로 휴지통을 비운다고 가정해 보자. 그렇게 하면 휴지통 폴더 자체에 있는 폴더 엔트리는 삭제되고 해당 블록이 미사용 목록에 들어가지만, 그 내용은 아직 삭제되지 않은 상태다. 원래 파일에 할당된 각 블록의 모든 바이트는 아직 그대로 있다. 그 블록 이 미사용 목록에서 꺼내져서 새로운 파일에 할당되기 전까지는 새로운 내용으로 덮어 쓰이지 않는다.

 이렇게 삭제가 바로 일어나지 않는다는 것은 여러분이 제거했다고 생각한 정보가 아직 존재하고, 누군가 그 정보를 찾을 방법을 안다면 손쉽게 접근할 수 있음을 뜻한다. 물리적 블록 단위로 드라이브를 읽는 프로그램, 즉 파일 시스템 계층 구조를 통하지 않고 디스크를 읽는 프로그램이라면 예전 내용을 확인할 수 있다. 2020년 중반에 마이크로소프트가 발표한 윈 도우 파일 복구 Windows File Recovery라는 무료 툴은 정확히 이러한 방식으로 수많은 파일 시스템과 저장 매체에 파일 복구를 수행한다.

여기에는 잠재적인 이점이 있다. 디스크에 뭔가 이상이 생겨 파일 시스템이 엉망이 되었을 때도 아직 정보를 복원할 수 있을지 모른다. 하지만 파일을 제거해도 데이터가 완전히 사라졌다는 보장이 없는 점은 데이터에 사적인 내용이 있거나 여러분이 뭔가 나쁜 일을 꾸미고 있어 진짜로 정보가 제거되기를 바란다면 좋지 않은 일이다. 솜씨 좋은 적수나 법 집행 기관은 그런 정보를 복원하는 데 전혀 어려움이 없을 것이다. 만일 범죄 행위를 계획하고 있거나 그냥 집착이 심한 성격이라면 블록이 미사용 상태가 된 후에도 정보를 지우는 프로그램을 사용해야만 한다. 실제로는 그보다 더 꼼꼼히 처리해야 할 수도 있다. 정말로 끈질긴 적수인 데다 자원도 풍부하다면 기존 정보가 새로운 정보로 덮어 쓰였대도 약간이라도 남아 있는 정보를 추출할지도 모른다. 군 조직에서는 블록을 무작위 패턴으로 된 0과 1 값을 여러 번 덮어 씌움으로써 파일을 제거한다. 더 좋은 방법은 하드 디스크를 강한 자석 근처에 놓아 자성을 없애 버리는 것이다. 최선의 방법은 물리적으로 파괴하는 것이며, 저장한 정보를 확실히 사라지게 하는 유일한 방법이다.

하지만 이마저 충분하지 않을 수 있다. 만일 데이터가 항상 자동으로 백업되고 있거나 (직장에서의 컴퓨터가 그렇듯이) 자신의 드라이브 대신 네트워크 파일 시스템이나 '클라우드’ 어디엔가에 파일이 보관되고 있다면 말이다(오래된 컴퓨터나 휴대전화를 팔거나 양도할 때 데이터가 복구될 수 없게끔 확인해야 할 수도 있다). 

 폴더 엔트리 자체에도 어느 정도 비슷한 상황이 적용된다. 파일을 제거 할 때 파일 시스템은 폴더 엔트리가 더 이상 유효한 파일을 가리키지 않는다는 점에 주목할 것이다. 파일 시스템이 폴더에 '이 엔트리는 사용 중이지 않습니다'를 뜻하는 비트를 설정해서 그렇게 할 수 있다. 이후 폴더 엔트리 자체가 재사용되기 전까지는 재할당되지 않은 모든 블록의 내용을 포함해 파일에 대한 원래 정보를 복원하는 것이 가능하다. 이 메커니즘은 1980년대에 마이크로소프트의 MS-DOS 시스템에 사용된 상용 파일 복원 프로그램의 핵심 원리로, 파일 이름의 첫 번째 문자를 특별한 값으로 설정함으로써 미사용 항목을 표시했다. 이 방식 덕분에 파일이 제거되고 얼마 지나지 않아 복원 시도가 이루어지면 전체 파일을 쉽게 복원할 수 있었다.  파일을 만든 사람이 파일이 삭제됐다고 생각한 후에도 한참 동안 그 내용이 남아 있을 수 있다는 사실은 디스커버리 제도나 문서 보존 같은 법적 절차에 대한 시사점을 제공한다. 예를 들어, 밝혀지면 곤란하거나 의심을

살 만한 내용을 담은 과거 이메일 메시지가 갑자기 나타나는 일은 몹시 흔하다. 만일 기록이 종이 문서로만 존재한다면 잘 파쇄하여 모든 사본을 없앨 가능성도 있겠지만, 디지털 기록은 빠르게 확산되고 이동식 장치로도 손쉽게 복사되며 많은 곳에 숨겨진다. '이메일에서 ~가 밝혀짐emails reveal, 유출된 이메일 leaked email 같은 문구로 검색해 보면, 메일 보낼 때뿐만 아니라 그야말로 컴퓨터에 기록하는 모든 정보에 무슨 말을 쓸지 신중해야 한다는 것을 알 수 있다.

 

다른 파일 시스템

지금까지 보조 기억 장치 드라이브에 사용되는 종래의 파일 시스템에 대해 설명했다. 대부분의 정보가 그곳에 저장되며 컴퓨터에서 가장 자주 볼 수 있는 장치이다. 하지만 파일 시스템의 추상화는 다른 저장 매체에도 적용된다. CD-ROM과 DVD도 마찬가지로 폴더와 파일 계층 구조로 되어 있는 파일 시스템처럼 정보에 접근하게 한다. USB 드라이브와 SD 카드의 플래시 메모리 파일 시스템은 매우 흔히 사용된다. 이들 저장 매체를 윈도우 컴퓨터에 연결하면 또 다른 디스크 드라이브로 나타난다. 저장된 내용을 파일 탐색기로 탐색할 수 있고, 내장 드라이브와 똑같이 파일을 읽고 쓸 수 있다. 유일한 차이는 용량이 더 작고 접근 속도가 다소 느릴 수 있다는 점이다.

 

동일한 장치를 맥 컴퓨터에 연결하면 마찬가지로 폴더로 나타나고, 파인더로 탐색할 수 있으며, 파일 전송도 가능하다. 유닉스나 리눅스 컴퓨터에도 연결할 수 있고, 역시 그 운영체제의 파일 시스템에 나타난다. 소프트웨어는 물리적인 장치가 파일 시스템처럼 보이게 하며, 다양한 운영체제에서도 동일하게 추상화된 폴더와 파일 구조로 나타나게 한다. 내부적인 구성 방식은 널리 사용되는 사실상의 표준인 마이크로소프트 FATFile Allocation Table 파일 시스템일 가능성이 높지만, 경우에 따라 다르므로 확실히는 알 수 없고 알 필요도 없다. 추상화는 완벽하기 때문이다. 하드웨어 인터페이스와 소프트웨어 구조의 표준화 덕분에 이러한 추상화가 가능하다.

어설프고 독자적인 소프트웨어와 하드웨어 대신에 표준화된 매체를 이용해 친숙하고 균일한 인터페이스를 사용할 수 있게 됐다.

 다음은 네트워크 파일 시스템으로, 학교와 회사에서 흔히 사용된다. 네트워크 파일 시스템은 소프트웨어를 활용해서 다른 컴퓨터의 파일 시스템이 마치 자신의 컴퓨터에 있는 것처럼 파일 탐색기, 파인더, 또는 다른 프로그램을 사용하여 접근하게 해 준다. 네트워크 상의 다른 컴퓨터에 있는 파일 시스템은 사용 중인 로컬 컴퓨터와 같은 종류일 수도 있고(예컨대 둘 다 윈도우 컴퓨터) 다른 종류일 수도 있다(맥 OS나 리눅스), 플래시 메모리 기반 장치와 마찬 가지로, 소프트웨어가 차이점은 숨기고 균일한 인터페이스를 제공함으로 써 파일 구조가 로컬 컴퓨터에 있는 일반 파일 시스템처럼 보이게 한다.

네트워크 파일 시스템은 주된 파일 저장소로도 사용되지만 백업 용도로도 자주 쓰인다. 파일의 이전 버전 여러 개를 서로 다른 위치에 있는 보관용 저장 매체로 복사해 둔다. 이렇게 하면 랜섬웨어 공격이나 중대한 기록 의 원본을 훼손할 우려가 있는 화재 같은 재난에서 데이터를 지킬 수 있다. 어떤 디스크 시스템은 또한 RAID(Redundant Array of Independent Disks, 복수 배열 독립 디스크) 기법을 활용한다. 이 기술은 디스크 중 하나가 고장 나더라도 정보를 복원할 수 있게 하는 오류 수정 알고리즘을 이용하여 여러 개의 디스크에 데이터를 기록한다. 물론 이러한 시스템은 정보의 모든 흔적을 확실히 지우기 어렵게 만드는 요인이 되기도 한다.