경우 code.txt
(또는 어떤 파일)을 편집하고 저장 I는 PC 프로세스를 처리 할 방법이 개 아이디어를 가지고 :
PC가
code.txt
완전히 삭제code.txt
되고 처음부터 새로운 (편집 된 버전)이 만들어집니다.PC는의 16 진수 부분을 편집
code.txt
합니다. 따라서 삭제가 발생하지 않습니다.
컴퓨터가 어떻게 작동 하는가?
경우 code.txt
(또는 어떤 파일)을 편집하고 저장 I는 PC 프로세스를 처리 할 방법이 개 아이디어를 가지고 :
PC가 code.txt
완전히 삭제 code.txt
되고 처음부터 새로운 (편집 된 버전)이 만들어집니다.
PC는의 16 진수 부분을 편집 code.txt
합니다. 따라서 삭제가 발생하지 않습니다.
컴퓨터가 어떻게 작동 하는가?
답변:
둘 중 하나 일 수 있습니다. 사용 된 텍스트 편집기에 따라 다릅니다.
'텍스트 파일'개념은 컴퓨터에 내장되어 있지 않습니다. 각 운영 체제는 파일을 다르게 관리 할 수 있으며 각 텍스트 편집기는 해당 파일을 다르게 사용할 수 있습니다.
실제로 두 가지 메커니즘을 모두 갖춘 텍스트 편집기를 찾을 수 있습니다. 실제로 모든 운영 체제 는 기존 파일의 내용을 직접 덮어 쓸 수 있으므로 메모장과 같은 간단한 편집기는 일반적으로 OS에 원본 파일에 직접 쓰도록 요청하기 때문에 구현하기가 가장 쉽지만 쓰기 도중 전원이 꺼지면 위험합니다. 따라서 안정성을 위해 많은 편집자가 의도적으로 업데이트 된 데이터를 새 파일에 저장하고 원본을 삭제합니다.
(내부 업데이트는 대부분의 편집이 바이트를 삽입 / 삭제하지 않고 기존 위치 만 변경하므로 전체 다시 쓰기 파일이 필요없는 16 진수 편집기에서 더 일반적이라고 생각합니다.)
세 번째 작동 모드도 있습니다. 편집기는 먼저 이전 파일의 백업 복사본을 만든 다음 파일에 새 데이터를 직접 씁니다.
그것은 또한 파일을 유지 파일 시스템에 따라 달라집니다. 대부분의 기존 파일 시스템에서 프로그램이 기존 파일에 쓰도록 요청하면 파일 시스템은 기존 데이터를 그대로 덮어 씁니다.
그러나 일부 파일 시스템 은 "기록 중 복사"모드에서 작동합니다. 여기서 새 데이터는 프로그램이 원하는지 여부에 관계없이 항상 다른 위치에 기록됩니다. 다시 한 번, 중단 된 변경을 완전히 되돌릴 수 있기 때문에 안정성이 향상 될 수 있습니다.
일부 파일 시스템 (예 : Btrfs 또는 ext4)에서 이것은 선택적 기능입니다. 다른 것 (예 : 로그 구조 파일 시스템)에서는 핵심 디자인의 일부입니다.
"파일 저장"에 대해 이야기하고 있으므로 파일은 디스크에서 제자리에서 편집되지 않습니다.
일반적인 파일 시스템에 파일이 있으면 두 가지를 고려해야합니다. 디렉토리 항목이 있고 디스크 어딘가에 실제 파일 데이터가 있습니다.
일반 편집기에서 파일을 편집하면 파일 데이터가 RAM에로드되고 해당 데이터 사본에서 편집이 수행됩니다. 그런 다음 파일을 저장할 때 기본적으로 두 가지 옵션이 있습니다.
옵션 1 : 원본 파일의 이름 이 바뀌 므로 원본 디렉토리 항목과 원본 데이터가 모두 디스크에 남아 있습니다. 예를 들어 파일 이름을 바꾸면 파일 접미사가로 변경됩니다 .bak
( .bak
일반적으로 이전 파일 제거 ). 그런 다음 새 파일이 작성되고 메모리의 데이터가 작성됩니다.
옵션 2 : 원래 디렉토리 항목이 수정되어 파일이 0 길이 로 잘립니다 . 파일 데이터에 사용 된 디스크 영역은 사용되지 않은 것으로 표시되지만 이전 파일 내용은 덮어 쓸 때까지 디스크에 남아 있습니다. 그런 다음 새로운 데이터가 작성됩니다. 이 경우 디렉토리 항목은 그대로 유지되며 디렉토리 항목 만 변경됩니다.
일반적인 변형 인 몇 가지 변형이있을 수 있으며 편집 된 데이터는 먼저 임시 파일에 저장되므로이 시점에서 컴퓨터가 충돌해도 원본 파일이 손상되지 않을 수 있습니다. 그런 다음 원본 파일이 삭제되고 새 파일 이름이 올바른 이름으로 바뀝니다. 또는 새 파일을 작성하기 전에 원본 파일을 삭제할 수 있습니다.
따라서 당신의 이론 1은 대부분의 편집자들이하는 일에 가깝습니다.
특별한 경우가 있습니다. 가장 확실한 방법은 디스크에서 바이트를 읽고 덮어 쓸 수있는 디스크 편집기입니다. 다른 하나는 레코드 크기가 고정 된 데이터베이스 파일 일 수 있으므로 레코드를 쉽게 덮어 쓸 수 있습니다. 그러나 파일 중간에 데이터를 추가 할 수 없으므로 파일 중간의 데이터 길이가 일반적으로 변경되는 텍스트 파일 또는 기타 파일을 편집하면 이러한 트릭을 실제로 사용할 수 없습니다.
따라서 이론 2는 경우에 따라 가능하지만 일반 텍스트 편집기는 그렇지 않습니다.
역사적으로, 드라이브는 OS에 의해 직접 제어되었으며, 애플리케이션에 의해 제어되었습니다. 이러한 맥락에서 이론 2는 PC의 기본 작동 방식이었습니다. OS 는 데이터를 넣을 물리적 위치를 지정 했으며이 프로세스를 완전히 제어 할 수있었습니다. 결과적으로 초기 파일 시스템에는 "잘못된 섹터"테이블이 있으므로 데이터가 손실 된 후 컴퓨터에서 데이터가 손실되었음을 알리고 더 많은 데이터 손실을 피하기 위해 해당 섹터를 사용할 수없는 것으로 표시 할 수 있습니다. 디스크 검사와 조각 모음은 그 당시의 순서였습니다.
그러나 세기가 지난 후, 우리는 LBA로 옮겼으므로 이제 OS는 단순히 읽고 쓰려는 "논리적"블록을 참조 할 것입니다. 하드 드라이브 자체는 이제 눈치 채지 않고 OS 뒤의 데이터를 뒤섞을 수있는 지능을 가졌습니다. 검증에 실패한 섹터는 해당 데이터의 위치에 대한 OS의 지식에 영향을주지 않고 단순히 새로운 물리적 위치로 이동할 수 있기 때문에 안정성이 향상되었습니다.
최신 하드웨어에서 "플래터"디스크 드라이브는 일반적으로 새로운 수신 데이터로 이전에 있던 모든 것을 덮어 쓰고 섹터가 데이터를 보유하지 않는 것처럼 보이는 경우 (섹터가 손상되었거나 마모 된 경우) LBA를 선택적으로 다시 매핑합니다. "플래시"드라이브는 일반적으로 기존 셀을 지우고웨어 레벨링이라고하는 프로세스 인 새 셀에 데이터를 씁니다.
두 경우 모두보고 된 값을 초과하여 항상 사용되지 않은 용량이 있기 때문에 가능합니다. 이 초과 프로비저닝을 통해 드라이브는 이전 세기 기술의 다소 신뢰할 수없는 기술보다 더 오래 사용할 수 있습니다. LBA 모드를 사용하면 물리적 매체를 OS에서 추출하여 드라이브 자체가 데이터 손실을 막기 위해 드라이브가 필요하다고 생각하는 모든 조치를 취할 수 있습니다.
응용 프로그램 수준에서 일반적으로 파일을 "쓰기"모드로 열어 OS에서 파일을 지우고 (파일 자체가 아니라 "삭제") 새 데이터를 쓰도록 지시합니다. 이 모든 것은 OS 수준에서 버퍼링 된 다음 드라이브에 "플러시"되어 요청 된 변경을 수행합니다.
이러한 정보가 주어지면 이론 1은 최소한 기본적으로 응용 프로그램 프로그래밍 레벨에서 기술적으로 발생하는 것입니다. 파일 내용을 지우는 것을 피하기 위해 "추가로 쓰기"모드도 있기 때문입니다. OS 자체는 Theory 2와 비슷하지만 LBA를 통해 추상화 된 변경 사항을 제공합니다. 드라이브 자체는 아마도 이론 1과 이론 2가 혼합 된 것을 할 것입니다.
네. 복잡하고 부품 제조업체 / OS 개발자 / 응용 프로그램 개발자에 따라 다릅니다. 그러나이 모든 복잡성은 전력 사용 / 배터리 수명을 향상시키면서 데이터 스토리지를보다 안정적으로 만드는 것을 목표로합니다.
일반적으로 컴퓨터는 원본 파일이있는 위치에 '삭제됨'으로 메모리를 할당하지만 실제로는 더 이상 파일 브라우저에 더 이상 표시되지 않으며 작성된 메모리의 셀이 허용됩니다. 나중에 덮어 쓸 수 있습니다.
새 파일이 같은 곳에 쓰여지는지 여부는 여러 가지 요인, 주로 사용하는 소프트웨어 및 메모리를 사용하도록 설계된 방법에 달려 있습니다.
희망적으로 이것은 여분의 정보 / 배경이 아닌 중복되지 않기를 바랍니다.
PC는 일반적으로 파일을 편집하는 방법을 많이 제어하지 않으며 파일을 편집하는 응용 프로그램입니다.
일부 앱이 편집을 처리하는 방법에 대한 몇 가지 예 :
메모장은 전체 문서를 메모리에로드 한 다음 원본 문서 (또는 지정한 새 문서) 전체를 저장합니다.
거의 모든 다른 소규모 편집자는 편집 할 때 "새"파일을 저장 한 다음 "저장"할 때 삭제하여 원본 문서 위에 복사합니다.
책을 편집하는 데 사용할 수있는 큰 문서 편집기는 메모리보다 큰 문서를 편집 할 수 있으므로 문서의 섹션을 읽거나 수정하는 경향이 있습니다. 실제로 문서를 "제자리에서"편집 할 수 있습니다. 한 페이지를 다시 쓰고 나머지는 그대로 둘 수 있습니다. 이것들은 종종 단순한 .txt 파일보다이 동작을 허용하는 것보다 복잡한 색인화 된 디스크 상 표현을 가지고 있습니다.
큰 편집기는 "업데이트"가 포함 된 임시 파일을 원본 문서에 저장할 수도 있습니다. 최종 저장을 수행하면 파일을 모두 병합하고 문서를 다시 작성할 수 있습니다.
대부분의 편집기는 기존 버전을 그대로두고 변경 사항이있는 새 버전을 만들도록 구성 할 수 있습니다 (이전 버전 유지).
"PC"의 기능에 대한 귀하의 질문 부분에서 일부 운영 체제는 파일의 모든 버전을 기억하고 항상 새 파일을 만듭니다. 이것은 요즘 꽤 드물지만 모든 파일의 끝에 "File.text.1"과 같은 버전이 있고 이전에 버전에 추가되는 오래된 "미니 컴퓨터"(현재 우리가 메인 프레임이라고 함)를 기억합니다. 그것을 편집했다. 이러한 종류의 동작은 이전 버전을 덮어 쓰지 않은 테이프 드라이브 또는 CD-ROM과 같은 것에 더 적합합니다.
2는 불가능하지 않지만 여러 가지 이유로 바보입니다.
잘 작성된 텍스트 파일 편집기는 다음과 같습니다.
myfile.txt
인 경우 새 것이myfile.txt.new
myfile.txt~
myfile.txt
위의 과정에서 컴퓨터가 충돌하거나 디스크 공간이 부족한 경우 이전 파일과 새 파일이 모두 손실되거나 부분적으로 만 저장되는 상황은 없습니다.
편집기, 기본 소프트웨어 / 드라이버, 스토리지에 크게 의존합니다.
영구적으로 제거하지 않으면 복구 할 수 있습니다.
귀하의 질문 (소프트웨어, 하드웨어 등)에 누락 된 정보가 있으므로, 스스로 답변하는 대신 귀하 스스로 질문에 답변 할 수 있도록 도와 드리겠습니다.
몇 가지 요인에 따라 다릅니다.
편집기 : 편집기 소프트웨어가 동일한 파일의 블록을 대체 하면 다시 쓰여질 수 있습니다 . 그리고 이것은 편집기 설정과 파일 형식에 따라 달라질 수 있습니다. 단어 는 기울임 꼴로 표시 될 수 있습니다 . 편집기가 파일을 다시 쓸 때도 파일은 그대로 유지됩니다 (다음 사항 읽기).
기본 소프트웨어 / 드라이버 / 파일 시스템 : 아래에 초기 파일 덮어 쓰기를 방지하는 다른 소프트웨어 / 드라이버가 있으면 파일은 그대로 유지됩니다. 이러한 유형의 소프트웨어에는 버전 관리 시스템, 가상 차등 디스크, 일부 백업 소프트웨어가 포함됩니다. 예를 들어 Git 은 원본 파일 블록을 유지하고 수정 된 블록을 보유하는 새 파일을 만듭니다.
보관 :
스토리지 자체는 새로운 섹터 에 변경된 블록을 기록 하고 기존 블록을 "사용 가능"으로 표시 할 수 있습니다 . 그러면 다른 파일로 덮어 쓰지 않는 한 파일은 실제로 스토리지에 남아 있으며 복구 가능합니다. 예를 들어 최신 SSD 스토리지 는 하드웨어 수준에서 가능합니다.
데이터를 덮어 쓴 경우에도 일반적인 기계식 HDD 자기 디스크에서 데이터를 복구하는 방법이 있습니다 . 그리고 거기에는 전문 회사가 있습니다.
따라서 파일이 삭제되는지 여부에 대한 구체적인 대답을 얻으려면 사용하는 편집기, 백업 / VCS 소프트웨어 / 하드웨어 및 스토리지도 알려 주어야합니다. 요점을 놓친 경우 언제든지 답변을 수정하십시오.
이것은 아마도 다음 질문 일 것입니다. 많은 소프트웨어 / 하드웨어 솔루션이 있습니다. SuperUser는 소프트웨어 / 하드웨어를 홍보하기위한 것이 아니기 때문에 이름을 말하는 대신이를 찾는 방법을 알려줄 것입니다. 키워드 "영구적으로 파일 삭제"를 검색하십시오. 더 정확하게 일치하려면 OS, 하드 드라이브 유형 또는 기타 정보를 언급하십시오.
아직 언급하지 않은 한 가지 동작은 일부 버전의 MS Windows 운영 체제와 관련된 동작이며 사용중인 파일 시스템과 관련이 있습니다.
동작은 다음과 같이 작동합니다. 파일 이름을 바꾸거나 파일을 삭제할 때 원본 파일을 삭제 (또는 이름을 바꾼) 후 15 초 이내에 동일한 이름으로 파일을 새로 만들면 (생성) 작성 날짜 / 타임 스탬프는 원본 파일에서 복사됩니다. 기본적으로 새 파일은 이전 / 원래 파일이됩니다.
이 경우 응용 프로그램이 방법 # 1, 같은 이름으로 새 파일 만들기 또는 방법 # 2로 파일 변경 내용을 저장하는지 여부는 중요하지 않습니다. 삭제되지 않음). 어느 쪽이든, 최종 파일은 원본 파일처럼 (거의) 모든 방향으로 보입니다. 유일한 것은 다른 물리적 드라이브 공간 (클러스터 / 섹터)을 차지하고 파일의 디렉토리 항목이 다른 위치에있을 가능성이 있다는 것입니다.
내가 말했듯이, 이것은 일부 버전의 MS Windows / 파일 시스템의 동작입니다. 어떤 버전의 Windows와 어떤 파일 시스템이 시작되었는지, 그리고 여전히 최신 버전의 동작인지 알 수 없습니다. 추측해야한다면 Windows NT 및 Windows XP에 도입되었으며 여전히 Windows 10의 동작이며, 여전히 동작에는 Fat32 또는 NTFS (및 최신) 파일 시스템이 필요합니다.