जब स्रोत वृक्ष में एक आरोह बिंदु होता है, तो फाइलों पर समय की मोहर लगाने के लिए rsync को कैसे बताएं


41

इस सवाल से संबंधित

समस्या का संक्षिप्त विवरण:

जब स्रोत ट्री के अंदर एक आरोहित बिंदु होता है, तो लक्ष्यित पेड़ पर कॉपी किए जाने पर उस माउंट किए गए बिंदु के अंदर फ़ाइलों पर समय स्टैम्प का उपयोग करते समय भी संरक्षित नहीं किया जाता -aहै

विस्तृत विवरण:

मान लें कि यह स्रोत वृक्ष है:

                       /home/                           /home/
                         |                                |
                        me/                             BACKUP/
                         |                                |
                    +----+----------+                +----+-------+
                    |    |          |                |    |       |
                 data/  foo.txt    boo.txt         data/ foo.txt boo.txt
                    |                                |
                   a.txt                           a.txt

जहां data/ऊपर बाहरी USB डिस्क लगाई गई है। सब कुछ ext4फाइल सिस्टम है। स्रोत में सब कुछ मेरे स्वामित्व में है me

BACKUP माउंट पॉइंट, बैकअप USB डिस्क भी हुआ।

इस आदेश को जारी करने के बाद rsync -av --delete /home/me/ /home/BACKUP/, मैंने पाया कि /home/BACKUP/data/और इसके नीचे की सभी चीजों पर वर्तमान समय की मोहर है, जैसे कि ये फाइलें अब बनाई गई हैं, न कि फाइलों में समय की मोहर /home/me/data/। अन्य फ़ाइलों और फ़ोल्डरों के dataपास टाइम स्टैम्प संरक्षित ओके है।

प्रश्न यह है: rsyncउपरोक्त सेटिंग में कैसे उपयोग करें कि यह एक घुड़सवार बिंदु पर फ़ाइलों और फ़ोल्डरों पर भी सभी फ़ाइलों और फ़ोल्डरों पर समय टिकटों को संरक्षित करने के लिए कहें?

मै इस्तेमाल कर रहा हूँ:

>uname -a
Linux 3.5.0-17-generic #28-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux

>rsync -v
rsync  version 3.0.9  protocol version 30

जवाबों:


45

से man rsync:

   -t, --times                 preserve modification times

EDIT - इस उत्तर पर सुधार करने के लिए क्योंकि यह तुरंत स्पष्ट नहीं है कि इसने ओपी की मदद क्यों नहीं की:

ओपी एक फाइल सिस्टम से दूसरे फाइल को कॉपी कर रहा है और संरक्षित करना चाहता है c-time। अधिकांश लोग c-time"समय बनाने" का मतलब समझते हैं जो कि अधिकांश UNIX / Linux सिस्टम पर गलत है (विंडोज़ फाइल सिस्टम "निर्माण" या "जन्म" बार ट्रैक करता है)।

अधिकांश भाग के लिए, UNIX और Linux में, c-timeटाइमस्टैम्प का उपयोग अंतिम इनोड ' C ' हैंग को रिकॉर्ड करने के लिए किया जाता है । यदि इसकी कोई विशेषता अपडेट की जाती है, तो एक इनकोड बदल जाता है:

c-timeजब वे एक नई फाइलसिस्टम पर लाए जाते हैं तो ओपी उनकी फाइल की सुरक्षा नहीं कर सकता । नए फाइल सिस्टम में इन फाइलों का निर्माण ऊपर सूचीबद्ध शर्तों में से एक है (इनोड / फाइल का निर्माण)।

/ संपादित करें


9
धन्यवाद। मुझे पता है कि। लेकिन कृपया प्रश्न को फिर से ध्यान से पढ़ें। मैं उपयोग किया था -a: जो कहते हैं archive mode; equals -rlptgoD की वजह -tपहले से शामिल है।
नासिर

1
क्या आप परिवर्तन समय को संरक्षित करने की कोशिश कर रहे हैं? समय के लिए (स्थिति) परिवर्तन "बनाया" के लिए नहीं है
h3rrmiller

1
मैं चाहता हूं कि यह उसी तरह काम करे जैसे यह उन फाइलों पर करता है जो माउंटेड डिस्क पर नहीं हैं। यानी उसी टाइम स्टैम्प ls -lको रखें जो फाइल पर करते समय दिखता है । यह उन फाइलों पर काम करता है जो माउंट पॉइंट के अंदर नहीं हैं। लेकिन सभी फाइलें जो माउंट बिंदु के अंदर हैं, उन पर समय की मोहर लगाते हुए संकेत देती हैं कि वे अभी बनाई गई थीं। इस समय आप जो भी कहेंगे। मैं सिर्फ यह चाहता था कि स्रोत में फाइलों पर उसी समय की मुहर का उपयोग किया जाए। अब ऐसा नहीं है। मैं चाहता हूं कि हर समय पहलुओं की नकल की जाए। यानी फाइल का क्लोन बनाया जाए। निर्माण का समय, परिवर्तन का समय, आदि ...
नासिर

4
परिवर्तन समय (ctime) इनोड (यानी निर्माण / अनुमति परिवर्तन / चलती / आदि) में परिवर्तन पर अद्यतन हो जाता है। क्योंकि आप एक नया आईनोड बना रहे हैं (क्योंकि आप फाइल सिस्टम के साथ फाइल को कॉपी कर रहे हैं (अलग-अलग इनकोड टेबल) केम को अपडेट किया गया है। इसके आस-पास कोई रास्ता नहीं है क्योंकि यह इनकोड का परिवर्तन है, न कि फाइल को देखने का। en.wikipedia.org/wiki/Stat_(system_call)#ctime
h3rrmiller

3
ls -lMIME को संशोधित करता है (संशोधित) दिखाता है
h3rrmiller

6

के रूप में hr3miller पहले से ही कहा, -a (या --archive) -rlptgoD के बराबर है और पहले से ही सिंक समय शामिल है।

हालाँकि जब rsync डेटा को कॉपी करता है, जैसे। NFS / FAT32 / NTFS माउंट जहां उपयोगकर्ता और मालिक को संरक्षित करना विफल रहता है, rsync समय निर्धारित करने का प्रयास नहीं करेगा। Rsync जैसे कुछ के साथ चेतावनी देगा

rsync: chown "/mnt/backup/postgres/hourly.0/primary/var" failed: Operation not permitted (1)

इसलिए उपयोग करके उपयोगकर्ता और समूह को संरक्षित करना छोड़ दें

-rlptD

के बजाय

-rlptgoD

केवल इसका उपयोग तब करें जब मालिक और समूह को संरक्षित न करना आपके लिए एक विकल्प हो। ध्यान दें कि सहिष्णुता और अन्य सुविधाओं को संरक्षित करना उस व्यवहार को भी ट्रिगर कर सकता है। आपको हर उस rsync सुविधा (-r -l -p -t -g -o -D) के लिए मैन पेज से गुजरना होगा जिसका आप बैकअप लेना चाहते हैं।


-2

मैं उपयोग करता हूं rsync -azऔर सुनिश्चित करता हूं कि यह मेरे संशोधन समय को सुरक्षित रखता है। मैंने अभी इसे डबल-चेक किया।


2
ऐसा इसलिए है क्योंकि -a( --archive) शामिल हैं -t
हेम्यल

हालाँकि, कोई भी समय मनमाने ढंग से रीसेट नहीं किया जा सकता है। (मैं मूल रूप से क्सेटिटोन को गलत समझता हूं, क्षमा करें।)
मिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.