Windows

[batch] diskpart 스크립트 활용

채윤아빠 2022. 6. 15. 07:30
728x90
반응형

{{>toc}}

개요

여러 개의 USB 메모리에 Linux OS를 설치하는 반복 작업을 수행해야할 일이 있었습니다.

초기에는 완성된 USB 메모리를 "Win32DiskImager" 등의 유틸리티를 이용하여 디스크 통째로 이미지 파일로 백업 받아 놓은 후에, 그 이미지를 가지고 USB 메모리에 반복적으로 복원하는 작업을 진행했습니다.

그 과정에서 이미 파티션 설정된 USB 메모리에 다시 새로운 이미지를 적용할 때, 기존 파티션을 삭제하고 작업하는 것이 훨씬 안정적이어서, 디스크 관리자에서 두 개의 파티션을 각각 삭제해주는 작업을 해주었었습니다.

매번 반복되는 과정이 단순한데 시간도 걸리고 번거롭기만 하여, 이를 자동화하는 과정에 대해서 정리해 둡니다.

시행착오 과정

초기에는 32GB USB 메모리를 백업 받기 위하서 "Win32DiskImager" 오픈소스 유틸리티를 이용하였습니다. 하지만, 32GB USB 메모리를 백업 받으면 이미지 파일도 32GB 파일이 생성되었고, 단 1GB만 사용하였어도 백업 이미지는 32GB로 생기는 문제가 있었습니다. "Win32DiskImager" 프로그램은 디스크를 1:1로 그대로 복사 백업하는 형식이었기 때문이었습니다.

그래서 디스크를 이미지로 백업해주는 여러 프로그램들 찾다가 디스크의 여유공간은 백업하지 않고, 명령줄로도 백업 및 복원을 수행할 수 있는 프로그램을 찾아, 해당 프로그램으로 백업 및 USB 메모리 복사 작업을 진행하였습니다.

그렇지만, 실제 백업 이미지를 USB 메모리로 복원하기 전에 기존 사용했던 적이 있는 USB 메모리의 경우에는 기존 파티션을 모두 삭제하고 복원하는 것이 안정적으로 동작했습니다.

이를 위하여 "diskpart"라는 명령줄 프로그램을 이용하여 파티션을 자동으로 삭제하고, USB 메모리에 이미지를 적용할 수 있습니다.

diskpart를 이용한 파티션 삭제

다음은 "diskpart" 명령줄 프로그램의 도움말입니다.

C:\Windows\system32>diskpart /?

Microsoft DiskPart 버전 10.0.19041.964
Copyright (C) Microsoft Corporation.
컴퓨터: DESKTOP-98GOHUB

Microsoft DiskPart 구문:
        diskpart [/s <스크립트>] [/?]

        /s <스크립트> - DiskPart 스크립트를 사용합니다.
        /?          - 이 도움말 화면을 표시합니다.

다음은 "diskpart" 명령줄 프로그램을 이용하여 수동으로 파티션을 모두 삭제하는 과정입니다.

C:\Windows\system32>diskpart

Microsoft DiskPart 버전 10.0.19041.964
Copyright (C) Microsoft Corporation.
컴퓨터: DESKTOP-98GOHUB

DISKPART> list disk

  디스크 ###  상태           크기     사용 가능     Dyn  Gpt
  ----------  -------------  -------  ------------  ---  ---
  디스크 0    온라인       1863 GB       1024 KB
  디스크 1    온라인        931 GB       1024 KB
  디스크 2    온라인        238 GB       1024 KB        *
  디스크 3    미디어 없음        0 B           0 B
  디스크 4    온라인         28 GB       3072 KB

DISKPART> select disk 4

4 디스크가 선택한 디스크입니다.

DISKPART> list partition

  파티션 ###  종류              크기     오프셋
  ----------  ----------------  -------  -------
  파티션 1    주                  256 MB  4096 KB
  파티션 2    주                   28 GB   260 MB

DISKPART> clean

DiskPart에서 디스크를 정리했습니다.

DISKPART> list partition

이 디스크에 표시할 파티션이 없습니다.

diskpart 스크립트를 이용한 파티션 삭제

앞에서 살펴본 "diskpart" 명령을 이용하여 수동으로 디스크의 모든 파티션을 삭제하는 과정을 "remove.txt"라는 스크립트로 작성하여 수행할 수 있습니다.

select disk 4
clean

위와 같이 설정한 스크립트를 다음과 같이 호출하여 실행하면 됩니다.

C:\Windows\system32>diskpart /s "D:\remove.txt"

결론

diskpart 명령줄 프로그램에 대하여 살펴 보았습니다.

diskpart 스크립트를 배치 스크립트에 적용하여, 자동으로 디스크의 모든 파티션을 삭제하고 백업 이미지로 복구하는 등의 작업을 일괄로 처리할 수 있습니다.

참고: diskpart 도움말

참고로 "diskpart" 명령줄 프로그램에 대한 도움말입니다.

DISKPART> help

Microsoft DiskPart 버전 10.0.19041.964

ACTIVE      - 선택한 파티션을 활성으로 표시합니다.
ADD         - 단순 볼륨에 미러를 추가합니다.
ASSIGN      - 선택한 볼륨에 드라이브 문자 또는 탑재 지점을 할당합니다.
ATTRIBUTES  - 볼륨 또는 디스크 특성을 조작합니다.
ATTACH      - 가상 디스크 파일을 연결합니다.
AUTOMOUNT   - 기본 볼륨의 자동 탑재를 사용 및 사용 안 함으로 설정합니다.
BREAK       - 미러 집합을 나눕니다.
CLEAN       - 디스크에서 구성 정보 또는 모든 정보를 삭제하고, 디스크를
              닫습니다.
COMPACT     - 파일의 물리적 크기를 줄입니다.
CONVERT     - 서로 다른 디스크 형식으로 변환합니다.
CREATE      - 볼륨, 파티션 또는 가상 디스크를 만듭니다.
DELETE      - 개체를 삭제합니다.
DETAIL      - 개체 정보를 제공합니다.
DETACH      - 가상 디스크 파일을 분리합니다.
EXIT        - DiskPart를 끝냅니다.
EXTEND      - 볼륨을 확장합니다.
EXPAND      - 가상 디스크에서 사용할 수 있는 최대 크기를 확장합니다.
FILESYSTEMS - 볼륨의 지원되는 파일 시스템과 현재 파일 시스템을 표시합니다.
FORMAT      - 볼륨 또는 파티션을 포맷하십시오.
GPT         - 특성을 선택한 GPT 파티션에 할당합니다.
HELP        - 명령 목록을 표시합니다.
IMPORT      - 디스크 그룹을 가져옵니다.
INACTIVE    - 선택한 파티션을 비활성 상태로 표시합니다.
LIST        - 개체 목록을 표시합니다.
MERGE       - 자식 디스크를 부모 디스크와 병합합니다.
ONLINE      - 현재 오프라인으로 표시된 개체를 온라인 상태로 만듭니다.
OFFLINE     - 현재 온라인으로 표시된 개체를 오프라인 상태로 만듭니다.
RECOVER     - 선택한 팩에 있는 모든 디스크의 상태를 새로 고칩니다.
              잘못된 팩에 있는 디스크에 대해 복구를 시도하고
              미러된 볼륨과 부실 플렉스 또는 패리티 데이터가 있는
              RAID5 볼륨을 다시 동기화합니다.
REM         - 아무 작업도 하지 않습니다. 스크립트를 설명하는데 사용됩니다.
REMOVE      - 드라이브 문자 또는 탑재 지점 할당을 제거합니다.
REPAIR      - 실패한 구성원이 있는 RAID-5 볼륨을 복구합니다.
RESCAN      - 디스크 및 볼륨을 다시 검색합니다.
RETAIN      - 단순 볼륨에 보유된 파티션을 만듭니다.
SAN         - 현재 부팅된 OS에 대한 SAN 정책을 표시하거나 설정합니다.
SELECT      - 포커스를 개체로 이동합니다.
SETID       - 파티션 형식을 변경하십시오.
SHRINK      - 선택한 볼륨을 축소합니다.
UNIQUEID    - 디스크의 GPT(GUID 파티션 테이블) 식별자 또는
              MBR(마스터 부트 레코드) 서명을 표시하거나 설정합니다.

참고자료