/ usr을 새로운 파티션으로 옮기는 방법?


26

/usr폴더를 새 파티션으로 옮겨야합니다. 내용을 지우지 않고 어떻게 할 수 있습니까?

Ubuntu가 실행되는 동안이 작업을 수행 할 수 있습니까? 아니면 LiveCD를 사용해야합니까?

답변:


27

라이브 CD를 사용하는 것이 가장 안전하지만 다음을 수행 할 수 있습니다.

  • 모든 파일을 새 파티션에 복사 /usr하여이 작업을 수행하는 동안 내용이 변경되지 않도록하십시오.
  • 다음에 다시 부팅 할 때 마운트 /etc/fstab되도록 편집/usr
  • 재부팅
  • 오래된 파일을 삭제

각 단계에 대한 자세한 내용은 아래를 참조하십시오.

/usr파일이 많이 /usr열리 므로 실행 중에 새 파티션을 마운트 할 수 없습니다 .

파일 복사

사용 cp -a합니다. -a보관 옵션입니다. 로부터 man 페이지 :

-a, --archive
          same as -dR --preserve=all
...
-d     same as --no-dereference --preserve=links
...
-P, --no-dereference
          never follow symbolic links in SOURCE
...
--preserve[=ATTR_LIST]
          preserve      the      specified      attributes       (default:
          mode,ownership,timestamps),  if  possible additional attributes:
          context, links, xattr, all
...
-R, -r, --recursive
          copy directories recursively

/ etc / fstab 편집

새 파티션의 UUID를 알아야합니다. 다음을 수행하여 맵핑을 볼 수 있습니다.

$ ls -l /dev/disk/by-uuid/

그런 다음이 줄을 다음에 추가하십시오 /etc/fstab.

UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2

UUID를 UUID로 변경하고 사용 ext4중인 파일 시스템 유형으로 변경 하십시오. 파티션을 설정 한 경우이를 알아야합니다.

기존 파일 삭제

다시 부팅 한 후 /usr루트 파티션에 있는 이전 파일은 에 마운트 된 새 파티션에 의해 숨겨집니다 /usr. 그러나 일부 마운트 바인드 속임수 를 사용 하여 이전 파일을 찾은 다음 삭제할 수 있습니다.

$ sudo mount --bind / /mnt
$ sudo rm -rf /mnt/usr/*
$ sudo umount /mnt

그러나 약간의 오해 (예 : 입력 만하면 Enter 키를 치면 sudo rm -rf /mnt)가 재앙을 일으킬 수 있으므로 수행중인 작업에 대해 매우 확신이 있거나 실제로 중단 시간을 처리 할 수 ​​없거나 머신에 물리적으로 액세스하여 라이브 CD 또는 라이브 USB 스틱을 부팅 할 수 없었습니다.


4
rsync훨씬 더보다이 적합cp
마르코 Ceppi

1
@MarcoCeppi 당신은 그것을 확장 할 수 있습니까? 어쩌면 rsync대신 사용하는 변형 답변을 줄 수 있습니까?
Kazark

6
cp 명령을로 바꿉니다 rsync -avz. Rsync를 사용하면 복사본을 다시 시작할 수 있으며 일반적으로 파티션, 블록 장치 또는 시스템간에 이동할 때 사용해야합니다.
마르코 세피

2
사용하지 마십시오 cp. 하드 링크는 유지되지 않습니다. 이 중단됩니다 미래에 패키지 업그레이드. 예를 들어 /usr/bin/s2p/usr/bin/psed같은 파일입니다. 로 이동하면 cp해당 파일의 독립 버전 2 개가 생성됩니다. 수행 rsync -aH하는 대신.
oᴉɹǝɥɔ

1
우선, -z 플래그를 건너 뛰십시오-압축을 가능하게합니다. 네트워크를 통해 파일을 보내지 않으면 주어진 오버 헤드는 쓸모없는 오버 헤드입니다 (rsync가 일반적으로 무시할만큼 똑똑하지만 여전히 떨어 뜨릴 수는 있음) . @ AleksandarStefanović 당신은 확실히,이 내용을 싶지 폴더, 그리고이 일어난 이유는 방법은 몇 가지 rsync를 쿼크로 인해 난 것이 취급 rsync -avH a/ b다르게 rsync -avH a b복사, 내용 폴더 a(인, a/*첫 번째 경우에)와 폴더 자체를 두 번째. 여기에 슬래시를 사용하십시오.
Darael

7

사용되는 대부분의 라이브러리는 / usr에 있으므로 Ubuntu를 실행하는 동안이 디렉토리를 이동하지 않는 것이 좋습니다. 실제로이 작업을 시도 할 때 오류 메시지가 표시 될 수 있습니다. 따라서 LiveCD를 사용하는 것이 가장 좋습니다.

몇 가지 가능성을 사용하여 파일 cp, rsync 등을 이동 / 복사 할 수 있습니다. 심볼 링크가 만들어지고 복사되지 않도록하십시오. cp와 rsync에는이 옵션이 있습니다.

파일을 다른 파티션으로 옮긴 후 / etc / fstab에 다른 마운트를 추가하여 새 파티션을 / usr에 마운트해야합니다.


2

주의 : 내가하고있는 일을 모르겠습니다. 명령을 복사하고 다른 사람들이 제안한대로하고 있습니다. 이것은 잘못된 방법 일 수 있지만 적어도 지금은 작동합니다.

이것이 내가 한 방법입니다 (Hamish의 답변과 의견에 따름).

  1. 새로 만든 파티션의 모든 파일을 복사합니다 (파티션의 위치로 바꾸십시오. 내 것과 비슷해야합니다).

    rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c 
    
  2. 이 시점에서 모든 것이 /usr파티션 의 폴더에 복사 되어 작동하지 않는다는 것을 깨달았습니다. . 그래서 파일 관리자와 함께 모든 폴더를 해당 폴더에서 파티션의 루트로 복사하고 비어있는 것을 삭제했습니다. 나중에 폴더.

  3. 편집 /etc/fstab(물론 UUID로 바꾸는 Hamish의 답변과 동일)

    UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2
    
  4. 현명하지 않은 단계 : 현재 마운트 된 /usr파티션 의 이름을로 변경했습니다 /usrBACKUP. 시스템을 재부팅 할 때 실제로는 이전 파티션이 아닌 새로 생성 된 파티션으로 재부팅한다는 것을 알았습니다. . 그 후, 모든 것이 화면에 반짝이고 전원 키를 길게 눌러 전원을 꺼야했습니다 (천재) . 시스템을 고장 나지 않으려면이 단계를 건너 뛰십시오.

  5. 시스템을 재부팅

  6. 다시 부팅 한 후 시스템 모니터 또는 이와 유사한 응용 프로그램을 열어 새 /usr파티션이 마운트되었는지 확인하고 모든 것이 계획대로 진행되었는지 확인하십시오.

  7. 모든 것이 정상인지 확인한 후 이전 /usr파티션을 삭제할 수 있습니다 . 뭔가 잘못 될 경우를 대비하여 내 것을 유지하겠습니다.


이미 수락 된 답변이 있고 자신이 무슨 말을하는지 모르는 경우 5 살짜리 질문에 대답하는 이유는 무엇입니까?
cmks

2
다른 답변이 불완전하다고 생각했기 때문에 @cmks-한 답변에서 완전한 해결책을 얻지 못했으며 답변에 대한 세부 정보가 충분하지 않았습니다. 이 질문을하는 사용자는 도움이 필요할 것 같습니다. 누군가 가이 질문의 정보를 여전히 필요로하는 경우 5 세인지는 중요하지 않습니다.
Aleksandar Stefanović

1
왜 모두가 시스템을 재부팅합니까? sudo mount -a계속 작동하도록 허용 해서는 안 됩니까?
Hagen von Eitzen

@Hagen 난 그냥 좋은 측정을위한 같아요
알렉산다르 Stefanović
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.