mv
명령을 사용하여 폴더 이름을 180GB로 바꾸는 것이 위험 합니까?
/data
180GB가 포함 된 폴더 가 있습니다.
명령 /data
을 /BD_FILES
사용하여 폴더의 이름을 바꾸려고합니다 mv
.
그렇게하는 것이 안전한가요?
mv
명령을 사용하여 폴더 이름을 180GB로 바꾸는 것이 위험 합니까?
/data
180GB가 포함 된 폴더 가 있습니다.
명령 /data
을 /BD_FILES
사용하여 폴더의 이름을 바꾸려고합니다 mv
.
그렇게하는 것이 안전한가요?
답변:
동일한 파일 시스템 내에 있으면 폴더의 이름을 변경해도 안전합니다.
마운트 포인트 인 경우 ( /data
내가 마운트 포인트 일 수있는 것처럼 보이면 이것을 사용하여 확인하십시오 mount
) 데이터를 루트 파티션으로 이동하기 mv
때문에 단순한 것 이외의 작업을 수행해야 mv /data /BD_FILES
합니다 ( 당신이 일어나고 싶어).
파일 시스템을 마운트 해제하고 지금 비어있는 디렉토리 /etc/fstab
의 이름을 바꾸고이 파일 시스템의 새 위치로 업데이트 한 다음 이름이 바뀐 위치에서 파일 시스템을 다시 마운트해야합니다.
다시 말해,
umount /data
mv /data /BD_FILES
( /BD_FILES
이 경우에는 존재하지 않는다고 가정하면 먼저 이동하십시오)/etc/fstab
, 마운트 지점을에서 /data
로 변경/BD_FILES
mount /BD_FILES
여기에는 파일 복사가 필요하지 않으며 파일 시스템의 마운트 지점 역할을하는 디렉토리 이름 만 변경됩니다.
디렉토리 이름을 바꾸는 데 디렉토리를 새 파일 시스템으로 옮기는 경우 (예 /data
를 들어 한 디스크에있는 동안 /BD_FILES
다른 디스크에있는 경우 더 큰 파티션으로 이동하는 경우 일반적으로 수행) 복사가 정상인지 확인할 수있을 때까지 원본을 그대로두고 데이터를 복사하는 것이 좋습니다. 당신은 이것을 할 수 있습니다
rsync -a /data/ /BD_FILES/
예를 들어, rsync
이 작업과 수행하지 않은 작업에 대한 설명서를 참조하십시오 (예 : 하드 링크를 유지하지 않음).
폴더 이름이 바뀌면 기존 절차 (폴더를 사용하는 프로그램 및 사용자, 백업 등)가 이름 변경을 인식하고 있는지 확인해야합니다.
mv
단지 할 수있는 rename
시스템 호출,하지만 사정에 하나가 파일을 복사하고 원본을 삭제하는 것입니다 실현되지 않았습니다. 내가 확실히 rename
시스템 호출을하고 mv
내 뒤에 "영리한"무언가를하지 않을 것이라고 확신 할 필요가 있다면 나는 파이썬 쉘을 열고 사용한다 os.rename
.
mkdir /BD_FILES && mount -M /data /BD_FILES && rmdir /data
rsync
시작할 수 있다는 것입니다.
rsync -a
거의 모든 메타 데이터는 유지하지만 하드 링크, ACL 또는 확장 된 속성은 유지하지 않습니다 (추가 -HAX
).
rename
에 따라 동작 이 다른 명령이 다릅니다. 나는 그것이 rename
당신이 할 일을 확신하고 싶을 때 명령을 사용하지 않기에 충분한 이유라고 생각합니다 .
동일한 파일 시스템의 소스 및 대상 이름 만 바꾸면 디렉토리 항목의 이름 만 변경됩니다. 성공하고 디렉토리에 새 이름이 있거나 실패하면 아무 것도 변경되지 않습니다 * .
소스와 대상이 다른 파일 시스템에 있으면 데이터를로 복사해야합니다 mv
. 최대 파일 크기, 파일 이름 제한 등과 같은 파일 시스템 기능의 차이로 인해 문제가 발생할 수 있습니다. 문제를 피하려면 먼저 파일을 복사하고 ( cp
,, rsync
…) 복사가 성공적으로 완료되면 원래 위치에서 파일을 제거하십시오.
* 그러나 man 2 rename 의 BUGS 섹션에 언급 된 것과 같은 일부 경우가 있습니다.
다른 사람들이 말했듯이 폴더 이름을 바꾸면 내용에 내재 된 위험이 없습니다. 그러나 고려해야 할 다른 종류의 위험이 있습니다.
원래 위치를 참조하는 기존 절차, 스크립트, 사용자 정의 바로 가기 및 구성은이 변경으로 인해 손상 될 수 있으며 경로가 데이터베이스에 저장된 경우 업데이트하는 것이 큰 작업이 될 수 있습니다.
할 수있는 한 가지는 새 디렉토리 이름에 대한 심볼릭 링크를 만드는 것이지만 이전 이름은 잠시 그대로 두십시오. 그러면이 변경의 영향을 평가할 시간이 제공됩니다. 이전 이름을 일시적으로 제거하고 문제가 있는지 확인한 다음 문제가있는 경우 이전 이름을 다시 작성하면 업데이트해야 할 사항을 파악하는 동안 사람들이 계속 작업 할 수 있습니다.
이와 같은 명령으로 수행해야합니다.
ln -s /data /BD_FILES
mv thing1 thing2 ; ln --symbolic ./thing2 thing1
. 그렇게하면 새 이름이 생겨 심볼릭 링크를 삭제하여 기존 이름이 없는지 쉽게 테스트 할 수 있습니다.
이름 바꾸기는 원 자성입니다. 합리적 인 유일한 위험은 mv
어떤 이유로 든 모든 것을 복사하기로 결정하고 반으로 충돌하는 것입니다. 당신이 GNU이있는 경우 mv
, mv -T
이러한 위험을 제거합니다.
mv -T
mv
폴더가 아닌 폴더로 이동하고 있음을 알려줍니다 . mkdir()
폴더를 이동하면 폴더가 실패하고 어떤 이유로 복사하기로 결정한 경우 거부 하게됩니다.
mv -T
몇 년 전 석사 논문 작업을하는 동안 버그를 털어내는 데 관여했습니다 . 너무 많은 경우에 잘못된 일을 했었습니다.
반면 루트 파티션에는 180GB의 사용자 데이터가 있습니다. 아마도 이것을 루트 파티션에서 옮기고 싶을 것입니다.
mv
하십시오-i
.