
원본 파일이 대상 파일보다 최신이거나 대상 파일이 누락된 경우에만 복사하고 싶습니다. 아시다시피 이 기능은 다음 명령을 사용하여 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
, 비슷한 기능을 가지고 있습니다. 이 명령은 pax
POSIX History 명령을 대체하며 패스스루 모드에서는 와 유사합니다. 옵션은 GNU의 옵션과 유사합니다(둘 다 및 와 같은 히스토리 아카이버에서 가져옵니다).cpio
tar
cp -R
-u
cp
tar
ar
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/
설치방법을 확인하실 수 있습니다여기, 그러나 시스템 관리자가 작업을 수행했다면 이미 거기에 있을 것입니다(이것은 단지 내 개인적인 의견입니다 :-))