回答:
私はこれを自分で実行しましたが、組み込みcp
コマンドが実際にそれを処理します。
写真を収穫したい古いCFカードをたくさん見つけました。私の処理スクリプトはファイルmtimeを見て正しい場所に置くため、保存する必要があります。
manページから:
-p Cause cp to preserve the following attributes of each source file in the copy: modification time,
access time, file flags, file mode, user ID, and group ID, as allowed by permissions. Access
Control Lists (ACLs) and Extended Attributes (EAs), including resource forks, will also be pre-
served.
If the user ID and group ID cannot be preserved, no error message is displayed and the exit value
is not altered.
If the source file has its set-user-ID bit on and the user ID cannot be preserved, the set-user-
ID bit is not preserved in the copy's permissions. If the source file has its set-group-ID bit
on and the group ID cannot be preserved, the set-group-ID bit is not preserved in the copy's per-
missions. If the source file has both its set-user-ID and set-group-ID bits on, and either the
user ID or group ID cannot be preserved, neither the set-user-ID nor set-group-ID bits are pre-
served in the copy's permissions.
だから、使用してzsh
私は実行できました(NO NAME
私のカードのボリューム名です):
cp -rvp /Volumes/NO\ NAME/DCIM/**/*.{JPG,jpg} ~/Desktop/tmp/pics
特別な/**/*
構造はZSHに固有のものだと思います。ただし、次のようなことができます
find /Volumes/WHATEVER -type d -print0 | xargs cp -vp {}/*.JPG /my/out/path
cp -p
は簡単で、変更された時間(ファイルの3つのタイムスタンプの中で最も有用な可能性が高い)を保持し、中間アーカイブファイルの作成を必要としません。
cp -p
ただし、HFS +からFAT32にコピーする場合は機能しません。
このようなコピーを行うには、rsyncを使用します。ただし、Appleが提供するバージョンは2.6.9であり、これにバグがあることに注意してください。そのため、自分でビルドするか、パッケージマネージャーを介してサードパーティのビルドを取得する必要があります
例えば
rsync -aE source_dir target_dir
このオプション-E
はACLをコピーし-a
、unixの許可と時刻を保持します。(まあ、rsync 2でやったrsync 3は-AXを必要とするようだ)
rsync
ドライブをマウントせずにリモートマシンにコピーするようにセットアップすることもできます。
rsyncにはaRsyncなどの GUIフロントエンドがいくつかあります。他のディレクトリ同期ツールについては、この質問を参照してください。
rsync
は良い解決策ですが、アクセス時間を保持しないことに注意してください。pax
(以下の私の答えを参照)します。
man rsync
そして検索preserve times
:)⇒マークからの答えは正しいです。
-t
。バグは、おそらくマーベリックスとヨセミテにも存在します。
を使用しpax
ます。ustarpax
と呼ばれるデフォルトの形式は、ファイルの変更とアクセス時間(ユーザーID、グループID、ファイルモードビット、SpotlightコメントやACLなどの拡張属性など)を保持します。詳細については、こちらのmanページを参照してください。pax
まず、pax
すべてのMacでアーカイブを作成し、次のように外部ハードドライブにコピーします。
ターミナルに入力:
$ cd
そして、そのMac上で結合するファイルが存在するフォルダーをターミナルにドラッグします。
または、完全なフォルダー名を入力できます。
$ cd /path/to/your\ folder
これにより、現在のフォルダーが「your folder」に変更されます。
フォルダーをアーカイブしますpax
。
$ cd ..
$ pax -w "your folder" > yourfolder.ustar
Finderを使用して、新しく作成したアーカイブyourfolder.ustar
を外部ハードドライブにコピーします。
次に、アーカイブを抽出しますpax
。
外部USBハードドライブが接続されているMacでターミナルを開きます。
cd
上記のコマンドを使用して、現在のフォルダーを外部ハードドライブ上の単一フォルダー階層に変更します。
$ cd /Volumes/externalHDD/path/to/single \folder
$ ls
yourfolder.ustar
yourfolder2.ustar
yourfolder3.ustar
アーカイブを抽出します。
$ pax -r -p e < yourfolder.ustar
$ pax -r -p e < yourfolder2.ustar
$ pax -r -p e < yourfolder3.ustar
$ ls
your folder
your folder 2
your folder 3
必要に応じて、Finderでファイルを移動します(Finderは同じボリューム内でファイルの変更とアクセス時間を保持します)。
(この手順はOS X 10.8(Mountain Lion)でテストしました。)
zipで圧縮するか、Ctrlキーを押しながらクリックするか、右クリックして[圧縮]を選択します。圧縮ファイルをターゲットシステムにコピーして、そこで開きます。
可能であれば、外部ドライブをFATではなくMac OSファイルシステムとしてフォーマットします。