/var를 새 파티션으로 이동하려고 했지만 데이터가 사라졌습니다.

/var를 새 파티션으로 이동하려고 했지만 데이터가 사라졌습니다.

/var 폴더를 새 파티션으로 이동하려고 했습니다. 저는 Debian 10.7을 사용하고 있고 8GB 프로세서를 가지고 있어서 공간을 절약하고 싶습니다. 여러 가지 방법을 시도했지만 일부 데이터가 항상 사라지는 것 같습니다. 내가 시도한 것은 다음과 같습니다.

  1. 새 파티션 /dev/sda7 만들기
  2. /etc/fstab의 /mnt/newvar에 /dev/sda7을 마운트합니다.
  3. 단일 사용자 모드로 부팅
  4. 마운트/-rw -o 다시 마운트
  5. cp -arpPv /var/* /mnt/newvar(/mnt/newvar 폴더를 확인했을 때 /var 폴더와 크기가 동일했기 때문에 복사본이 제대로 작동하고 모든 폴더가 거기에 있는 것 같았습니다)
  6. mv /var /var.old
  7. mkdir /var
  8. /etc/fstab을 편집하고 /var에 /dev/sda7을 마운트합니다.
  9. 시스템을 다시 시작하세요

시스템 부팅 시 /var에 있는 여러 폴더가 보이지 않지만, 복구 USB로 부팅하면 거기에서 /var에 있는 폴더를 모두 볼 수 있습니다. /mnt/newvar 폴더를 삭제할 수 있나요? 그리고 /var.old 폴더? 이렇게 하면 볼 수 없는 폴더/파일이 영구적으로 손실되는 것 같습니다. 시스템의 나머지 부분을 읽기 전용으로 만들고 공간을 절약하기 위해 이 폴더를 새 파티션으로 옮기고 싶습니다. 이전 폴더를 삭제할 수 없는 경우 다른 파티션을 사용해도 큰 도움이 되지 않습니다. 일부 폴더가 표시되지 않는 이유와 영구 데이터 손실을 방지하는 방법을 알려줄 수 있는 사람이 있습니까?

답변1

에서 심볼릭 링크를 확인할 수 있나요 /var? 어떤 경우에는 이러한 링크의 대상이 특정 디렉터리 경로가 아니라 상대 경로이기 때문입니다.

예를 들어 /var/run/를 가리키는 경우 /run/이는 의 /run디렉토리 이지만 /링크 대상 ../run/은 링크의 상위 디렉토리에 있는 디렉토리이고 run상위 디렉토리는 그대로 유지됩니다 root.

/var/그러나 이는 또한 에 복사하면 /mnt/newvar/시스템이 링크가 가리키는 디렉토리를 발견할 때 이름이 지정된 상위 디렉토리를 찾게 된다는 의미이기도 합니다 run.newvar//mnt../run/

즉, 복사와 관련된 모든 것이 /var이상한 동작을 유발할 수 있으므로 내 솔루션을 제안합니다. /var설치할 때 원하는 파티션에 직접 설치하십시오. 결과적으로 /etc/fstab다음과 같이 보일 수 있습니다.

UUID=xxx /var            ext4    defaults        0       2

xxx는 원하는 파티션의 UUID이며, 명령을 사용하여 검색할 수 있습니다 blkid.

답변2

/var디렉토리에는 여러 기호 링크가 포함되어 있습니다.

  1. /var/lock/->/run/lock/

  2. /var/run/ ->/run/

cp명령이 심볼릭 링크를 복사하는 것 같지 않습니다 .

어쩌면 다시 만들어야 할까요?

며칠 동안 문제 없이 작동할 때까지는 이전 /var 데이터를 삭제하지 않을 것입니다.

관련 정보