cp 명령으로 복사 할 파일을 테스트하는 방법은 무엇입니까? 복사하는 간단한 스크립트를 작성 중입니다.

DIRECTORYB에 존재하지 않는 DIRECTORYA의 모든 파일을 복사하는 간단한 스크립트를 작성 중입니다. cp 명령을 사용 하여이 작업을 수행하고 있습니다.

cp -u DIRECTORYA/* DIRECTORYB

내가하고 싶은 것은 복사 된 파일을 나열 할 이메일을 관리자에게 보내는 것입니다.

이상적으로 위의 명령을 실행하기 전에 전자 메일 메시지를 작성할 때 나중에 사용할 수 있도록 파일을 복사하여 변수에 저장하고 싶습니다.

아무도 올바른 방향으로 나를 가리킬 수 있습니까? grep 사용을 살펴 보았지만 이것이 cp 명령으로 수행 할 수 있다고 생각하지 않습니까?



답변

나는 cp당신이 행동하지 않고 그 일이 무엇인지보고 싶다면 GNU 가 당신을 도울 것이 없다고 생각 합니다. 수정 된 파일을 기록하려면 다음 -v옵션을 사용할 수 있습니다 .

cp -puv DIRECTORYA/* DIRECTORYB >copy.log

대신에 rsynccp 를 사용할 수 있습니다. rsync 을 사용 하면 로우 엔드 임베디드 시스템을 제외하고 거의 모든 곳에 설치되며 기본적으로 존재하지 않는 곳에 쉽게 설치할 수 있습니다.

rsync -aun DIRECTORYA/* DIRECTORYB >what-would-be-done.txt

또는

rsync -auv DIRECTORYA/* DIRECTORYB >copy.log


답변

사용자가 실행하고 싶었다면 cp foo*bar whatever, 다음 실행 echo foo*bar whatever대신.


답변

에 따르면 매뉴얼 페이지 ,

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

이것은 두 가지 테스트를 결합하는 기능입니다. 하나는 스크립트에서 구현하기에 사소한 것 ( 누락 )과 약간의 작업이 필요합니다 ( 더 새로운 것 ). 다음을 사용하여 필요한 것을보고하는 스크립트를 만들 수 comm, difftest.

표준 cp유틸리티 중 어느 것도 복사 작업을 드라 이런 할 수있는 기능을 제공 하지 않습니다 . 제안 된대로 rsync일반적으로 사용 가능한 유틸리티를 사용하여이 작업을 수행하는 방법입니다. 물론 rsync일반적으로 새롭 거나 누락 된 것보다 더 많은 기준에 따라 복사하는 데 사용됩니다 (파일 크기 및 타임 스탬프도 사용됨). 그러나 그냥하는 것으로 줄일 수 있습니다 cp -u.

비표준 유틸리티의 경우 copy1980 년대 후반에 내가 작성한 유틸리티가 있습니다 (물론 여전히 사용합니다). make내가 추가 한 첫 번째 옵션이 이었기 때문에 아마도 유틸리티에서 영감을 얻었을 것입니다 -n.

주어진 예에서는 다음과 같이 사용됩니다.

$ copy -nvU DIRECTORYA/* DIRECTORYB
** copy DIRECTORYA/foo to DIRECTORYB/foo
** 1 file would be copied, 616 bytes

더 읽을 거리 :

  • copy-파일 / 디렉토리 복사 유틸리티

    -n 파일의 실제 생성 또는 수정을 비활성화하고 (자세한 수준에 따라) copy
    명령 의 효과를 보여줍니다 .
    -u 크기 나 수정 날짜가 다른 경우에만 파일을 복사하고 링크 텍스트가 다른 경우에만 링크를 복사합니다.
    -U
    대상보다 최신이거나 대상에없는 파일 만 복사합니다.

  • 1988 년 8 월의 changelog 항목 :

    1988-08-16
            * src / copy / src / copy.c : "-d"및 "-n"옵션이 추가되었습니다.
    

답변

diff 명령을 사용할 수 있습니다. 매일 일부 백업 파일을 복사하는 작업이 있습니다. 언젠가 모든 파일이 복사되었는지 확인 해야하는 구문은 다음과 같습니다.

diff /file1/ /file2/

물론 복사하려는 경우 다음을 사용하십시오.

cp -u /file1/* /file2


답변

대신 rsync를 사용하십시오. Rsync는 로컬 복사본에서 완벽하게 작동하며 15 개의 gazillion 옵션을 사용하면 원하는 작업을 수행 할 수 있습니다.

rsync -avun DIRECTORYA/ DIRECTORYB

수행 될 모든 것을 보여줄 것입니다.

rsync -avu DIRECTORYA/ DIRECTORYB

할 것입니다.


답변