7-zip / WinRAR이 파일을 대상으로 이동하기 전에 파일을“temp”로 압축 해제하는 이유는 무엇입니까?


50

7-zip / WinRAR가 파일을 대상으로 이동하기 전에 파일을 "temp"로 압축 해제하는 이유는 무엇입니까?

나는 목적지에 직접 압축을 풀는 것에 대해 어떤 이점도 보지 못한다. 특히 큰 파일에 대해서는 특히 짜증이납니다.


편집하다:

왜 그들이 제자리에 있지 않은지 설명하십시오 .


3
WinRAR에서``를 임시 폴더로 지정하면 대상으로 직접 추출됩니다.

답변:


82

정확히 파일을 추출하고 있습니까? 명령 줄이나 GUI를 사용하고 있습니까? 파일을 드래그하거나 선택하고 추출 기능을 사용하고 있습니까? 쉘 확장 컨텍스트 메뉴를 사용하고 있습니까?

대상 폴더를 입력 한 다음 추출 기능을 선택하거나 셸 확장을 사용하는 경우 먼저 임시 폴더로 추출 하지 않고 대상으로 직접 추출합니다.

당신이 UI에있는 파일을 선택하면 드래그 대상 폴더로, 그것은 것입니다 임시 폴더에 압축을 해제합니다.

그 이유는 대상을 선택하는 방법에 있습니다. 대상 폴더를 입력하거나 상황에 맞는 메뉴 항목을 사용하면 프로그램은 추출해야하는 위치를 정확하게 알고 있습니다. 그러나 파일을 끌기 만하면 OLE 의 끌어서 놓기 기능이 작동하는 방식으로 인해 프로그램에서 대상 폴더의 위치를 ​​알 수 없습니다. 즉, 탐색기입니다보관 프로그램이 아닌 대상 폴더를받습니다. 결과적으로 프로그램은 추출 위치를 알 수 없으므로 임시 폴더로 추출한 다음 탐색기가 완료되면 이동합니다. 두 가지 방법을 모두 사용하여 큰 파일을 추출하면이를 명확하게 볼 수 있습니다. 폴더로 드래그하면 압축이 풀리고 탐색기의 표준 파일 작업 대화 상자가 폴더로 이동합니다. 폴더를 지정하고 추출을 클릭하면 압축이 풀리고 추가 처리가 수행되지 않습니다.

추출 위치를 처리하는 방법을 보려면 7-Zip소스 코드를 자유롭게 살펴보십시오.


몇 년 전에 필자가 작성한 프로그램에서 끌어서 놓기를 구현하려고 할 때 이것을 열심히 배웠습니다.


7
절대적으로 훌륭합니다-감사합니다! 이것은 몇 년 동안 저를 괴롭 혔지만 "무엇"과 왜 "를 추적하는 데 시간이 걸리지 않았습니다. 내 C를 찾는 이상한 시간 : whazoo에 채워진 temp 폴더, Winrar의 옵션을 통해 어디에서 찾을 지 모르겠습니다. 먼저 C :의 temp 폴더로 추출하도록 설정해야합니다. 그러나 아쉽게도 찾을 수 없습니다. 두 방법 사이의 상관 관계를 연결 한 적이 없으며 이제는 빛을보고 감사합니다.
Coldblackice

2
여기서 잘못된 점은 탐색기가 파일을 이동 하지 않고 오히려 복사 한다는 것입니다. 어떤은 정말 자극적 이동은 (는 공간을 낭비하지 않음)과 이상적인 선택을 했어야 (분할하는 파티션에서 이동하는 경우를 제외하고) 정말 빨리하기 때문에,하지만 Microsoft의 바보가 할 수있는 좋은 아이디어 생각 복사 임시 폴더에서 그런 다음 임시 폴더 데이터를 그대로 둡니다. 거대한 아카이브를 추출하면 두 배의 공간을 차지할뿐만 아니라 거의 두 배나 더 오래 걸릴 것입니다!
ADTC

아마도 그럴만한 이유가 있었을 것입니다. Windows 3 시대에 처음 OLE를 설계했을 때이를 기반으로 한 시스템 및 / 또는 DDE의 제한 때문일 수 있습니다. 오늘 적용되거나 적용되지 않을 수있는 제한.
Synetech

1
예, 특히 공간이 제한된 가상 머신에서는 어리 석습니다. "추출 대상"을 사용하면 약 1 분 안에 6000 개 이상의 파일이있는 8GB RAR 아카이브의 압축이 풀립니다. 그러나 폴더를 드래그하면 임시 디렉토리로 압축 해제하는 데 동일한 시간이 걸리지 만 대상 창을 고정한 다음 15 분 이상 파일을 3mb / s로 복사합니다. 수백 MB / s의 속도로 네트워크를 통해 다른 가상 머신에서이 머신으로 파일을 복사 할 수 있지만 동일한 드라이브에서 파일을 복사하는 속도가 느립니다 (기본 가상 파일 시스템으로 인해).
Triynko 2016 년

1
잠재적 인 해결 방법은 GUID 이름으로 0 바이트 파일을 만드는 것입니다. 즉, 실제로 중복 파일 이름으로 발생하는 것은 불가능합니다. 그런 다음 explorer.exe의 파일 핸들을 모니터링하여 파일을 복사하는 위치를 확인하십시오. 마지막으로 아카이브를 대상으로 추출하십시오.
Zv_oDD

1

압축 해제를위한 메모리 요구 사항이 최소로 유지됩니다.

파일 시스템을 사용하지 않으면 메모리에서 압축 해제가 발생합니다. 메모리가 부족하거나 압축 파일이 크면 조만간 사용 가능한 메모리가 소진되고 메모리 페이징 프로세스가 시작됩니다.

이러한 상황에서 페이징은 파일이 여전히 압축 해제되고 (페이지 파일이 계속 추가되고 있기 때문에) 파일 시스템을 사용하는 것보다 훨씬 느리지 만, 파일이 압축 해제됨에 따라 오류가 있는지 검사되고 있으며, 많은 읽기 / 쓰기 작업. 페이지 파일에 발생할 수있는 최악의 상황입니다.

편집 : 임시 디렉토리 사용과 관련하여 많은 운영 체제 지침을 따르십시오. 압축 해제에 실패하면 작업을 수행하는 프로그램이 자체적으로 정리된다는 보장이 없습니다. 예를 들어 충돌했을 수 있습니다. 따라서 대상 파일에 잔여 파일이 남아 있지 않으며 운영 체제는 임시 파일이 적절하다고 판단 될 때이를 폐기합니다.


3
사실이지만 파일이 먼저 임시 디렉토리로 압축 된 다음 대상 디렉토리 이동 된 이유는 설명하지 않습니다 . 작업이 바로 진행될 수도 있습니다.
slhck 2016 년

3
귀하의 질문을 더 잘 반영하도록 편집되었습니다
A Dwarf

4
@ 단테, 그건 사실이 아닙니다. 동일한 파티션에서 파일을 이동하면 파일 시스템의 파일 색인이 새 디렉토리로 변경되기 때문에 데이터를 복사하지 않으며 즉시 수행됩니다. 나를 믿지 않습니까? 한 폴더에서 멀티 GB 파일을 잘라내서 다른 폴더에 붙여 넣으십시오. 1 초도 걸리지 않습니다. 그들은 다른 드라이브 나 파티션에 같은 것을 시도합니다. 몇 분이 걸립니다.
Dour High Arch 2016

3
"운영 체제가 적절한 경우 임시 파일을 처리합니다": Windows 그렇게합니까?
grawity

1
이 완전히 잘못된 답을 제거해야합니다. 7zip은 끌어서 놓기 작업 중 임시 폴더로 압축 풀기 만하며 이는 Windows의 한계 때문입니다. 자세한 내용은 superuser.com/questions/197961/… 을 참조하십시오 .
dss539

-1

그 이유는 생각보다 간단합니다. 많은 프로그램이 파일을 % temp %로 압축 해제합니다. 대상 파일 시스템에 충분한 공간이 없기 때문입니다.

이제, 당신이 할 수 알고 당신의 파일 시스템에 충분한 공간이있을 수 있습니다, 그러나 응용 프로그램은하지 않습니다. 해당 파일 시스템이 OS 또는 다른 응용 프로그램에서 사용 중이고 압축 해제 중에 채워지면 어떻게됩니까?

개발자는 % temp %에 "무제한"공간이 있다고 가정하지만 대상은 그렇지 않습니다.


좀 빠지는; temp 디렉토리를 사용해야하는 이유는 아닙니다. 이 응용 프로그램은 수행 (또는 적어도 수)가 충분한 공간인지 여부를 알고있다. 첫째, 아카이버는 압축이 풀릴 때 압축 파일의 크기를 정확히 알고 미리 할당 한 다음 압축을 풀 때 파일을 채우고 드라이브의 여유 공간을 쿼리하는 것은 매우 간단합니다. 또한 공간이 충분하지 않으면 가능한 한 압축을 풀고 공간이 부족하면 오류가 발생합니다.
Synetech

실제로 이것은 꽤 답입니다. 응용 프로그램이 대상 대상의 공간을 미리 할당 할 수 있다고해서 독점적으로 액세스 할 수있는 것은 아닙니다. 응용 프로그램은 대상을 쿼리하고 충분한 공간이 있는지 확인할 수 있지만 해당 쿼리가 진행되는 동안 공간을 할당하기 전에 다른 응용 프로그램이 해당 공간의 일부를 차지할 수 있습니다.
Keltari

또한 사용자 임시 공간은 파일 시스템 수준에서 해당 사용자와 연결되어 있습니다. 충돌 또는 다른 장애가 발생한 경우 다른 사용자가 임시 파일을 볼 수 없었습니다. 대상에는 이러한 보안 제한이 없을 수 있으므로 다른 파일 시스템에 민감한 데이터가 걸려 있지 않는 것이 더 안전합니다.
Keltari

내가 말했듯이, 압축을 풀 때 부족하면 단순히 오류 메시지가 나타납니다. 임시 드라이브로 추출하면 어떻게 해결됩니까? 공간이 충분하지 않으면 파일을 임시 드라이브로 추출한 후 공간이 충분하지 않으며 모든 CPU주기를 낭비하고 드라이브 읽기 / 쓰기를 추출하여 임시 드라이브에 아무것도 추출하지 않습니다. 내 대답에서 말했듯이 7-Zip의 소스 코드를 자유롭게 거나 Alexander Roshal 에 문의하여 WinRAR에 대해 문의하십시오. 또한 내가 말했듯이 대상을 지정하거나 컨텍스트 메뉴를 사용하면 % temp %를 사용 하지 않습니다 .
Synetech

-2

7-zip 또는 WinRAR 개발자가 아닌 나의 의견은 순전히 추측입니다. 즉, 모든 것이 완료 될 때까지 임시 공간을 사용하여 압축을 풀면 모든 파일이 손상되지 않았는지 (즉, 우편 번호가 손상되지 않았는지) 확인하는 데 도움이됩니다.

아카이브가 시작될 때 파일 작업을 시작한 큰 압축 파일의 압축을 풀 때보 다 나쁘지 않습니다. 아카이브가 끝날 때 무언가가 손상되었음을 알기 위해서입니다. 이 시점에서 모든 것에 대한 자신감을 잃게됩니다.

내 마지막 의견은 7-zip 에서이 동작을 본 것을 기억하지 못한다는 것입니다. 마우스 오른쪽 버튼을 클릭하고 여기에서 추출이라고 말하면 일반적으로 파일의 압축을 풀 때 파일에 액세스 할 수 있습니다. 어딘가에 설정이 아닌지 다시 확인 했습니까?


세 번째 단락 : 그런 설정을 찾을 수 없으며 지금 추출하고있는 많은 파일 (4G)입니다 .4G가 마침내 천천히 이동했다고 확신합니다.

두 번째 단락 : 압축 된 파일이 이미 손상된 경우 "temp"로 추출해도 아무런 문제가 없습니다.

손상된 zip에서 파일을 볼 수 없습니다. 논리는 모든 것이 확인 될 때까지 아무것도 볼 수 없다는 것입니다. 설정이 진행되는 한, 나는 당신에게 무엇을 말 해야할지 모르겠습니다. 7-zip에 큰 tar 파일을 데스크탑으로 추출하도록 지시하면 파일이 즉시 표시됩니다. tar는 압축 형식이 아니기 때문일 수 있습니다.
커크

> 논리는 모든 것이 확인 될 때까지 아무것도 볼 수 없다는 것입니다. 터무니 없다. 그러면 손상된 아카이브에서 일부 파일을 어떻게 복구합니까? 그것을 경험하지 못하는 이유는 GUI에서 파일을 드래그하는 대신 쉘 확장을 사용했기 때문입니다.
Synetech
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.