OSX "xattr"유틸리티를 사용하여 한 파일에서 다른 파일로 확장 속성을 복사하려고합니다. 배경은 우리가 백업 도구를 만들고 파일/구조가 모든 속성, ACL 등을 유지해야한다는 것입니다. 리소스 포크와 같은 큰 속성을 제외한 모든 것이 잘 작동합니다. 작은 속성은 아래의 방법을 사용하여 잘 작동합니다. OS X 10.7.5에서이 작업 수행하기 여기 내가하고있는 일이 있습니다 :Copy Mac com.apple.ResourceFork 확장 된 속성으로 인해 "인수 목록이 너무 길다"
먼저 "ls -l @"을 사용하여 파일의 속성을 확인했습니다. 결과 아래 : 지금 다른에있는 파일의 사본이 속성을 적용 할
xattr -px com.apple.ResourceFork File > attribfile
: 이제
[email protected] 1 testuser staff 0 3 Jan 2011 File
com.apple.FinderInfo 32
com.apple.ResourceFork 237246
내가 속성을 내보내기 (com.apple.ResourceFork는 문제를 일으키는 하나입니다)
-bash: /usr/bin/xattr: Argument list too long
,369 :
xattr -wx com.apple.ResourceFork "`cat attribfile`" File
이 결과 : 맥이 명령을 사용하여
나는 왜 그것이 일어나고 있는지 알고 있다고 생각한다 ... 리소스 포크 데이터는 너무 길어서 인수에 맞지 않는다. 나는 깨기 시작하는 한계점을 세우지 않았지만 그것이 ARG_MAX와 관련이 있다고 생각합니다. xargs는 몇 가지 더 작은 인수가 아니기 때문에 여기서는 도움이되지 않지만 하나는 매우 큰 인수입니다.
그래서 여러 질문 :
- 이 큰 값을 받아 들일에서 xattr 만들 수있는 방법이 있습니까? 어떻게 든 그것을 표준 입력을 통해 파이프합니까? 맨 페이지에는 표시되지 않지만 전문가는 아니며이를 수행 할 수있는 창의적인 방법이있을 수 있습니다.
- 주식 명령 행 도구를 사용하여 확장 된 큰 속성을 적용하는 적절한 방법은 아무도 알 수 있습니까?
- 재고 명령 줄 도구가 없다면 타사 도구에 대한 권장 사항이 있습니까?
이것은 다소 복잡해 질 수 있지만,'xattr'을 리버스 엔지니어링하고 입력 파일로 속성 파일을 받아들이는 간단한 대체 코드를 작성할 수는 없습니다. 운이 좋다면 편리한 스크립팅 언어 인 Perl one-liner에서 바인딩을 사용하는 단일 시스템 호출이 있습니까? – tripleee
이 옵션을 살펴 보겠습니다. 이 도구는 MIT 라이센스처럼 보이므로 상업적으로 친숙합니다. – Chris