Bash에서 이 기능을 재현할 수 있는 명령은 무엇입니까?
Finder에서 파일을 선택하고 ⇧⌥를 눌러 명령을 표시합니다(⇧⌥⌘D).
AppleScript에서는 다음과 같이 작동합니다.
tell application "Finder" to duplicate selection with exact copy
고쳐 쓰다. stat를 사용하여 출생 시간을 확인했습니다.
답변1
~에 따르면이 기사, 이 기능과 일반 복사(⌘D) 기능의 주요 차이점은 파일 소유권이 보존된다는 것입니다. 일반 복사 기능은 파일 권한은 유지하지만 소유권은 유지하지 않습니다.
이 행동과 가장 유사한 것은OSX에서~이다ditto
주문하다. 간단히 사용할 수 sudo ditto src dst
있으며 기본적으로 모든 것이 유지됩니다. 파일 소유권을 보존해야 하는 경우 Sudo가 필요합니다. 디렉토리를 복사 중이고 해당 디렉토리가 dst
이미 존재하는 경우 해당 디렉토리가 복사된다는 점을 알아야 합니다.병합새 디렉토리를 만드는 대신 dst/src
. 맨페이지에 설명된 대로 Ditto는 cpio 또는 zip 형식의 아카이브를 생성할 수도 있습니다.
다음 답변은 주로 다른 UNIX 시스템과 관련이 있으며 일부 OSX 버전에서는 리소스 포크 또는 기타 HFS 관련 속성을 유지하지 않을 수 있습니다.
먼저 이러한 명령은 루트로 실행될 때만 소유권을 유지할 수 있다는 점을 언급해야 합니다(즉, 시스템을 사용하거나 sudo
시스템 su
에 따라 달라집니다. 이 sudo
명령은 OSX에 존재합니다.). 루트로 실행하지 않을 때 대부분의 파일은 가능한 모든 속성을 유지하지만 파일은 사용자 ID가 소유합니다.
이 cp -a
명령은 권한, 소유권(루트인 경우), 타임스탬프 및 심볼릭 링크를 포함하여 가능한 한 많은 것을 보존합니다. -a
많은 시스템에서 지원되지만(GNU에서는 하드 링크도 유지하지만 OSX에서는 유지되지 않음) POSIX에서는 지원되지 않습니다 . 가장 가까운 POSIX 명령은 다음과 같습니다 cp -pPR
. - 관련 표준 옵션은 - 권한과 소유권을 유지 p
하지만 P
기호 링크 복사 및 R
디렉토리 복사가 필요합니다.
cp가 처리할 수 없는 하드 링크와 기타 확장 속성을 유지하면서 복사하는 가장 좋은 방법은 pax 명령을 사용하는 것입니다 pax -rwpe src dstdir
. 이 경우 소스 파일의 이름을 변경할 수 없으며 대상 디렉터리가 이미 존재해야 합니다. dstdir/src로 복사본이 생성되므로 원하는 결과를 얻으려면 소스 파일이 있는 디렉터리에서 이 작업을 수행해야 합니다.
일부 시스템에서는 pax가 없을 수 있으며, 이 경우 tar: 를 사용할 수 있습니다 tar cf - srcfiles | (cd dstdir; [sudo] tar xf -)
. 파일 이름, 소스 및 대상 디렉토리에 대한 동일한 조언이 pax에도 적용됩니다.