मुझे अपने पीसी या लैपटॉप से यूएसबी ड्राइव में कॉपी की गई फ़ाइलों के टाइमस्टैम्प्स की समस्या है: मूल फ़ाइल का अंतिम संशोधन समय और कॉपी की गई फ़ाइल अलग-अलग हैं। इसलिए, मेरे पीसी और मेरे यूएसबी ड्राइव के बीच फ़ाइलों को सिंक्रनाइज़ करना काफी बोझिल है।
एक कदम से कदम विवरण
मैं अपने पीसी / लैपटॉप से एक मनमाना फ़ाइल को GUI या कमांड के साथ USB ड्राइव में कॉपी करता हूं
cp -a file.txt /media/gabor/CORSAIR/
मैं मूल फ़ाइल के अंतिम संशोधन समय की जाँच करता हूँ:
$ ls -l --time-style=full-iso file.txt -rw-rw-r-- 1 gabor gabor 0 2018-09-22 15:09:23.317098281 +0200 file.txt
मैं कॉपी किए गए फ़ाइल के अंतिम संशोधन समय की जांच करता हूं:
$ ls -l --time-style=full-iso /media/gabor/CORSAIR/file.txt -rw-r--r-- 1 gabor gabor 0 2018-09-22 15:09:23.000000000 +0200 /media/gabor/CORSAIR/file.txt
जैसा कि आप देख सकते हैं, कॉपी किए गए फ़ाइल के अंतिम संशोधन समय में सेकंड शून्य दशमलव अंकों में काट दिए जाते हैं। हालांकि, अगर मैं कमांड दर्ज करता हूं
if ! [ file.txt -nt /media/gabor/CORSAIR/file.txt ] && ! [ file.txt -ot /media/gabor/CORSAIR/file.txt ]; then echo "The last modification times are equal."; fi
मुझे आउटपुट मिलता है The last modification times are equal.
यदि मैं USB ड्राइव को अनमाउंट और रिमूव करता हूं तो स्थिति बदल जाती है और मैं अंतिम दो कमांड को फिर से निष्पादित करता हूं:
$ ls -l --time-style=full-iso /media/gabor/CORSAIR/file.txt -rw-r--r-- 1 gabor gabor 0 2018-09-22 15:09:22.000000000 +0200 /media/gabor/CORSAIR/file.txt $ if [ file.txt -nt /media/gabor/CORSAIR/file.txt ]; then echo "The file is newer on the PC."; fi The file is newer on the PC.
इसलिए रिमाउंट के बाद, कॉपी किए गए फ़ाइल का अंतिम संशोधन समय एक सेकंड कम हो जाता है। इसके अलावा, आगे बढ़ना और दूर करना, हालांकि, अंतिम संशोधन समय को और अधिक प्रभावित नहीं करता है। इसके अलावा, फ़ाइलों पर परीक्षण अब दिखाता है कि पीसी पर फ़ाइल नया है (हालांकि यह नहीं है)।
स्थिति इस तथ्य से और अधिक जटिल है कि फाइलों का अंतिम संशोधन समय मेरे पीसी पर और मेरे लैपटॉप पर अलग-अलग दिखाया गया है , अंतर बिल्कुल 2 घंटे का है, हालांकि मेरे पीसी पर और मेरे लैपटॉप पर दिनांक और समय सेटिंग समान है!
अग्रिम जानकारी
मेरे पीसी और लैपटॉप दोनों ही व्यवहार को दर्शाते हैं, ऊपर वर्णित है। मेरे पास अपने पीसी पर Ubuntu 14.04.5 (भरोसेमंद) और अपने लैपटॉप पर Ubuntu 16.04.2 (xenial) है।
मेरे USB ड्राइव में vfat फाइल सिस्टम है। mount | grep CORSAIR
मेरे पीसी पर आउटपुट है
/dev/sdb1 on /media/gabor/CORSAIR type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks2)
mount | grep CORSAIR
मेरे लैपटॉप पर आउटपुट है
/dev/sdb1 on /media/gabor/CORSAIR type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
मेरे अन्य USB ड्राइव समान व्यवहार दिखाते हैं।
सवाल
क्या अंतिम संशोधन समय में अंतर किसी तरह समाप्त किया जा सकता है? उदाहरण के लिए, बढ़ते / अनमाउंटिंग में अन्य मापदंडों का उपयोग करना? या यह उबंटू में एक बग है?
मैं यह हासिल करना चाहूंगा कि मूल और कॉपी की गई फ़ाइलों की टाइमस्टैम्प बिल्कुल समान हैं, ताकि सिंक्रोनाइज़ेशन को अधिक कुशलता से किया जा सके। इसके अलावा, मैं अपने यूएसबी ड्राइव पर vfat फाइल सिस्टम रखना चाहूंगा, ताकि मैं उन्हें विंडोज के तहत भी इस्तेमाल कर सकूं।
ext4
फाइल सिस्टम? (माइक्रोसॉफ्ट मालिकाना फाइल सिस्टम, FAT32, exFAT, NTFS के लिए लिनक्स में समर्थन, कुछ सीमा नहीं है।) देखें इस लिंक जिससे पता चलता है न केवलext4
लेकिन यह भीudf
माइक्रोसॉफ्ट मालिकाना फाइल सिस्टम के लिए विकल्प के रूप में।