क्या ओएस एक्स पर फ़ाइलों की नकल करते समय टाइमस्टैम्प संरक्षित किया जा सकता है?


15

मैं एक बाहरी हार्ड ड्राइव पर अपने डिजाइन के एकल फ़ोल्डर पदानुक्रम में हर एक से फ़ाइलों की प्रतिलिपि बनाकर तीन मैक से फ़ाइलों के संयोजन में दिलचस्पी रखता हूं।

OSX में फ़ाइलों को कॉपी करने के मेरे पिछले अनुभव में, कभी-कभी फाइलें अपने बनाए और संशोधित टाइमस्टैम्प को खो देती हैं; यानी फ़ाइल कॉपी होने पर उन्हें वर्तमान क्षण में बदल दिया जाता है।

मैं यह कैसे सुनिश्चित कर सकता हूं कि ऐसा न हो?


आप टाइमस्टैम्प कब खोते हैं?
lhf

उन्हें नकल कैसे?
गेरी

जवाबों:


12

मैं बस अपने आप को इस पार ले गया, और cpवास्तव में निर्मित कमांड इसे संभालता है।

मैंने पुराने सीएफ कार्डों का एक गुच्छा खोजा, जिनसे मैं चित्रों को काटना चाहता था। मेरी प्रसंस्करण स्क्रिप्ट फ़ाइल 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सीधा-आगे है, संशोधित समय (संभवतः एक फ़ाइल पर तीन टाइमस्टैम्प का सबसे उपयोगी) को संरक्षित करता है और एक मध्यवर्ती संग्रह फ़ाइल के निर्माण की आवश्यकता नहीं होती है।
19

1
जहां तक ​​मुझे पता है, "cp -p" निर्माण की तारीख को भूल जाता है और इसके बजाय इसे मॉडिफाइड तिथि पर सेट करता है। जो काफी बेतुका व्यवहार है।
निकोलस बारबुलेसको

1
cp -pहालांकि HFS + से FAT32 में कॉपी करते समय काम नहीं करता है।
नोबल उत्थान

9

मैं इस तरह की कॉपी करने के लिए rsync का उपयोग करता हूं । हालाँकि ध्यान दें कि Apple द्वारा दिया गया संस्करण 2.6.9 है और इस पर कीड़े हैं। तो आपको एक तीसरी पार्टी बनाने की आवश्यकता है जो या तो खुद का निर्माण करे या पैकेज मैनेजर के माध्यम से

उदाहरण के लिए

rsync -aE source_dir target_dir

विकल्प -EACLs को कॉपी करता है और -aयूनिक्स अनुमतियों और समय को संरक्षित करता है। (अच्छी तरह से यह rsync 2 पर किया rsync 3 की जरूरत है -AX)

rsync बढ़ते ड्राइव के बिना दूरस्थ मशीनों की प्रतिलिपि बनाने के लिए भी सेटअप किया जा सकता है।

Rsync जैसे aRsync के लिए कुछ GUI फ्रंट एंड हैं । अन्य निर्देशिका सिंक्रनाइज़ेशन टूल के लिए यह प्रश्न देखें ।


rsyncएक अच्छा समाधान है, लेकिन इस बात का ध्यान रखें कि यह एक्सेस टाइम को संरक्षित नहीं करता है। pax(नीचे मेरा जवाब देखें) करता है।
jaume

1
जहाँ तक मुझे पता है, "rsync" निर्माण की तारीख को भूल जाता है और इसके बजाय इसे मॉडिफाइ तिथि पर सेट करता है। जो एक बड़ी विफलता है।
निकोलस बारबुलेसको

→ jaume: कोई भी "फ़ाइल" की ओर "फाइल ए" की प्रतिलिपि बनाने वाले किसी भी कमांड को पहले "फाइल" पढ़ना होगा। इसलिए "फ़ाइल" का एक्सेस समय संशोधित किया जाना चाहिए। यह कमांड स्तर पर नहीं बल्कि कर्नेल स्तर पर एक विशेषता है। यदि एक अन्य सिस्टम कॉल के माध्यम से एक कमांड, अपनी पिछली स्थिति तक पहुंच का समय पुनर्स्थापित करता है, तो यह एक खतरनाक चाल है, क्योंकि यह एक सादा झूठ है
dan

→ निकोलस: cf. man rsyncऔर preserve times:) के लिए खोज ⇒ मार्क से उत्तर सही है।
dan

1
→ मार्क, @ डैनियल - मैंने अभी मैक ओएस एक्स 10.6.8 में rsync का परीक्षण किया है। "Rsync -rt" के साथ एक फ़ोल्डर की एक स्थानीय प्रतिलिपि फ़ाइलों के निर्माण की तारीख को भूल जाती है और इसे उनके मॉडिफाइ डेट के साथ बदल देती है। "Rsync" के लिए मैनुअल के बावजूद "विकल्प के लिए" बार संरक्षित करें -t। बग शायद मावेरिक्स और योसेमाइट में भी मौजूद है।
निकोलस बारबुल्स्को

4

का उपयोग करें pax। डिफ़ॉल्ट paxप्रारूप, जिसे ustar कहा जाता है , फ़ाइल संशोधन और एक्सेस टाइम (उपयोगकर्ता आईडी, समूह आईडी, फ़ाइल मोड बिट्स और स्पॉटलाइट टिप्पणियों और ACLs जैसी विस्तारित विशेषताओं के बीच) को संरक्षित करता है। देखें paxआदमी पेज यहाँ अधिक जानकारी के लिए।

सबसे पहले, paxहर मैक पर एक आर्काइव बनाएं और इसे बाहरी हार्ड ड्राइव पर इस तरह से कॉपी करें:

  1. ओपन एप्लीकेशन> यूटिलिटीज> टर्मिनल।
  2. टर्मिनल में टाइप करें:

    $ cd
    

    और उस फोल्डर को खींचें, जहां संयुक्त की जाने वाली फाइलें उस मैक पर टर्मिनल में रहती हैं:

    यहाँ छवि विवरण दर्ज करें

    वैकल्पिक रूप से आप पूरा फ़ोल्डर नाम टाइप कर सकते हैं:

    $ cd /path/to/your\ folder
    

    यह वर्तमान फ़ोल्डर को 'आपके फ़ोल्डर' में बदल देगा।

  3. इसके साथ फ़ोल्डर को संग्रहीत करें pax:

    $ cd ..
    $ pax -w "your folder" > yourfolder.ustar
    
  4. yourfolder.ustarबाहरी हार्ड ड्राइव में नव निर्मित संग्रह को कॉपी करने के लिए फाइंडर का उपयोग करें ।

फिर अभिलेखागार को इसके साथ निकालें pax:

  1. मैक पर ओपन टर्मिनल जिसमें बाहरी 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. यदि आपको जरूरत हो तो फाइंडर के साथ फाइलों को इधर-उधर खिसकाएं (फाइंडर एक ही वॉल्यूम के भीतर फाइल मॉडिफिकेशन और एक्सेस टाइम को संरक्षित करता है)।

(मैंने ओएस एक्स 10.8 (माउंटेन लायन) पर इस प्रक्रिया का परीक्षण किया है।)


1
फ़ाइल नामों के लिए लंबे समय तक काम नहीं करता है, तो 200 वर्ण समुदाय
.hpe.com

0

ज़िप के साथ उन्हें संपीड़ित करें या उन्हें ctrl-click या राइट-क्लिक से चुनें और कम्प्रेशन चुनें। संपीड़ित फ़ाइलों को अपने लक्ष्य सिस्टम में कॉपी करें और उन्हें वहां खोलें।

यदि आप कर सकते हैं, तो मैक ओएस फाइलसिस्टम के रूप में अपने बाहरी ड्राइव को प्रारूपित करें, एफएटी नहीं।


विकल्प नहीं क्लिक करें। Ctrl-क्लिक करें। या राइट-क्लिक करें।
निकोलस बारबुल्स्को

1
डिस्क को स्वरूपित करने के लिए सबसे अच्छा विकल्प मैक ओएस एक्सटेंडेड जर्नल्ड है। Mac OS Extended को HFS + भी कहा जाता है।
निकोलस बारबुल्स्को
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.