สามารถบันทึกการประทับเวลาเมื่อคัดลอกไฟล์ใน OS X ได้หรือไม่?


14

ฉันสนใจที่จะรวมไฟล์จาก Mac สามเครื่องโดยการคัดลอกไฟล์จากแต่ละไฟล์ลงในลำดับชั้นของโฟลเดอร์เดียวของการออกแบบของฉันบนฮาร์ดไดรฟ์ภายนอก

จากประสบการณ์ที่ผ่านมาการคัดลอกไฟล์ใน OSX บางครั้งไฟล์จะสูญเสียการประทับเวลาที่สร้างและแก้ไข เช่นพวกเขาจะเปลี่ยนเป็นช่วงเวลาปัจจุบันเมื่อคัดลอกไฟล์เกิดขึ้น

ฉันจะแน่ใจได้อย่างไรว่าสิ่งนี้จะไม่เกิดขึ้น


คุณสูญเสียการประทับเวลาเมื่อใด
LHF

คัดลอกพวกเขาได้อย่างไร
Gerry

คำตอบ:


11

ฉันแค่วิ่งข้ามสิ่งนี้ไปเองและcpคำสั่งในตัวจะจัดการกับมันได้จริง

ฉันค้นพบการ์ด CF จำนวนมากที่ฉันต้องการเก็บเกี่ยวภาพจาก สคริปต์การประมวลผลของฉันจะดูไฟล์ mtime เพื่อวางไว้ในตำแหน่งที่ถูกต้องดังนั้นฉันจึงจำเป็นต้องเก็บรักษาไว้

จากหน้าคน :

 -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

+1 ง่ายcp -pตรงไปตรงมารักษาเวลาการแก้ไข (น่าจะเป็นประโยชน์มากที่สุดในสามของการประทับเวลาในไฟล์) และไม่จำเป็นต้องสร้างไฟล์เก็บถาวรกลาง
wberry

1
เท่าที่ฉันรู้ "cp -p" จะลืมวันที่สร้างและแทนที่จะตั้งเป็นวันที่แก้ไข ซึ่งเป็นพฤติกรรมที่ไร้สาระมาก
Nicolas Barbulesco

1
cp -pไม่ทำงานเมื่อคัดลอกจาก HFS + ไปยัง FAT32
NobleUplift

9

ฉันใช้rsyncเพื่อทำสำเนาแบบนี้ อย่างไรก็ตามโปรดทราบว่าเวอร์ชันที่จัดทำโดย Apple คือ 2.6.9 และมีข้อบกพร่องเกี่ยวกับเรื่องนี้ ดังนั้นคุณต้องสร้างบุคคลที่สามให้สร้างด้วยตัวคุณเองหรือผ่านผู้จัดการแพคเกจ

ตัวอย่างเช่น

rsync -aE source_dir target_dir

ตัวเลือกการ-Eคัดลอก ACLs และ-aรักษาสิทธิ์ unix และเวลา (ดีมันใน rsync 2 rsync 3 ดูเหมือนว่าต้องการ -AX)

rsync ยังสามารถตั้งค่าให้คัดลอกไปยังเครื่องระยะไกลโดยไม่ต้องติดตั้งไดรฟ์

มีบาง GUI ปลายด้านหน้าสำหรับ rsync เช่นมีaRsync สำหรับเครื่องมือการซิงโครไนซ์ไดเรกทอรีอื่น ๆ โปรดดูคำถามนี้


rsyncเป็นวิธีแก้ปัญหาที่ดี แต่ระวังว่ามันจะไม่รักษาเวลาการเข้าถึง pax(ดูคำตอบของฉันด้านล่าง) ทำ
jaume

1
เท่าที่ฉันรู้ "rsync" จะลืมวันที่สร้างและแทนที่จะตั้งเป็นวันที่แก้ไข ซึ่งเป็นความล้มเหลวครั้งใหญ่
Nicolas Barbulesco

→ jaume: คำสั่งใด ๆ ที่ทำสำเนาไฟล์ "a" ไปยัง "file b" ทุกรูปแบบต้องอ่าน "file a" ก่อน ดังนั้นเวลาในการเข้าถึงของ "file a" จึงควรแก้ไข นี่ไม่ใช่คุณสมบัติที่ระดับคำสั่ง แต่ที่ระดับเคอร์เนล ถ้าคำสั่งผ่านระบบโทรอีกคืนเวลาการเข้าถึงไปสู่สถานะเดิมแล้วนี้เป็นเคล็ดลับที่อันตรายเพราะมันเป็นธรรมดาโกหก
แดน

→ Nicolas: เปรียบเทียบ man rsyncและค้นหาpreserve times:) ⇒คำตอบจาก Mark ถูกต้อง
แดน

1
→ Mark, @daniel - ฉันเพิ่งทดสอบ rsync ใน Mac OS X 10.6.8 สำเนาโลคัลของโฟลเดอร์ที่มี "rsync -rt" จะลืมวันที่สร้างไฟล์และแทนที่ด้วยวันที่แก้ไข แม้จะมีคู่มือสำหรับ "rsync" บอกว่า "รักษาเวลา" -tสำหรับตัวเลือก ข้อผิดพลาดอาจมีอยู่ใน Mavericks และ Yosemite ด้วย
Nicolas Barbulesco

4

paxใช้ paxรูปแบบเริ่มต้นที่เรียกว่าustarรักษาการแก้ไขไฟล์และเวลาในการเข้าถึง (เหนือสิ่งอื่นใดเช่น ID ผู้ใช้ ID กลุ่มบิตโหมดไฟล์และแอตทริบิวต์เพิ่มเติมเช่นความคิดเห็น Spotlight และ ACLs) ดูpaxหน้าคนที่นี่เพื่อดูรายละเอียดเพิ่มเติม

ก่อนอื่นให้สร้างpaxไฟล์เก็บถาวรบน Mac ทุกเครื่องแล้วคัดลอกไปยังฮาร์ดไดรฟ์ภายนอกเช่นนี้

  1. เปิดแอปพลิเคชั่น> โปรแกรมอรรถประโยชน์> เทอร์มินัล
  2. พิมพ์ในเทอร์มินัล:

    $ cd
    

    และลากโฟลเดอร์ที่มีไฟล์ที่จะรวมอยู่ใน Mac นั้นไปยัง Terminal:

    ป้อนคำอธิบายรูปภาพที่นี่

    หรือคุณสามารถพิมพ์ชื่อโฟลเดอร์แบบเต็ม:

    $ cd /path/to/your\ folder
    

    นี่จะเปลี่ยนโฟลเดอร์ปัจจุบันเป็น 'โฟลเดอร์ของคุณ'

  3. เก็บถาวรโฟลเดอร์ด้วยpax:

    $ cd ..
    $ pax -w "your folder" > yourfolder.ustar
    
  4. ใช้ Finder เพื่อคัดลอกไฟล์เก็บถาวรสร้างใหม่yourfolder.ustarไปยังฮาร์ดไดรฟ์ภายนอก

จากนั้นแยกคลังเก็บด้วยpax:

  1. เปิด Terminal บน Mac ที่มีฮาร์ดไดรฟ์ USB ภายนอกเสียบอยู่

  2. เปลี่ยนโฟลเดอร์ปัจจุบันเป็นลำดับชั้นของโฟลเดอร์เดียวบนฮาร์ดไดรฟ์ภายนอกด้วยคำสั่งcdตามที่อธิบายข้างต้น:

    $ cd /Volumes/externalHDD/path/to/single \folder
    $ ls
    yourfolder.ustar
    yourfolder2.ustar
    yourfolder3.ustar
    
  3. แตกไฟล์เก็บถาวร:

    $ 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. ย้ายไฟล์ไปรอบ ๆ ด้วย Finder หากคุณต้องการ (Finder จะรักษาการแก้ไขไฟล์และเวลาการเข้าถึงภายในโวลุ่มเดียวกัน)

(ฉันได้ทดสอบขั้นตอนนี้ใน OS X 10.8 (Mountain Lion))


1
ใช้งานไม่ได้กับชื่อไฟล์ที่ยาวกว่า 200 ตัวอักษรcommunity.hpe.com/t5/Ignite-UX/…
amleszk

0

บีบอัดด้วย zip หรือเลือกด้วย ctrl-click หรือคลิกขวาและเลือกบีบอัด คัดลอกไฟล์บีบอัดไปยังระบบเป้าหมายของคุณและเปิดไฟล์นั้น

หากทำได้ให้ฟอร์แมตไดรฟ์ภายนอกเป็นระบบไฟล์ Mac OS ไม่ใช่ FAT


ไม่ใช่ตัวเลือกคลิก Ctrl คลิก หรือคลิกขวา
Nicolas Barbulesco

1
ทางเลือกที่ดีที่สุดสำหรับการฟอร์แมตดิสก์คือ Mac OS Extended Journalled Mac OS Extended เรียกอีกอย่างว่า HFS +
Nicolas Barbulesco
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.