cp -u를 사용하되 내용이 다른 경우에만 사용하세요.

cp -u를 사용하되 내용이 다른 경우에만 사용하세요.

cp -u내용이 다른 경우에만 복사를 사용하는 방법 , 다음을 수행하면 실패합니다.

$ cd /tmp/exper ; cp -v ~/Downloads/C/test.c . ; sudo chmod -R 777 . 
/home/budi/Downloads/C/test.c -> 'test.c'
$ cp -v -u test.c ~/Downloads/C
'test.c' -> '/home/budi/Downloads/C/test.c

내용은 동일하지만sudo chmod -R 777 .

이를 올바르게 수행하는 방법은 무엇입니까?

답변1

cd /tmp/exper ; cp -v ~/Downloads/C/test.c .

cp -u내용은 전혀 확인하지 마세요!

그것은 확인한다마지막 수정 날짜. 원본 파일( ~/Downloads/C/test.c)이 대상 파일( )보다 최신인 경우 /tmp/exper/test.c에만 복사가 발생합니다 .

(그런데 표시되는 명령은 붙여넣은 출력과 일치하지 않습니다. 그리고 sudo chmod -R 777 .거기에서 수행되는 작업이 명확하지 않습니다.)

cp하지만 여기에는 문제가 없습니다. 인쇄되었다는 사실 sourcefile -> targetfile이 파일이 인쇄되었다는 의미는 아닙니다.가지다복사됐어, 방금 복사됐어복사를 고려해보세요.

답변2

@MarcusMüller가 지적했듯이 cp -u내용이 아닌 파일 수정 날짜를 확인하고 소스가 대상보다 최신이거나 대상이 존재하지 않는 경우에만 복사하십시오.

'A' -> 'foobar/A'이렇게 하면 \cp -uv A foobar/다음 사실의 사본을 얻게 됩니다.일어났다. 이는 Debian 시리즈 시스템의 정상적인 동작입니다.의심하다대부분의 다른 Linux 배포판에서(BSD와 OSX에서는 동작이 다를 수 있음) 그렇다면 왜 이런 결과가 나오는 걸까요?

그렇게 하면 \cp -uv A foobar/새로 생성되거나 복사된 foobar/A콘텐츠가 .보다 작기 때문에 A역방향 복사 작업을 수행하기로 결정하면 \cp -uv foobar/A .복사가 매우 정상적으로 진행됩니다.

관련 정보