원격 Linux 서버에서 어리석은 짓을 했습니다.
- 내 작업 디렉토리는
/some/directory
- 나는 달렸다
for dir in $(ls | grep "a_pattern"); do mv $d/* ./my_subdirectory; done
- 이제 다음과 같은 항목이
/some/directory/my_subdirectory
포함되어bin
boot
dev
있으며home
절대 있어서는 안 되는 항목이 포함되어 있습니다.
# 2가 얼마나 어리석은 지 자유롭게 지적하십시오. 내 오류를 올바르게 이해하면 $d
비어 있는 것입니다(입력을 의미합니다 $dir
. 수정이 있더라도 아마도 조작된 명령일 수 있지만 해당 괄호를 닫아야 함). 따라서 기본적으로 yes 명령을 실행합니다 mv /* ./my_subdirectory
.
내가 한 일을 깨달았을 때 ctrl-c ctrl-c를 눌러 명령이 완료되기 전에 중단했습니다.
내 질문은 두 부분으로 구성됩니다. 첫째, 이 문제를 해결하려면 어떻게 해야 합니까? 둘째, 내 명령이 실제로 작동합니까?이동하다물건 /
, 아니면 그냥 복사 하시겠습니까?
나는 그것을 실행했고 , 그것이 뭔가 움직일 것이라고 기대했지만, 아무것도 빠진 것을 mv
보지 못했습니다 . 여기서 명확하지 않은 경우 알려주십시오. 예를 들어 bash, cat, mount 및 mkdir이 포함되어 있지만 이러한 프로그램은 이동된 것이 아니라 복사된 것처럼 여전히 존재합니다. 왜 그런 겁니까? 아래의 모든 항목을 안전하게 삭제할 수 있습니까 ? 아니면 끔찍한 실수가 될까요?./my_subdirectory
/
/some/directory/my_subdirectory/bin
/bin
/some/directory/my_subdirectory
의견에서 tad의 제안에 따라 다음은 몇 가지 결과입니다 find ./my_subdirectory -type f
.
./my_subdirectory/bin/umount
./my_subdirectory/bin/date
./my_subdirectory/bin/sort
./my_subdirectory/bin/red
./my_subdirectory/bin/dumpkeys
./my_subdirectory/bin/sleep
./my_subdirectory/bin/readlink
./my_subdirectory/bin/mv
...
./my_subdirectory/etc/security/pam_env.conf
./my_subdirectory/etc/security/chroot.conf
./my_subdirectory/etc/security/access.conf
./my_subdirectory/etc/security/namespace.init
./my_subdirectory/etc/security/group.conf
./my_subdirectory/etc/security/console.handlers
확인해 보니 파일이 여전히 아래 /etc
및 아래에 존재합니다 /bin
. 실행하면 diff ./my_subdirectory/etc /etc
공통 하위 디렉터리가 표시되는데, 그 중 일부는 에만 있지만 /etc
그 중 어느 것도 ./my_subdirectory/etc
. 그래서 물건이 이동된 것이 아니라 복사된 것처럼 보입니다. sudo로 명령을 실행 하지 않을 때 mv
이것이 예상되는 것 입니까?
답변1
이 명령을 루트로 실행하지 않는다고 가정하면 데이터가 단순히 복사된 것으로 가정합니다. 빠르게 알 수 있는 방법은 diff를 실행하여 디렉터리를 비교하는 것입니다.