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
, diff
과 test
.
표준 cp
유틸리티 중 어느 것도 복사 작업을 드라 이런 할 수있는 기능을 제공 하지 않습니다 . 제안 된대로 rsync
일반적으로 사용 가능한 유틸리티를 사용하여이 작업을 수행하는 방법입니다. 물론 rsync
일반적으로 새롭 거나 누락 된 것보다 더 많은 기준에 따라 복사하는 데 사용됩니다 (파일 크기 및 타임 스탬프도 사용됨). 그러나 그냥하는 것으로 줄일 수 있습니다 cp -u
.
비표준 유틸리티의 경우 copy
1980 년대 후반에 내가 작성한 유틸리티가 있습니다 (물론 여전히 사용합니다). make
내가 추가 한 첫 번째 옵션이 이었기 때문에 아마도 유틸리티에서 영감을 얻었을 것입니다 -n
.
주어진 예에서는 다음과 같이 사용됩니다.
$ copy -nvU DIRECTORYA/* DIRECTORYB
** copy DIRECTORYA/foo to DIRECTORYB/foo
** 1 file would be copied, 616 bytes
더 읽을 거리 :
-
-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
할 것입니다.