मैं सेंटोस 5.5 का उपयोग कर रहा हूं और बड़ी मात्रा में फ़ोल्डरों को एक वॉल्यूम में ले जाना चाहूंगा , उन्हें बरकरार रखूंगा mtime
।
सबसे अच्छा समाधान मैं इस तरह मिल सकता है:
cp -p -r source/data target/
rm -rf source/data
एनएफएस शेयर पर 1TB से अधिक डेटा के साथ, नकल हमेशा के लिए हो जाती है। मैं कॉपी नहीं करना चाहता। मुझे तात्कालिक कदम चाहिए।
जब मैं किसी फ़ोल्डर का उपयोग कर ले जाता हूं mv source/data target/
, तो mtime
फ़ोल्डर (फ़ाइलों का नहीं) वर्तमान समय के लिए सेट हो जाता है। ऐसा इसलिए है क्योंकि मैं जिस फ़ोल्डर की सामग्री को स्थानांतरित कर रहा हूं वह इस ऑपरेशन द्वारा संशोधित हो जाता है ( ..
प्रविष्टि एक अलग इनोड की ओर इशारा करती है)।
मैं निम्नलिखित शेल स्क्रिप्ट के साथ आया था जिसे मैंने कहा था mv_preserve_mtime.sh
:
#!/bin/bash
# Moves source folder to target folder.
# You are responsible for making sure the target does not exist, otherwise this blows up
export timestamp=`stat -c %y $1`
mv "$1" "$2"
touch --date="${timestamp}" $2
खैर, यह भी काम नहीं किया। फ़ोल्डर mtime
को पुनर्स्थापित किया जाता है, लेकिन मेरे द्वारा चलाए जाने वाले फ़ोल्डर के भीतर सभी फ़ोल्डर (केवल 1 स्तर गहरा) उन mtime
कारणों के लिए अपना रीसेट प्राप्त करते हैं जिन्हें मैं नहीं समझता हूं।
क्या किसी के पास उचित, कुशल और सही समाधान है?
mv
कदम है जो परेशानी का कारण बनता है। एनएफएस सर्वर वास्तव में एक नेटएप स्टोरेज है, मैं इसके इंटर्न के बारे में लगभग कुछ भी नहीं जानता हूं।
touch
काम करना चाहिए था। वैसे एक और पोर्टेबल तरीका होगा touch -r "$1" reference.tmp; mv -- "$1" "$2"; touch -r reference.tmp -- "$2"; rm reference.tmp
।
stat
नहीं था कि पोर्टेबल नहीं था।
touch
काम नहीं चला। क्या यहmv
चरण याtouch
चरण है जो उपनिर्देशिकाओं के माइम को बदलता है? NFS सर्वर पर OS क्या है, और यदि आप जानते हैं कि फाइलसिस्टम क्या है?