我想使用OSX「xattr」實用程序將擴展屬性從一個文件複製到另一個文件。背景是我們正在構建一個備份工具,文件/結構必須保留所有屬性,ACL等......除了像資源分支這樣的大屬性外,一切工作都正常。使用下面的方法,小屬性可以正常工試圖在OS X 10.7.5上這是我在做什麼:複製Mac com.apple.ResourceFork擴展屬性導致「參數列表太長」
首先我使用「ls -l @」標識文件上的屬性。結果如下:
[email protected] 1 testuser staff 0 3 Jan 2011 File
com.apple.FinderInfo 32
com.apple.ResourceFork 237246
現在我出口的屬性(com.apple.ResourceFork是一個導致問題):
xattr -px com.apple.ResourceFork File > attribfile
我現在想這個屬性應用於該文件的另一個副本MAC使用該命令:
xattr -wx com.apple.ResourceFork "`cat attribfile`" File
這導致:
-bash: /usr/bin/xattr: Argument list too long
我想我知道它爲什麼會發生......資源分叉數據太長以至於無法適應參數。我還沒有確定它開始打破的門檻,但我懷疑它與ARG_MAX有關。 xargs在這裏沒有幫助,因爲它不是幾個較小的參數,而是一個非常大的參數。
那麼多的問題:
- 有沒有一種方法,使XATTR接受這個大的價值嗎?以某種方式通過標準輸入管道它?手冊頁不顯示它,但我不是專家,也許有一些創造性的方式來做到這一點
- 任何人都可以告訴我正確的方法來使用股票命令行工具應用一個大的擴展屬性?
- 如果沒有股票命令行工具,對第三方工具有任何建議?
這可能會有一點牽扯,但是可能不可能對'xattr'進行反向工程並編寫自己的接受屬性文件作爲其輸入的簡單替換。如果你幸運的話,用一種方便的腳本語言就可以進行一次系統調用,並帶有一個綁定 - Perl單線程? – tripleee
我們正在尋找這個選項。看起來這個工具是MIT的許可證,所以它的商業友好。 – Chris