ฉันมีปัญหากับการประทับเวลาของไฟล์ที่คัดลอกจากพีซีหรือแล็ปท็อปไปยังไดรฟ์ USB: เวลาแก้ไขครั้งล่าสุดของไฟล์ต้นฉบับและของไฟล์ที่คัดลอกมานั้นแตกต่างกัน ดังนั้นการซิงโครไนซ์ไฟล์ระหว่างพีซีของฉันและไดรฟ์ USB ค่อนข้างยุ่งยาก
คำอธิบายทีละขั้นตอน
ฉันคัดลอกไฟล์โดยพลการจากพีซี / แล็ปท็อปไปยังไดรฟ์ USB โดยใช้ GUI หรือด้วยคำสั่ง
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 อื่นของฉันแสดงพฤติกรรมแบบเดียวกัน
คำถาม
ความแตกต่างในการปรับเปลี่ยนครั้งล่าสุดจะถูกกำจัดอย่างใด? ตัวอย่างเช่นการใช้พารามิเตอร์อื่น ๆ ในการติดตั้ง / ถอนติดตั้ง หรือเป็นข้อบกพร่องใน Ubuntu
ฉันต้องการบรรลุว่าการประทับเวลาของไฟล์ต้นฉบับและไฟล์ที่คัดลอกนั้นเหมือนกันทุกประการเพื่อให้การซิงค์สามารถทำได้อย่างมีประสิทธิภาพยิ่งขึ้น นอกจากนี้ฉันต้องการเก็บระบบไฟล์ vfat ในไดรฟ์ USB ของฉันเพื่อให้สามารถใช้ใน Windows ได้เช่นกัน
ext4
ระบบไฟล์linux หรือไม่? (การสนับสนุนใน linux สำหรับระบบไฟล์ที่เป็นกรรมสิทธิ์ของ Microsoft, FAT32, exFAT, NTFS มีข้อ จำกัด บางประการ) ดูลิงค์นี้ซึ่งแนะนำไม่เพียงext4
แต่ยังudf
เป็นทางเลือกสำหรับระบบไฟล์ที่เป็นกรรมสิทธิ์ของ Microsoft