Linux 도구를 사용하여 NTFS 폴더를 압축하는 방법

Linux 도구를 사용하여 NTFS 폴더를 압축하는 방법

문제가 생겼습니다. Windows 7 C:\Windows\winsxs폴더가 매우 커지고(20GB), 탐색기 내장 도구(폴더 속성 -> 고급 -> 압축)를 사용하여 압축하고 싶지만 Windows는 실제로 Windows에서 그 Winsxs 파일은 다음과 같은 특수 사용자에 의해 보호되기 때문에 그렇게 하는 것을 허용하지 마십시오.신뢰할 수 있는 설치 프로그램. 그래서 저는 리눅스에서 하고 싶습니다. 인터넷 검색을 해보면 ntfs-3g에 대한 힌트가 나오는데, NTFS 폴더 압축을 하는 구체적인 예제를 찾을 수 없어서 여기에 여쭤보고 싶습니다.

Knoppix Linux로 부팅하고 Windows C: 파티션이 에 마운트되었다고 가정 /mnt/winc하면 목표를 달성하려면 어떤 명령을 사용해야 합니까?

아니면 Linux 환경 없이도 할 수 있는 방법이 있나요?

답변1

이는 Linux 없이도 가능하며 저는 항상 새 설치를 생성한 후에 수행합니다. 방금 압축 후 4.6GB가 된 Windows 10 Enterprise 21H2 설치로 이 작업을 수행했습니다.

제가 하는 방법은 설치를 완료한 다음 설치 미디어(USB 스틱 또는 DVD)로 다시 재부팅하는 것입니다. 로드된 후에는 설치 프로그램에서 사용할 수 있게 되기 전에 드라이버가 필요한 드라이브를 압축하려는 경우가 아니면 실제 설치 대화 상자를 진행할 필요가 없습니다. 그렇게 하면 초기 설치 중에 이미 수동으로 제공했기 때문에 알게 될 것입니다. 이해가 되지 않는다면 이 부분을 무시하고 다음 단락으로 건너뛰세요. 이 작업을 수행해야 하는 경우 드라이버를 로드해야 하는 설치할 파티션을 선택할 때까지 설치 단계를 계속 진행하세요.

두 경우 모두 키를 눌러 Shift+F10명령 프롬프트를 불러옵니다. 이제 어떤 드라이브가 설치 드라이브인지 알아보세요. 아마도 C:가 아닐 것입니다. 설치 프로그램 드라이브일 가능성이 높기 때문입니다. 첫 번째 드라이브부터 시작하여 올바른 드라이브를 찾을 때까지 해당 내용을 나열해야 합니다. 즉, 입력 C:하고 입력한 다음 dir입력하고 출력을 검사합니다. 그런 다음 찾을 때까지 , 등을 D:계속 진행합니다 . E:찾고 있는 드라이브에는 "사용자", "Windows" 및 "프로그램 파일" 폴더 등이 있으며, 컴퓨터에 Windows가 두 개 이상 설치되어 있는 경우 보고된 여유 공간을 확인할 수 있습니다. 그것이 어느 것인지 추측하기 위해 운전하십시오. 최근 설치에서 Windows 드라이브는 F 드라이브였습니다.

드라이브를 결정한 후에는 compact.exe드라이브를 압축하는 데 사용할 수 있습니다. 안전하지 않은 파일을 실수로 압축하는 것에 대해 걱정할 필요가 없습니다 compact. 이 문제는 자동으로 처리되므로 걱정할 필요가 없습니다. 예를 들어 부트로더나 페이지 파일은 압축하지 않습니다. 이제 공간을 덜 절약하는 가장 빠른 방법은 탐색기를 사용하는 것과 동일합니다(이 명령 프롬프트에서는 압축할 수 있는 모든 파일을 압축한다는 점만 제외). 압축하려는 드라이브(최근 사례에서는 F:)로 이동했는지 확인하고 다음을 입력하세요.

compact /c /i /s:\

/c그냥 압축을 의미합니다. /i오류를 무시하는 것입니다. 오류가 발생합니다. 예를 들어 Documents and SettingsWindows 10은 실제로 폴더가 아니고 Users. /i이 없으면 compact이러한 오류가 발생하면 중지됩니다. /s:\이는 디렉터리 \(현재 위치, 즉 드라이브의 루트)에 있는 모든 것과 그 안에 있는 모든 하위 디렉터리를 처리한다는 의미입니다.

앞서 언급했듯이 이 방법은 Explorer에서와 동일하게 작동합니다. 단, 해당 파일에 액세스할 수 없거나 사용 중이기 때문에 Explorer에서 압축할 수 없는 더 많은 파일을 압축한다는 점만 다릅니다. 현재 설치에서는 압축률이 1.7:1이 되었습니다.

그러나 공간 절약을 통해 좀 더 극단적으로 가고 싶다면 한 번 읽고 자주 쓰는 유형의 파일, 일반적으로 실행 파일(예: ) 에 대해 보다 효율적인 압축을 사용하도록 /exe지시하는 플래그가 있습니다. 이름. 압축됩니다compactexplorer.exe모두하지만 선택한 알고리즘을 사용하면 실행 파일뿐만 아니라 모든 파일의 공간이 절약됩니다. 가장 효율적인 알고리즘은 lzx설치에 적용했을 때 2.4:1의 압축 비율을 산출한 것입니다(실제로 2.7:1이라고 말하고 싶지만 잘 기억나지 않지만 기본값보다 훨씬 더 효율적입니다). 하지만 두 번의 실행이 필요합니다.

compact /c /i /f /exe:lzx /s:\

그런 다음:

compact /c /i /s:\

좋아요, 그렇다면 왜 두 번 실행하는지 물어볼 수도 있습니다. 그 이유는 플래그를 사용할 때 NTFS가 기본적으로 적용되지 않는 비표준 압축 알고리즘을 사용하도록 /exe지정하기 때문입니다. 이를 사용하여 압축하려면 이 명령을 실행해야 합니다. compact따라서 확장에 따라 를 사용하여 새 파일을 자동으로 압축할 수 없기 때문에 폴더를 압축된 것으로 표시하는 것을 거부합니다. 따라서 lzx첫 번째 compact명령은 드라이브의 모든 파일을 매우 효율적으로 압축하지만 모든 폴더에는 압축 플래그가 없습니다. 이는 새 파일이나 변경된 파일을 의미합니다. 압축되지도 않습니다.

플래그가 추가로 추가되었습니다 /f. 드라이브에 이미 일부 압축 파일이 있는 경우(문서 폴더 등을 압축했을 수 있음) 이미 압축된 파일이 알고리즘을 통해 다시 압축됩니다 lzx.

두 번째 명령은 기본적으로 첫 번째 명령과 동일하지만 이미 압축된 항목을 강제로 압축하는 데 사용하지 않기 때문에 /f여기서 효과는 방금 압축한 모든 파일을 건너뛰는 것입니다 lzx. 하지만 모든 폴더를 압축됨으로 표시하면 향후 새 파일과 수정된 파일도 자동으로 압축됩니다.

즉, 첫 번째 명령은 모든 파일을 매우 효율적으로 압축하고, 두 번째 명령은 모든 폴더를 압축된 것으로 표시하므로 향후 파일도 압축됩니다.

우선 이러한 유형의 압축은 모든 NTFS 구현에서 지원되지는 않습니다. 예를 들어, 내 Linux Mint 20.2 라이브 스틱에서는 이와 같이 압축된 파일을 전혀 읽을 수 없습니다. AFAICT, 최신 버전의 오픈 소스 ntfs-3g드라이버에 대한 읽기 지원이 있지만 배포판에서는 아직 액세스하지 못할 수도 있습니다. 새로운 ntfs3기본 Linux 드라이버가 이를 지원하는지 여부도 모르겠습니다 . Microsoft 측에서는 Windows 10 이상만 사용할 수 있는 것으로 나타나므로 예를 들어 Windows 7 또는 8에서는 해당 드라이브를 읽지 못할 수도 있습니다. 둘째, Windows는 이러한 보다 효율적인 알고리즘을 사용하여 새 파일과 수정된 파일을 자동으로 압축하지 않으므로 나중에 수정되는 모든 압축 파일은 덜 효율적인 기본 알고리즘을 사용하여 다시 압축된다는 점을 기억하십시오. 하지만 Windows 10 또는 Windows 11을 사용하는 경우 모든 것이 작동합니다. 고려해 볼 가치가 있습니다.

도움이 되었기를 바랍니다 :)

추신: 물론 이 작업은 기존 설치에서 언제든지 수행할 수 있습니다. 새로 설치한 후 즉시 수행하는 것이 습관이 되었기 때문에 여기서는 새 설치에 대해 언급하는 것뿐입니다.

편집: 이 새로운 시스템 설정을 마친 후 약간의 업데이트가 이루어졌으며 이제 BitLocker를 활성화하기 전에 Windows 설치 프로그램에서 이 모든 것을 다시 실행했습니다. 여기서도 방법은 먼저 사용한 /lzx:exe다음 두 번째 실행을 수행하여 모든 폴더에도 압축을 표시하는 것입니다. 이것은 훌륭하게 작동합니다(압축 후 시스템 드라이브에 4GB를 추가로 절약했습니다(Linux로 파일 시스템을 수정할 수 있기를 원했기 때문에 먼저 기본 압축 알고리즘을 사용했기 때문에 이는 기본 압축 알고리즘에 비해 4GB를 추가로 절약한 것입니다). )), 그러나 Windows 탐색기에서 많은 파일이 압축된 것처럼 보이지 않는 것을 발견하고 나서 혼란스러웠습니다. 즉, 색상이 지정되지 않았습니다(보기 설정에서 "암호화되거나 압축된 NTFS 파일을 색상으로 표시"를 활성화했는데 많은 파일이 파란색이 아니었습니다). 관리 명령 프롬프트에서 장난을 쳤는데 compact이를 변경할 수 없었습니다. 그런 다음 이것이 실제로는 전형적인 Microsoft의 무능함이라는 것을 발견했습니다. Windows 탐색기는 이러한 새로운 EXE압축 알고리즘을 자체적으로 이해하지 못하므로 파일을 파란색으로 표시하지 않으며 해당 속성을 확인하면 해당 속성에 확인 표시도 없습니다. 고급 아래의 압축 상자. 그러나 일반 크기와 디스크 크기의 올바른 크기가 표시되므로 "사용된 공간" 수치는 더 낮아집니다. 여부스! XD

답변2

단계는 다음과 같습니다.

  1. 압축할 디렉터리 표시
  2. 파일을 임시 위치로 이동
  3. cp -a압축을 트리거하기 위해 파일을 원래 대상으로 되돌립니다.

(기본적으로 ntfs-3g는마운트 옵션compression.)


# Mark a directory for compression
setfattr -h -v 0x00000800 -n system.ntfs_attrib_be directory-name

# On small-endian computers when above is not possible
setfattr -h -v 0x00080000 -n system.ntfs_attrib directory-name

하지만 주의 사항에 유의하세요(NTFS-3g페이지):

마운트 옵션을 compression설정하면 압축 대상 디렉터리에 생성된 파일이 압축되어 생성된다. 동일한 볼륨의 일반 디렉터리로 이동(이름 변경을 통해)될 때 압축된 상태로 유지되며, 이동된 후에 추가된 데이터는 압축됩니다. 반대로 압축 표시가 되기 전에 디렉터리에 있던 파일과 압축 표시가 되지 않은 디렉터리에서 이동된 파일은 압축되지 않습니다. 압축된 파일을 복사하면 항상 압축이 풀립니다. 대상 디렉터리가 압축 대상으로 표시된 경우 다시 압축하기 위한 것입니다.


-C새 볼륨의 경우 의 옵션을 확인하세요 mkfs.ntfs.

관련 정보