폴더 old
와가 new
있습니다.
나는 모든 내용을 대체 할 old/*
에 new/*
. 해당 폴더에는 많은 하위 디렉토리가있을 수 있습니다.
그러나에 new/*
없지만 파일이있는 파일은 거의 old/*
없으므로 그대로 유지하고 싶습니다.
Linux 쉘에서 어떻게 할 수 있습니까?
답변
rsync가 아마도 더 나은 옵션 일 것입니다. rsync -a subdir / ./처럼 간단합니다. 더 나은 솔루션을 보려면이 unix.stackexchage 답변 을 확인하십시오.
명령 -f
과 함께 사용 cp
cp -fR /source/files /dest
cp를 덮어 쓰지 않음 “프롬프트를 표시하십시오.
cp의 별칭을 무시하려면 간단히 따옴표로 묶으십시오.
'cp' -rf ./source/* /destination/
자세한 내용은 다음 링크를 참조하십시오.
http://www.wallpaperama.com/forums/cp-command-problems-forcing-overwrite-using-cp-command-t5685.html
http://bytes.com/topic/unix/answers/865372-force-cp-overwrite-existing-directory
답변
사용하십시오 rsync
. 디렉토리를 한 방향으로 동기화합니다. 따라서의 old
모든 항목으로 폴더 를 업데이트하고 안에 있는 것을 new
유지하려면 다음을 사용하십시오.
rsync -avh --dry-run /path/to/new/ /path/to/old/
첫 번째 경우 전송 될 파일 목록 만 출력합니다. 이 경우 : 찾은 모든 항목 new
이에 복사 old
되지 않은 경우에 복사됩니다 . 모든 것이 old
그대로 유지됩니다.
잘 보이면 --dry-run
인수를 제거하여 실제로 전송하십시오.
-avh
플래그는 아카이브 (타임 스탬프를 보존하는 것 등) 모드, 상세하고 사람이 읽을 수있는 파일 크기를 할 수 있습니다. --delete
플래그 를 지정하지 않으면 대상에서 아무것도 삭제되지 않습니다 . man rsync
자세한 내용은 문의하십시오 .