Linux에서 파일 복사, 파일이 대상에 존재하면 복사하지 마십시오


32

한 하드 디스크에서 다른 하드 디스크로 / home / user 폴더를 복사해야합니다. 파일은 100,000 개이고 크기는 약 10G입니다.

나는 사용한다

cp -r /origin /destination

때로는 깨진 링크, 권한 등으로 인해 오류가 발생합니다. 따라서 오류를 수정하고 사본을 다시 시작해야합니다.

대상 폴더에 파일이 있으면 다시 복사하지 않고 다시 복사하려고하면 "cp"명령을 어떻게 말할 수 있을지 궁금합니다.


2
우리는 CP하지 마십시오. 대신 rsync를 사용하십시오.
William Pursell

답변:


22

cp -R -u -p /source /destination

-u( 또는--update ) 플래그는이 작업을 수행합니다 :

cp의 맨 페이지에서 :

-u, --update

SOURCE 파일이 대상 파일보다 최신이거나 대상 파일이 누락 된 경우에만 복사


6
존재하지 않는 파일을 문자 그대로 복사하고 기존 파일을 업데이트하지 않으려면 yes n | cp -i /source/* /destination 2>/dev/null
sventechie

4
-u, --update는 소스 파일이 대상 파일보다 최신이거나 대상 파일이 누락 된 경우에만 복사합니다. -u, --SOURCE 파일이 대상 파일보다 최신이거나 대상 파일이 누락 된 경우에만 복사합니다. -p --preserve = mode, ownership, timestamps와 동일 --preserve [= ATTR_LIST] 가능한 경우 추가 속성 : 컨텍스트, 링크, xattr, 모두
Covich

51

그냥 사용하십시오 cp -n <source> <dest>.

에서 man 페이지 :

-n,-클로버 없음

기존 파일을 덮어 쓰지 마십시오 (이전 -i 옵션을 무시 함)


7
이 질문에 대한 유일한 대답입니다.
sebix

20

rsync -aq /src /dest

최신 파일 만 복사하는 것 외에도 파일이 변경된 경우 파일의 새로운 부분 만 복사합니다. 데이터 양을 최소화하려는 네트워크 링크를 통해 복사하기위한 것이지만 로컬에서도 훌륭하게 작동합니다.


``포맷 ''은 두 글자로만되어있어 게시물에``서식을 추가 할 수 없습니다. 이것을 편집하고 명령 주위에``문자를 추가하는 것에 대해 어떻게 생각하십니까?
culix

4

cp명령 의 "-u"옵션을 찾으십시오 .


2
-u를 사용하는 것이 좋습니다. -u는 소스가 최신이거나 대상이 누락 된 경우에만 복사합니다. 원본 포스터의 문제는 어떤 이유로 든 파일 복사가 중단되어 발생했습니다. 따라서 OP에는 사본을 다시 실행할 때 업데이트되지 않은 반으로 작성된 파일이 있습니다. 그 파일은 누군가에게 중요 할 수 있습니다! rsync는이 문제를 해결합니다.
hazymat

2

위의 모든 대답은 정확하지만 재귀 적으로 수행하는 경우

당신은해야합니다 :

 cp -rn SOURCE_PATH DESTINATION_PATH

1

권한 / 소유권을 유지하려면 루트로 복사해야합니다

# cp -au

rsync도보십시오


1

POSIX 솔루션

다른 답변의 사용 -u 또는 -n옵션 cp. 이들 중 어느 것도 POSIX에 필요 하지 않습니다 . rsync또 다른 대답 은 아닙니다 . yes주석 중 하나에도 사용 되지 않았습니다 .

그럼에도 불구하고 우리는 재현 할 수 yes n로모그래퍼 while루프. 이는 다음 POSIX 솔루션으로 이어집니다.

while true; do echo n; done | cp -Ri /origin /destination 2>/dev/null

0

용도 cp -rn <sourcedirname>/. <destdirname>

r 스위치는 디렉토리에서 사본을 재귀 적으로 만듭니다.

n 스위치 (긴 버전 클로저 없음)는 기존 파일을 덮어 쓰지 않도록합니다.

/.sourcedirname 뒤 의 ' '는 전자의 후자의 모든 내용이 destdirname 아래의 서브 디렉토리가되지 않도록합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.