Linux 홈 디렉토리를 다른 드라이브로 이동하는 방법

리눅스 환경에서 홈 폴더를 다른 드라이브로 옮기고 싶으신가요? 여기, 어떤 배포판에서도 적용 가능한 쉽고 상세한 안내를 제공합니다. 홈 폴더를 이동하면 리눅스를 재설치할 때 개인 파일 손실에 대한 걱정 없이 작업할 수 있습니다.

홈 폴더를 분리하여 관리하는 이유

새 컴퓨터를 설정하거나 기존 시스템에 추가 하드 드라이브를 장착하는 경우, 홈 디렉터리를 기본 위치가 아닌 다른 드라이브에 저장하고 싶을 수 있습니다.

최근 개인용 컴퓨터에서는 운영 체제는 중간 크기의 SSD(솔리드 스테이트 드라이브)에, 데이터는 대용량 SSD 또는 기존 HDD(하드 디스크 드라이브)에 저장하는 방식이 선호됩니다. 혹은, 시스템에 기존 하드 드라이브 외에 저장 공간 확장을 위해 새 HDD를 추가했을 수도 있습니다. 어떤 이유든, 홈 디렉터리를 손쉽게 이동하는 방법을 소개합니다.

참고로, 리눅스 시스템을 처음부터 설치할 때, 리눅스 배포판 설치 프로그램에서 홈 디렉터리를 별도로 설정하는 옵션을 제공합니다. 파티션 설정에서 별도 파티션을 생성하고 이를 “/home”에 마운트하면 됩니다. 하지만 이미 리눅스 배포판을 설치한 경우에도, 아래 안내에 따라 운영체제 재설치 없이 현재 홈 디렉터리를 새로운 위치로 옮길 수 있습니다.

시작하기 전에 반드시 백업을 먼저 진행하세요.

새 드라이브 식별하기

리눅스 컴퓨터에 새 드라이브를 장착했거나, 다중 드라이브 컴퓨터의 한 드라이브에 리눅스를 설치하고 재부팅했다면, 새 드라이브의 존재를 바로 알아차리기는 어려울 수 있습니다.

fdisk 명령은 드라이브와 파티션을 나열해줍니다.

sudo fdisk -l

출력 결과를 스크롤하여 새 드라이브를 찾습니다. 첫 번째 드라이브 이름은 /dev/sda, 두 번째는 /dev/sdb 등으로 마지막 문자가 순차적으로 증가합니다. 따라서 /dev/sde는 다섯 번째 하드 드라이브가 됩니다.

이 예시에서는, 새 드라이브가 시스템에 장착된 두 번째 드라이브입니다. 즉, /dev/sdb 항목을 찾아야 합니다.

위 이미지에서 /dev/sdb가 강조 표시되어 있습니다. 파티션을 설명하는 줄이 없는데, 이는 새 드라이브이므로 아직 파티션이 생성되지 않았기 때문입니다. 이제 파티션을 만들어야 합니다. fdisk 명령을 사용하여 이를 수행할 수 있습니다. 만약 하드 드라이브가 /dev/sdb가 아니라면, 명령에서 /dev/sdb를 새 하드 드라이브의 실제 식별자로 대체해야 합니다.

sudo fdisk /dev/sdb

fdisk가 명령 프롬프트를 표시하면, p 키를 누릅니다. 그러면 하드 드라이브의 파티션 테이블이 출력됩니다. 아직 파티션이 없다는 것을 알고 있지만, 드라이브 정보를 확인하는 데 유용합니다. 작업하려는 드라이브가 맞는지 다시 확인할 수 있습니다.

드라이브가 1TB 드라이브로, 예상과 일치하므로 계속 진행하겠습니다.

파티션 생성

새 파티션을 만들려면 n 키를 누르고, 주 파티션의 경우 p 키를 누릅니다. 파티션 번호를 묻는 메시지가 나타나면, 1을 입력합니다.

전체 디스크에 단일 파티션을 만들 것이므로, 첫 번째 섹터를 묻는 메시지가 표시되면 Enter 키를 눌러 기본값을 적용할 수 있습니다. 마찬가지로, 마지막 섹터를 묻는 메시지에도 Enter 키를 눌러 기본값을 적용합니다.

fdisk는 1TB 크기의 파티션 1이 생성되었음을 확인하지만, 아직 하드 드라이브에 변경 사항이 적용된 것은 아닙니다. 변경 사항을 드라이브에 기록하라는 명령을 fdisk에 전달해야 드라이브가 변경됩니다. 선택 사항에 만족하면, w 키를 눌러 변경 사항을 드라이브에 기록합니다.

파티션이 /dev/sdb에 기록되었습니다. 변경 사항을 다시 확인해 보겠습니다. /dev/sdb에서 fdisk를 다시 사용합니다.

sudo fdisk /dev/sdb

p 키를 눌러 파티션 테이블을 출력하면, 이제 드라이브에 파티션이 나열되는 것을 볼 수 있습니다. 이 드라이브의 첫 번째 파티션이므로 /dev/sdb1이라고 합니다. 두 번째 파티션은 /dev/sdb2 등으로 이름이 지정됩니다.

파티션을 더 이상 변경할 필요가 없으므로 q 키를 눌러 종료합니다.

파티션에 파일 시스템 생성

이제 파티션에 파일 시스템을 생성해야 합니다. 이는 mkfs 명령을 사용하여 쉽게 수행할 수 있습니다. 명령에서 파티션 번호를 포함해야 합니다. 드라이브인 /dev/sdb가 아닌, 파티션인 /dev/sdb1을 입력해야 합니다.

sudo mkfs -t ext4 /dev/sdb1

파일 시스템이 생성되고 명령 프롬프트로 돌아갑니다.

새 드라이브 마운트

새 드라이브를 사용하려면, 파티션을 파일 시스템 트리의 마운트 지점에 마운트해야 합니다. 정확히 말하면, 드라이브나 파티션을 마운트하는 것이 아니라, 파티션의 파일 시스템을 마운트하는 것입니다. 즉, 파티션 파일 시스템을 시스템 파일 시스템 트리에 연결하는 것입니다.

/mnt 지점은 어디든 사용하기 좋은 임시 마운트 지점입니다. 여기서는 새 드라이브에 데이터를 복사하는 데 사용할 것입니다. mount 명령어를 사용하여 /dev/sdb의 첫 번째 파티션에 있는 파일 시스템을 /mnt에 마운트하겠습니다.

sudo mount /dev/sdb1 /mnt

성공적으로 마운트되었다면, 오류 메시지 없이 명령줄로 돌아옵니다. 이제 새로 마운트된 파일 시스템으로 디렉토리를 변경할 수 있는지 확인해 보겠습니다.

cd /mnt

성공적으로 변경되었습니다. 이제 여기 안에 어떤 내용이 있는지 확인해 봅시다.

ls -ahl

새 파일 시스템에 들어왔습니다. 기본 디렉토리인 “lost+found”는 필요 없으므로 제거할 수 있습니다.

sudo rm -rf lost+found

홈 폴더 복사

이제 이전 홈 디렉터리의 모든 내용을 새로 마운트된 파일 시스템으로 복사해야 합니다. r (재귀) 및 p (보존) 옵션을 사용하면 모든 하위 디렉토리가 복사되며, 파일 소유권, 권한 및 기타 속성이 유지됩니다.

sudo cp -rp /home/* /mnt

복사가 완료되면 ls 명령을 사용하여 새 파일 시스템에 데이터가 제대로 복사되었는지 확인합니다. 즉, /mnt가 홈 디렉터리라면, 모든 데이터가 정상적으로 존재하는지 확인합니다.

ls
ls dave

이 테스트 시스템보다 더 꼼꼼하게 확인하고 싶을 것입니다. 안전을 위해, 이전 /home 디렉터리의 이름을 변경하고 유지하여 필요할 때 삭제할 수 있도록 하겠습니다.

sudo mv /home /home.orig

이제 비어 있는 새 홈 디렉터리를 생성합니다.

sudo mkdir /home

이제 새 하드 드라이브의 파일 시스템을 이 새로운 빈 홈 디렉터리에 마운트합니다. /mnt에서 마운트 해제하고 /home에 다시 마운트해야 합니다. umount 명령은 “unmount”의 줄임말입니다.

sudo umount /dev/sdb1
sudo mount /dev/sdb1 /home/

새 홈 디렉터리 테스트

이제 /dev/sdb1 파티션의 속성을 확인해 봅시다.

df /dev/sdb1

파일 시스템 이름, 파티션 크기, 사용량과 가용 공간 및 마운트 위치가 표시됩니다. 마운트 위치는 이제 /home 디렉터리입니다. 이는 이전 /home 디렉터리처럼 동일하게 접근할 수 있다는 것을 의미합니다.

파일 시스템의 임의 위치로 이동한 다음, ~ 물결표 단축키를 사용하여 /home으로 다시 이동할 수 있는지 확인합니다.

cd /
cd ~
pwd
ls

cd /home
ls
cd dave
ls
ls -a

명시적 명령과 ~ 단축키를 사용하여 파일 시스템을 /home으로 앞뒤로 이동할 수 있습니다. 모든 예상 폴더, 파일 및 숨김 파일(.으로 시작하는 파일)이 있습니다. 모든 것이 정상으로 보입니다.

누락된 항목이 있다면, 파일 시스템 루트에 위치한 /home.orig 디렉토리에서 가져올 수 있습니다. 하지만 모든 것이 제대로 복사된 것으로 보입니다.

이제 컴퓨터를 시작할 때마다 /dev/sdb1이 자동으로 마운트되도록 설정해야 합니다.

fstab 편집

“fstab” 파일에는 시스템이 부팅될 때 마운트해야 하는 파일 시스템에 대한 정보가 저장되어 있습니다. 수정하기 전에 문제가 발생했을 경우를 대비하여 백업 파일을 생성합니다.

sudo cp /etc/fstab /etc/fstab.orig

이제 fstab 파일을 편집합니다.

sudo gedit /etc/fstab

새로운 /home 디렉토리를 마운트하려면 파일 맨 아래에 다음 형식으로 새로운 행을 추가해야 합니다. 드라이브 및 파티션 식별자가 예시와 다른 경우, /dev/sdb1을 실제 식별자로 변경하십시오.

새 행의 시작 부분에 파티션 이름을 입력하고 Tab 키를 누릅니다.
마운트 지점인 /home을 입력하고 Tab 키를 누릅니다.
파일 시스템 형식인 ext4를 입력하고 Tab 키를 누릅니다.
마운트 옵션 기본값인 defaults를 입력하고 Tab 키를 누릅니다.
파일 시스템 덤프 옵션에 0을 입력하고 Tab 키를 누릅니다.
파일 시스템 검사 옵션에 0을 입력합니다.

fstab 파일을 저장합니다.

시스템 재부팅

계획대로 진행되었는지, 그리고 새 /home 디렉터리가 원활하게 연결되었는지 확인하려면 시스템을 재부팅해야 합니다.

문제가 발생하더라도, 이전 /home 디렉터리와 fstab 파일의 백업본이 있으므로, 원래 상태로 쉽게 되돌릴 수 있습니다. 즉, 시스템을 시작하기 전 상태로 복원할 수 있다는 의미입니다.

sudo reboot now

최종 점검

시스템이 재시작되면, /home 디렉터리가 실제로 새 하드 드라이브에 있고, 시스템이 이전 /home 디렉터리를 사용하지 않는지 확인해 봅시다.

df /dev/sdb1

정상적으로 /home에 마운트되었습니다. 미션 성공!

이제 이전 /home 디렉토리의 백업본이 더 이상 필요하지 않다고 확신이 들면, 제거해도 됩니다.

cd /
sudo rm -rf home.orig/

물론, 이전 /home 디렉터리에서 새 /home 디렉터리로 복사되지 않은 항목이 있다면, 시작하기 전에 생성했던 백업본에서 해당 항목들을 가져올 수 있습니다.

내 집이 최고!

이제 /home 디렉터리가 운영 체제 파티션과 분리되었으므로, 운영 체제를 재설치해도 데이터는 안전합니다. 시스템을 재설치한 후에는 fstab 파일을 수정하여 /home에 새 드라이브를 다시 마운트하기만 하면 됩니다.

또한 모든 설정 파일들이 /home 디렉터리에 있으므로, 다양한 응용 프로그램을 실행할 때 모든 설정, 기본 설정 및 데이터를 찾을 수 있습니다.

이제 재설치의 고통과 업그레이드의 위험에서 벗어나십시오.