.swp 파일에서 원본 파일을 어떻게 복구 할 수 있습니까?


57

내가 사용 .swp 파일을 여는 시도 vi하고 cat있지만 쓰레기를 표시합니다.


vi 또는 vim을 사용하고 있습니까?
frabjous

이 작동합니까 emacs? (또는 숭고한, 나노, 에드 등)
솔직한

답변:


94
vim -r .swp

이것은 복구 모드로 들어가서 더 많은 정보를 제공합니다. 나는 이것이 당신이 원하는 것이라고 생각합니다.

.swX-저장되지 않은 파일이있는 세션이 종료 / 충돌 / 불량한 일이 발생하면 파일이 남습니다. 저장되지 않은 버퍼가 Vim 세션에서 열린 시간에도 존재합니다. vim -r이러한 임시 파일을 읽고 내용을 다시 만듭니다. 복구 한 후 평소처럼 저장하십시오 (예 :) :w newfilename.


8
정확히 내가 찾던 것. 다른 사람에게는 아직 저장하지 않은 파일 을 복구하는 방법 입니다. 위의 방법은 파일이 이미 존재하는 경우에는 잘 작동하지만 이름이없는 파일은 열 수 없습니다.
Eric Hu

17

.swp를 복구하기 위해 원본 파일이 필요하지 않습니다. 존재하는 것처럼 파일을 열기 만하면됩니다. vim은 확장자가 .swp 인 파일을 찾아서 복구를 제안합니다.

예 :

$ ls -a
. .. .test.txt.swp
$ vim test.txt
[...]
Swap file ".test.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

R을 눌러 복구하고 파일을 : wq

편집 : .swp 파일에는 파일에 대한 변경 사항 만 포함됩니다 (주석 참조). 즉, 백업에서 파일의 최신 사본을 가져온 다음 vim을 사용하여 최신 변경 사항을 복구해야합니다. 파일의 백업 사본이 없으면 운이 좋지 않습니다.


2
원본 파일이 있어야합니다. ss 파일의 데이터는 쓸모가 없습니다. ": help swap-file"을 참조하십시오. 원본 파일없이 작동하는 것처럼 보일 수 있지만 .swp 파일은 변경 정보 만 저장하며 복구 중에 해당 정보를 적용하려면 시작 지점이 필요합니다.
Heptite

물론 그렇습니다. 나는 실제로 vim에 대해 이것을 몰랐다. 그러나 원본 파일의 전체 사본을 저장하면 큰 낭비가 될 수 있으므로 논리적입니다. 대답은 다음과 같습니다. 백업에서 파일을 복구 한 다음 vim을 사용하여 최신 수정 사항을 복구하십시오.
Vegar Westerlund

전체 swp 파일에 전체 파일을 저장하는 것은 좋지 않습니다. 그러나 swp 파일을 축적 할 때 잠재적 인 가치가 있습니다 (활성화 된 경우). 같은 이유로 diff를 통해 편집하고 명시적인 저장에서만 원본을 패치하는 것이 좋습니다. 일련의 diff를 준비 할 수 있다면 부분 합계 (오늘 전 날짜-> 야간; 매일 + 오늘 = 현재) 등을 생성하십시오. Manuel에서 ': pre [serve]`를 찾았습니다. 그런 식으로 작동한다고 생각합니다. 어쨌든 가장 중요한 내용은 다음과 같습니다.The original file is no longer needed for recovery.
John P

- 그것이 작동하는 것 같은데 :preserve:set cpoptions=...&디렉토리에 .swp 및 .swo 파일을 떠나 하나에서 복구 할 수 있습니다. 사용 vim -r <file>이 .swp 및 .swo 선택할 수 있습니다. 추가 편집을 수행하면 .swn, .swm 등이 생성되는데, 이는 해당 지점까지의 스왑 부분 합으로 나타납니다. 원하는 버전으로 되돌리고 편집 (~ = 포크) 또는 저장 (~ = 스 태시) 할 수 있습니다. 결국 스왑 파일을 압축 해제하고 백업을 데몬화할 수 있습니다. 더 큰 파일의 경우 세부 정보가 잘못 될 수 있습니다. 추가 스왑 파일에 어떤 영향을 미치는지 잘 모르겠습니다. 아래를 참조하십시오.
John P

(계속)-버퍼는 플래그를 전달하며 스왑 파일을 생성하는 버퍼이므로 플래그가 전역 구성 또는 자동로드에서 설정되지 않은 경우에도 복구 중에 상속됩니다. 복구 순서를 단일 복구 파일로 바꾸려면 원하는 스왑을 .swp로 이동하고 나머지는 숨길 수 있습니다. 누군가가 격차를 메울 수 있다면 파일 복구와 Vim 세션 관리의 중복에 대해 더 알고 싶습니다.
John P


7

1 스왑 파일 .file.swpvim

2 :recover는 파일을 복구합니다


7

Vegar Westerlund와 Heptite 의견을 읽은 후 vim이 .swp 파일에서 복구하기 위해 원본 파일 (또는 백업)이 어느 시점에 필요한지 알고 싶었습니다. 다음과 같은 작업이 수행되었습니다.

975 줄 파일을 열고 949 줄에서 파일을 편집하고 ( .swp파일 작성 ) 프로세스를 종료 한 다음 원본을 삭제했습니다. $ vim Original_File.swp»> yes에서 복구 할 것인지 묻습니다. 처음 68 줄과 마지막 34 줄 (내 편집 위의 8 줄부터 시작) 만 실제로 복구되었습니다.

그런 다음 작은 파일로 테스트를 반복했습니다. 20 줄에서 200 줄까지 .swp 파일 에는 원본 내용 의 100 %가 포함되었습니다 . 그러나 300 줄에서 처음 68 줄과 18 줄의 마지막 줄 (내 편집보다 2 줄부터 시작)이 .swp에 포함되었습니다.

결론적으로 vim은 항상 파일의 "헤더"와 "하단"을 .swp 파일에 저장한다는 것을 아는 것이 좋습니다. .swp에 몇 줄을 포함해야하는지 제어하는 ​​설정이 있습니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.