
명령을 너무 빨리 작성하는 동안 오류가 발생하여 디렉터리 /dev/sda
에서 파일을 이동하는 대신 "덮어썼습니다"(?). /dev
어떻게 복구할 수 있나요?
또한 정확히 무엇입니까 /dev/sda
? 하드 드라이브/SSD가 마운트된 디렉터리입니까?
답변1
내가 할 때(일반 파일 사용):
echo 1 > source
echo 2 > target
cp -l target target2
mv source target
cat target2
그러면 나는 2
. 이는 에 아무 것도 기록되지 않았음을 의미하며 이름이 바뀌기 target
전에 연결이 해제된 것뿐입니다 source
. I를 사용하면 이전에 존재했더 라도 inode 번호가 유지되는지 ls -i -1
확인할 수 있습니다 .source
target
또 다른 테스트는
mv /dev/urandom /dev/sr0
내 광학 드라이브로 데이터를 보내지 않습니다. /dev/sr0
대신 그 이후에는 /dev/urandom
.
결론은 다음과 같습니다귀하는 /dev/sda
다른 "항목"(원래 이름도 손실됨)으로 대체되었습니다. 시스템이 이러한 장치 파일을 정적으로 유지하는 오래된(또는 특이한) 시스템이 아닌 한 재부팅하면 이 문제가 해결됩니다.
또한 정확히 무엇입니까
/dev/sda
?
(일반적으로) HDD 또는 다른 저장소에 해당하는 특수 파일입니다. Unix는 이러한 리소스를 메이저 번호와 마이너 번호로 식별합니다. 일반적으로 메이저 번호는 장치 드라이버를 식별하고 마이너 번호는 드라이버가 제어하는 특정 장치(여러 장치 중에서)를 식별합니다. 이 숫자를 보려면 를 시도해 보세요 ls -l /dev/sda
. 내 결과는 다음과 같습니다
brw-rw---- 1 root disk 8, 0 Jul 8 00:48 /dev/sda
이 8, 0
조각은 여기서 튜플입니다 <major>, <minor>
.
나는 그것을 썼다/dev/sda
대개mv
귀하의 경우( 이후 ) 이제 이 이름 아래에 다른 항목이 있으므로 HDD에 해당합니다 .
하드 드라이브/SSD가 마운트된 디렉터리입니까?
아니요. 마운트할 때 명령은 다음과 같습니다.
mount /dev/sda /a/directory/to/mount/to/
그래서 이것은 두 가지 다른 것입니다.
(일반적 으로 가 아닌 명령 /dev/sda1
으로 전달되는 것은 다음과 같습니다 . 이는mount
/dev/sda
sda1
으로분할~하는 동안sda
에 해당하는전체 HDD. 파일 시스템은 일반적으로 파티션 내부에 있지만 파티션이 없는 장치에도 파일 시스템이 있을 수 있으므로 위의 명령이 발생할 수 있습니다. 비교하다:단일 파티션 디스크 구성 사용).