फ़ाइल को अपने पिछले संशोधित समय में बदलाव किए बिना यूनिक्स में कैसे कॉपी करें?


89

यदि मैं किसी फाइल को किसी जगह से दूसरी जगह कॉपी करता हूं cp, तो कॉपी किए गए फाइल पर टाइमस्टैम्प कॉपी के समय पर सेट किया जाता है।

क्या इससे बचने का कोई रास्ता है?

मुझे उनके टाइमस्टैम्प को बदले बिना फ़ाइलों को कॉपी करने की आवश्यकता है।

जवाबों:


103

cp -pउसने चाल चली। लिनक्स के लिए :

-p के समान --preserve=mode,ownership,timestamps

FreeBSD के लिए :

-p प्रतिलिपि में प्रत्येक स्रोत फ़ाइल के निम्नलिखित गुणों को संरक्षित करने के लिए cp: संशोधन समय, पहुँच समय, फ़ाइल फ़्लैग, फ़ाइल मोड, ACL, उपयोगकर्ता ID और समूह ID, जैसा कि अनुमतियों द्वारा अनुमत है।

और ओएस एक्स के लिए :

-pप्रतिलिपि में प्रत्येक स्रोत फ़ाइल के निम्न गुणों को संरक्षित करने के लिए cp: संशोधन समय, पहुँच समय, फ़ाइल फ़्लैग, फ़ाइल मोड, उपयोगकर्ता ID और समूह ID, जैसा कि अनुमतियों द्वारा अनुमत है। संसाधन कांटे सहित एक्सेस कंट्रोल लिस्ट (एसीएल) और विस्तारित गुण (ईएएस) को भी संरक्षित किया जाएगा।


25
cp -a यह जानकर भी अच्छा लगता है, इसका तात्पर्य केवल -p ही नहीं, बल्कि -R को संपूर्ण निर्देशिकाओं की प्रतिलिपि बनाने के लिए और -d लिंक संरक्षित करने के लिए -d है।
कैजुअलूसर

2
ध्यान दें कि जब GNU Coreutils का उपयोग cp -pन केवल समय स्टाम्प, बल्कि मोड और स्वामित्व भी करता है और संशोधन समय के अलावा FreeBSD पर भी »एक्सेस समय, फ़ाइल फ़्लैग, फ़ाइल मोड, ACL, उपयोगकर्ता ID और समूह ID को संरक्षित करता है, जैसा कि अनुमति है अनुमतियों द्वारा। «और ओएस एक्स पर इसके अतिरिक्त» विस्तारित गुण, संसाधन कांटे सहित।
स्टीफन श्मिट

नवीनतम OSX पर, cp -p अभी भी स्रोत फ़ाइल के टाइमस्टैम्प को छूता है
afathman

15

GNU Coreutilscp से उपयोग करते समय , केवल टाइमस्टैम्प को संरक्षित करने के लिए और उपयोगकर्ता आईडी, समूह आईडी या फ़ाइल मोड जैसी विशेषताओं के लिए कोई ऐसा लॉन्गहैंड नहीं है --preserveजो स्पष्ट रूप से संरक्षित की जाने वाली विशेषताओं की सूची निर्दिष्ट करने की अनुमति देता है।

cp --preserve=timestamps source destination

हालांकि यह जान लें कि यह सिंटैक्स शायद अन्य यूनियनों पर समर्थित नहीं है। एक विकल्प के --timesपैरामीटर का उपयोग करने के लिए हो सकता है rsyncजिसमें से अधिकांश प्रतिष्ठानों पर उपलब्ध होना चाहिए।


4
यह सही उत्तर है। उपयोग करना -pसही उत्तर नहीं है। -pस्वामित्व और मोड को भी बनाए रखता है। जिसे चाहा नहीं जा सकता है .. और प्रश्न में नहीं पूछा गया था।
15:23 बजे bshea

10

एक यूनिक्स फाइल सिस्टम पर तीन बार होते हैं, एक्सेस टाइम (Atime), मॉडिफिकेशन टाइम (MIME) और इनोड चेंज टाइम (ctime)। आप उदाहरण के लिए स्पर्श कार्यक्रम के साथ पहुंच समय और संशोधन समय को बदल सकते हैं

cp मूल प्रति
स्पर्श -r मूल प्रति

हालाँकि, आप इनकोड परिवर्तन समय नहीं बदल सकते।


1
इनोड बदलने के समय के लिए, लिनक्स
सादाऊ

0

मुझे हाल ही में कुछ ऐसा ही करने की ज़रूरत थी लेकिन सिम्लिंक का उपयोग करने के बजाय। एक सिमलिंक बनाने और ओरिजिनल टाइमस्टैम्प को संरक्षित करने के लिए:cp -ps src_file dst_symlink


एक टिप्पणी के रूप में यह कुछ पाठकों के लिए उपयोगी हो सकता है, एक उत्तर के रूप में यह अधिकांश पाठकों के लिए शोर जोड़ता है।
ndemou
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.