-u 옵션을 지원하지 않는 Solaris 시스템에서 cp -u를 어떻게 사용합니까?

-u 옵션을 지원하지 않는 Solaris 시스템에서 cp -u를 어떻게 사용합니까?

원본 파일이 대상 파일보다 최신이거나 대상 파일이 누락된 경우에만 복사하고 싶습니다. 아시다시피 이 기능은 다음 명령을 사용하여 Linux 시스템에서 실행됩니다.

cp -u /source/*.txt /destination/  

하지만 Solaris 시스템 10에서 이 명령을 사용하면 내 결과는 다음과 같습니다.

cp: illegal option -- u
Usage: cp [-f] [-i] [-p] [-@] f1 f2
cp [-f] [-i] [-p] [-@] f1 ... fn d1
cp -r|-R [-H|-L|-P] [-f] [-i] [-p] [-@] d1 ... dn-1 dn 

해결책이 있나요?

답변1

cp -u비임베디드 Linux에서는 표준이지만 Solaris에서는 표준이 아닌 GNU coreutils의 기능입니다.

Solaris 또는 기타 POSIX 호환 시스템에서는 다음을 사용할 수 있습니다.pax, 비슷한 기능을 가지고 있습니다. 이 명령은 paxPOSIX History 명령을 대체하며 패스스루 모드에서는 와 유사합니다. 옵션은 GNU의 옵션과 유사합니다(둘 다 및 와 같은 히스토리 아카이버에서 가져옵니다).cpiotarcp -R-ucptarar

cd /source
pax -rw -u *.txt /destination

(아니요 pax -rw -u /source/*.txt /destination, 그러면 생성되기 때문 /destination/source/file.txt입니다)

1많은 Linux 배포판은 기본 설치에서 pax를 생략합니다 . 그러나 항상 패키지로 제공됩니다.

답변2

rsync -u이를 사용하여 동일한 기능을 제공 할 수 있습니다 . 이는 현재 Solaris 릴리스(11.x)와 최신 Solaris 10 릴리스(오라클 솔라리스 10 1/13).

Solaris 10의 소스 코드는 전체 오픈 소스 패키지에 포함되어 있으며 다음에서 다운로드할 수 있습니다.여기(참고로 1GB 파일입니다.)

답변3

상당히 오래된 버전의 Solaris를 사용하고 있습니다. 어쨌든 다른 사람들이 지적했듯이 -u이 옵션은 GNU에서 "발명"되었으므로 GNU 버전을 사용해야 합니다 cp.GNU 핵심 도구그런 다음 gcp명령줄에서 명시적으로 인용하세요. 당신의 예는

gcp -u /source/*.txt /destination/

설치방법을 확인하실 수 있습니다여기, 그러나 시스템 관리자가 작업을 수행했다면 이미 거기에 있을 것입니다(이것은 단지 내 개인적인 의견입니다 :-))

관련 정보