Bash를 사용하면 이름은 같지만 소스 내용이 다른 일부 파일을 복사하고 덮어쓰면서 동일한 파일을 무시해야 합니다.
cp
매뉴얼에 다른 파일을 복사하는 옵션이 표시되지 않습니다.
먼저 "업데이트" 옵션을 사용해 보았지만 cp
원본에서 대상으로 이전 파일을 복사하지 않습니다.
cp -a -u SOURCE DESTINATION
해당 매개변수를 제거하면 -u
모든 파일이 올바르게 복사되지만 불필요한 복사본은 피하고 싶습니다.
다음과 같은 것이 필요합니다.
- 대상이 원본과 다를 경우 원본 파일을 복사해야 합니다.
- 때로는 대상이 소스보다 최신인 경우도 있습니다. 그래도 복사는 해야 합니다.
- 소스 및 대상 파일은 동일한 경우에만 무시해야 합니다.
어떻게 해야 하나요?
답변1
cp
파일 내용은 비교되지 않으며 타임스탬프만 비교됩니다.
대신 사용하십시오 rsync
:
rsync -acv SOURCE/ DEST/
더 적은 출력을 얻으려면 이 v
플래그를 제거하십시오.
답변2
사용 가능한 많은 체크섬 명령 중 하나를 적용할 수 있습니다. 이 간단한 경우에는 간단한 알고리즘이면 충분할 수 있습니다. 체크섬이 동일하게 비교되면 두 파일이 동일할 확률이 높습니다.