df 또는 lsblk의 HDD 크기?

df 또는 lsblk의 HDD 크기?

각 하드디스크와 파티션의 전체 크기, 사용 가능한 크기, 사용된 크기를 알아내는 프로그램을 C++로 작성했다고 합니다. 명령을 사용하여 이 작업을 수행할 수 있습니다.
검색해 보니 크기를 얻는 방법에는 lsblk와 df라는 두 가지 방법이 있습니다. 다음과 같은 이유로 출력 간에 차이가 있다는 것을 알고 있습니다.df로 얻은 결과가 lsblk와 일치하지 않는 이유는 무엇입니까?
그럼 어느 것을 선택해야 할까요? (lsblk에서도 사용 및 freesize를 사용할 수 없습니다.)
저는 ubuntu 18.04를 사용합니다.

답변1

C++ 프로그램을 작성할 때 세 번째와 네 번째 접근 방식을 권장합니다.

  • 에서 전체 파티션 크기를 가져옵니다 /sys/block/sd*/sd*/size.
  • 을 호출하여 사용된 파일 시스템 크기와 사용 가능한 파일 시스템 크기를 가져옵니다 statfs. man statfs자세한 내용은 을 참조하세요. 예, 이는 파티션을 마운트할 때만 작동합니다.

더 빠르고, 출력을 구문 분석할 필요가 없으며, (있을 것 같지 않은) 이벤트에 휘말리거나 출력 형식을 변경하기로 결정할 필요가 df없습니다 .lsblk

관련 정보