「sudo mv」でフォルダを移動し、ACLを保存する方法


1

フォルダ全体をあるボリュームから別のボリューム(両方ともHFS +)に移動します。 sudo mvそして、ACLは保存されるだろうと考えました。しかし、転送の終わりにそれらが保存されていないことがわかり、そしてmvが元のボリュームのファイルを削除したのでそれらを復元することができません。

なぜこれが起きたのでしょうか。

回答:


2

それを使用することをお勧めします ditto リソースフォーク、HFS属性、およびACLを認識しているのでコマンド。あなたはそれをエイリアスするか、あるいは単にあなたのワークフローに最もよく合うようにdittoを使うようにあなたの脳を作り直すことができます。


1

mv 用途 cp 異なるボリューム間でファイルを移動すると、次のようになります。 -p オプション 使用されないので、ACLは保存されません。

ただし、同じボリュームに移動した場合、ACLはもちろん維持されます。


1

ACLが保存されていないことを読んでとても驚きました。ありますか GNU mv インストールされ、優先するように設定されている /bin/mv

のmanページによると mv (10.5.8と10.8.2の両方) cp -p ファイルシステムの境界を越えてファイルを移動するときに使用されます。

rename(2)呼び出しはファイルシステム間では機能しないため、mvはcp(1)を使用します。   そしてrm(1)を使って移動を完了します。効果は以下と同等です。

rm -f destination_path && cp -pRP source_file destination && rm -rf source_file

cp -p ACLを保持します。

-p cpに各ソースの以下の属性を保存させます。   ファイル

コピー内:変更時刻、アクセス時刻、ファイルフラグ、ファイル              許可で許可されているモード、ユーザーID、およびグループID。 以下を含むアクセス制御リスト(ACL)および拡張属性(EA)              リソースフォークも保存されます。

ファイルをフラッシュドライブに移動して mv ACLは保持されていました(Mac OS X 10.5.8「Leopard」を実行していて、OS X 10.8.2「Mountain Lion」で動作している私の古いPowerBookでテスト済み)。

あなたが言うように、両方のファイルシステムがHFS +でフォーマットされていて、GNUがない場合 mv 周りに、私はあなたがいくつかの(非常に)古いMac OS Xバージョンを使っていると結論づけなければなりません。その場合はFinderを使ってください。 cp / rm または、上記のbmikeの回答で説明されているように、 ditto


私は再現する時間を見つけようとします。私はLion Server 10.7.5ではありません。GNUmvだとは思いませんが、間もなく確認する予定です。
CharlesB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.