mv: 디렉토리가 비어 있지 않음

mv: 디렉토리가 비어 있지 않음

동일한 폴더가 있는 다른 디렉토리 내로 디렉토리의 내용을 이동하고 싶습니다.

예는 다음과 같습니다.

나는 ./backup디렉토리 basetest. 이제 이 디렉터리를 ./backupArchives.

나는 이것을 사용합니다 :

mv ./backup/* ./backupArchives

하지만 오류가 발생했습니다

mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty

을 사용해 보았 --force으나 운이 없었습니다. 폴더가 이미 존재하는 경우 이동하는 방법이 있나요?

참고: 콘텐츠를 병합하고 싶을 뿐이며 덮어쓸 수는 없습니다.

답변1

매뉴얼 페이지에는 문서화되어 있지 않지만 mv대상 디렉토리에 파일이 포함되어 있으면 디렉토리 이름을 다른 디렉토리로 바꾸는 것을 거부합니다. 당신이 원하기 때문에 이것은 당신의 경우에 좋은 일입니다.병합소스의 내용을 대상에 삽입하지만 그렇게 mv되지는 않습니다.

대신 사용하세요 rsync -a backup/ backupArchives/. 이후 rm -rf backup/*.

를 사용하는 대신 rsync클래식을 수행할 수도 있습니다.

(cd backup && tar c .) | (cd backupArchives && tar xf -)

그러면 더 많은 괴짜 포인트를 얻을 수 있습니다.

답변2

빠르고 지저분하게, 당신이 무엇을 하고 있는지 알고 있다면:

cp -r ./backup/* ./backupArchives && rm -R ./backup/*

답변3

이동한 디렉토리 뒤에는 필요한 것 *(텍스트 또는 숫자를 나타냄)이 있습니다. 예를 들어:

mv /var/www/* /recovery/wwwrecovery/

그게 다입니다. 파일을 이동하는 경우 다음과 같이 이동하는 것보다:

mv /var/www/index.php /recovery/index.php

또 다른 방법은 tar를 사용하여 해당 폴더 내용을 압축하는 것입니다.

tar -cvzpf backup.tar.gz /var/www 

그런 다음 다른 파일로 이동하십시오. 또한 tar가 압축하여 크기를 더 작게 만들기 때문에 이 단계를 권장합니다.

파일을 다른 폴더로 추출하려면 다음을 사용하십시오.

tar -xvzpf /var/www/

자신이 소유하지 않은 위치에 복사해야 하는 경우 sudo사용하기로 결정한 옵션 뒤에 명령을 명령 앞에 추가해야 합니다.

sudo tar -cvzpf backup.tar.gz /var/www/

답변4

물론 rsync작동하지만 지원하지 않는 시스템 rsync(예: rsync가 기본적으로 설치되지 않는 cpanel)에서도 작동할 수 있습니다.

다음을 사용하는 것은 어떻습니까?

cd /path/to/backup/ && cp -R --parents ./* ../backupArchives

backup그런 다음 필요한 경우 디렉토리 를 제거하십시오.

참고 1: 실행하기 전에 cd해당 디렉토리로 이동해야 합니다.backupcp -R --parents ...

참고 2: backupArchives백업에서 새 파일을 가져온 경우 디렉터리를 다시 확인하세요.

관련 정보