OS X FinderのDuplicate Exactlyコマンドに対応するUnix

OS X FinderのDuplicate Exactlyコマンドに対応するUnix

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 関連のプロパティを保持しない場合があります。


まず、これらのコマンドはrootとして実行されたときにのみ所有権を維持できることに注意してください(つまり、システムを使用するか、システムによって異なります。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 にも適用されます。

関連情報