rsync
mv
다음 옵션을 사용하여 폴더를 기존 폴더와 매우 유사하고 우수하게 이동할 수 있습니다 .
rsync -axvvES --remove-source-files source_directory /destination/
그러나 내가 아직 할 수없는 한 가지는 원래 디렉토리를 제거하는 것입니다. --remove-source-files
플래그는 소스 파일을 제거하지만 또한 소스 디렉토리 그냥 것을 않습니다. 나는 --remove-source-directories
깃발도 있었으면 좋겠다 .
이 문제를 어떻게 처리 할 수 있습니까? 나는 rm -fr
이동 후 그냥 발행 할 수 있다고 생각 하지만 실수 가능성을 도입하는 대신 절차를 모두 한 프로세스로 유지하는 것을 선호합니다.
답변
나는 한 번에 그것을 수행하는 명령을 찾지 못했지만 rsync는 여전히 rm -rf
(특히 많은 수의 디렉토리가있는 경우) 보다 여전히 성능이 우수하기 때문에 “move” 를 수행하는 두 개의 rsync 명령이 있습니다 .
rsync -av --ignore-existing --remove-source-files source/ destination/ && \
rsync -av --delete `mktemp -d`/ source/ && rmdir source/
답변
” rm -rf “를 사용하면 고유 한 경쟁 조건이 있습니다. 즉, rsync 와 rm 호출 간에 방금 작성된 파일을 삭제할 수 있습니다 .
나는 사용하는 것을 선호합니다 :
rsync --remove-source-files -a server:incoming/ incoming/ &&
ssh server find incoming -type d -delete
디렉토리가 비어 있지 않으면 제거되지 않습니다.
답변
나는 비슷한 상황에 처하게되었다. rm -rf
rsync가 일부 파일을 복사하지 못하여 파일을 잃고 싶지 않다는 것을 알고 피하고 싶었 습니다.
빈 디렉토리를 간단히 삭제하기 위해이 디렉토리가 가장 편리하다는 것을 알았습니다 sourcedir
.
find . -type d -empty -delete
답변
왜 rm -rf source_directory
당신의 rsync 후에 추가하지 않습니까?
rsync -axvvES --remove-source-files source_directory /destination/ && rm -rf source_directory
각 명령 줄 프로그램은 특정 작업을 수행하기 위해 (아이디어) 만들어지며,보다 복잡한 작업을 수행하려면 여러 작업을 함께 수행해야합니다.