Bisakah stempel waktu dipertahankan saat menyalin file pada OS X?

14

Saya tertarik untuk menggabungkan file dari tiga Mac dengan menyalin file dari masing-masing ke dalam hirarki folder desain saya pada hard drive eksternal.

Dalam pengalaman saya sebelumnya menyalin file dalam OSX, kadang - kadang file kehilangan cap waktu Dibuat dan Dimodifikasi; yaitu mereka diubah ke saat sekarang ketika copy file terjadi.

Bagaimana saya bisa memastikan ini tidak terjadi?

kaca
sumber
Kapan Anda kehilangan cap waktu?
lhf
Menyalin mereka bagaimana?
Gerry

Jawaban:

11

Saya hanya berlari melintasi ini sendiri, dan cpperintah bawaan sebenarnya menanganinya.

Saya menemukan banyak kartu CF lama yang ingin saya ambil gambarnya. Skrip pemrosesan saya akan melihat file mtime untuk meletakkannya di tempat yang benar sehingga saya membutuhkannya dipertahankan.

Dari halaman manual :

 -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.

Jadi, menggunakan zshsaya dapat menjalankan ( NO NAMEmenjadi nama volume kartu saya):

cp -rvp /Volumes/NO\ NAME/DCIM/**/*.{JPG,jpg} ~/Desktop/tmp/pics

Saya percaya bahwa /**/*konstruksi khusus khusus untuk ZSH; namun Anda dapat melakukan sesuatu seperti

find /Volumes/WHATEVER -type d -print0 | xargs cp -vp {}/*.JPG /my/out/path
Andrew Burns
sumber
+1 Sederhana cp -pmudah, mempertahankan waktu yang diubah (kemungkinan yang paling berguna dari tiga cap waktu pada file) dan tidak memerlukan pembuatan file arsip perantara.
wberry
1
Sejauh yang saya tahu, "cp -p" lupa tanggal pembuatan dan alih-alih menetapkannya ke tanggal modif. Yang merupakan perilaku yang tidak masuk akal.
Nicolas Barbulesco
1
cp -ptidak berfungsi saat menyalin dari HFS + ke FAT32.
NobleUplift
9

Saya menggunakan rsync untuk melakukan salinan semacam ini. Namun perhatikan bahwa versi yang disediakan oleh Apple adalah 2.6.9 dan memiliki bug pada ini. Jadi, Anda perlu membuat pihak ketiga yang dibangun baik membangun sendiri atau melalui manajer paket

sebagai contoh

rsync -aE source_dir target_dir

Opsi ini -Emenyalin ACL dan -amempertahankan izin dan waktu unix. (Yah itu pada rsync 2 rsync 3 tampaknya perlu -AX)

rsync juga dapat diatur untuk menyalin ke mesin jarak jauh tanpa memasang drive.

Ada beberapa ujung depan GUI untuk rsync misalnya aRsync . Untuk alat sinkronisasi direktori lainnya, lihat pertanyaan ini .

pengguna151019
sumber
rsyncadalah solusi yang baik, tetapi perlu diingat bahwa itu tidak menghemat waktu akses. pax(lihat jawaban saya di bawah) tidak.
jaume
1
Sejauh yang saya tahu, "rsync" lupa tanggal pembuatan dan alih-alih menetapkannya ke tanggal modif. Yang merupakan kegagalan besar.
Nicolas Barbulesco
→ jaume: perintah apa pun yang membuat segala bentuk salinan "file a" ke arah "file b" harus membaca "file a" terlebih dahulu. Karenanya waktu akses "file a" harus dimodifikasi. Ini bukan fitur di level perintah tetapi di level kernel. Jika suatu perintah, melalui pemanggilan sistem lain, mengembalikan waktu akses ke keadaan sebelumnya, maka ini adalah trik yang berbahaya, karena itu adalah kebohongan biasa .
dan
→ Nicolas: lih. man rsyncdan cari preserve times:) ⇒ jawaban dari Mark sudah benar.
dan
1
→ Mark, @daniel - Saya baru saja menguji rsync di Mac OS X 10.6.8. Salinan lokal folder dengan "rsync -rt" lupa tanggal pembuatan file dan menggantinya dengan tanggal modif. Meskipun manual untuk "rsync" mengatakan "pertahankan waktu" untuk opsi -t. Bugnya mungkin ada di Mavericks dan Yosemite juga.
Nicolas Barbulesco
4

Gunakan pax. paxFormat default , yang disebut ustar , mempertahankan modifikasi file dan waktu akses (antara lain seperti ID pengguna, ID grup, bit mode file dan atribut tambahan seperti komentar Spotlight dan ACL). Lihat paxhalaman manual di sini untuk lebih jelasnya.

Pertama, buat paxarsip di setiap Mac dan salin ke hard drive eksternal seperti ini:

  1. Buka Aplikasi> Utilitas> Terminal.
  2. Ketik Terminal:

    $ cd
    

    dan seret folder tempat file yang akan digabungkan berada pada Mac ke Terminal:

    masukkan deskripsi gambar di sini

    Atau Anda dapat mengetik nama folder lengkap:

    $ cd /path/to/your\ folder
    

    Ini akan mengubah folder saat ini menjadi 'folder Anda'.

  3. Arsipkan folder dengan pax:

    $ cd ..
    $ pax -w "your folder" > yourfolder.ustar
    
  4. Gunakan Finder untuk menyalin arsip yang baru dibuat yourfolder.ustarke hard drive eksternal.

Kemudian ekstrak arsip dengan pax:

  1. Buka Terminal pada Mac yang memasang hard drive USB eksternal.

  2. Ubah folder saat ini ke hierarki folder tunggal pada hard drive eksternal dengan perintah cdseperti yang dijelaskan di atas:

    $ cd /Volumes/externalHDD/path/to/single \folder
    $ ls
    yourfolder.ustar
    yourfolder2.ustar
    yourfolder3.ustar
    
  3. Ekstrak arsip:

    $ 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
    
  4. Pindahkan file-file dengan Finder jika Anda perlu (Finder menyimpan modifikasi file dan waktu akses dalam volume yang sama).

(Saya sudah menguji prosedur ini pada OS X 10.8 (Mountain Lion).)

Jaume
sumber
1
Tidak dapat digunakan untuk nama file yang lebih panjang dari 200 karakter community.hpe.com/t5/Ignite-UX/…
amleszk
0

Kompres dengan zip atau pilih dengan ctrl-klik atau klik kanan dan pilih Kompres. Salin file yang dikompresi ke sistem target Anda dan buka di sana.

Jika Anda bisa, format drive eksternal Anda sebagai sistem file Mac OS, bukan FAT.

lhf
sumber
Bukan Opsi-klik. Ctrl-klik. Atau klik kanan.
Nicolas Barbulesco
1
Pilihan terbaik untuk memformat disk adalah Mac OS Extended Journalled. Mac OS Extended juga disebut HFS +.
Nicolas Barbulesco