Saya mempunyai masalah dengan cap waktu file yang disalin dari PC atau laptop ke drive USB: waktu modifikasi terakhir dari file asli dan file yang disalin berbeda. Oleh karena itu, menyinkronkan file antara PC saya dan drive USB saya cukup rumit.
Deskripsi langkah demi langkah
Saya menyalin file sewenang-wenang dari PC / laptop saya ke drive USB menggunakan GUI atau dengan perintah
cp -a file.txt /media/gabor/CORSAIR/
Saya memeriksa waktu modifikasi terakhir dari file asli:
$ 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
Saya memeriksa waktu modifikasi terakhir dari file yang disalin:
$ 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
Seperti yang Anda lihat, detik dalam waktu modifikasi terakhir dari file yang disalin dipotong menjadi nol angka desimal. Namun, jika saya memasukkan perintah
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
Saya mendapatkan hasilnya The last modification times are equal.
Situasi berubah jika saya melepas dan memasang kembali drive USB dan saya menjalankan dua perintah terakhir lagi:
$ 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.
Jadi setelah remount, waktu modifikasi terakhir dari file yang disalin selanjutnya dikurangi satu detik. Namun, pelepasan dan penghitungan ulang lebih lanjut tidak lagi memengaruhi waktu modifikasi terakhir. Selain itu, tes pada file sekarang menunjukkan bahwa file pada PC lebih baru (meskipun tidak).
Situasi ini semakin rumit dengan fakta bahwa waktu modifikasi terakhir dari file ditampilkan secara berbeda pada PC saya dan pada laptop saya , perbedaannya persis 2 jam, meskipun pengaturan tanggal dan waktu sama pada PC saya dan pada laptop saya!
Informasi lebih lanjut
Baik PC dan laptop saya menunjukkan perilaku, yang dijelaskan di atas. Saya memiliki Ubuntu 14.04.5 (trusty) di PC saya dan Ubuntu 16.04.2 (xenial) di laptop saya.
Drive USB saya memiliki sistem file vfat. Output mount | grep CORSAIR
pada PC saya adalah
/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)
Output mount | grep CORSAIR
pada laptop saya adalah
/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)
Drive USB saya yang lain menunjukkan perilaku yang sama.
Pertanyaan
Bisakah perbedaan waktu modifikasi terakhir dihilangkan? Misalnya, menggunakan parameter lain saat pemasangan / pelepasan? Atau itu bug di Ubuntu?
Saya ingin mencapai bahwa cap waktu dari file asli dan yang disalin sama persis, sehingga sinkronisasi dapat dilakukan dengan lebih efisien. Juga, saya ingin menyimpan sistem file vfat di drive USB saya, sehingga saya dapat menggunakannya di Windows juga.
ext4
sistem file linux ? (Dukungan di linux untuk sistem file berpemilik Microsoft, FAT32, exFAT, NTFS, memiliki beberapa batasan.) Lihat tautan ini yang menyarankan tidak hanyaext4
tetapi jugaudf
sebagai alternatif untuk sistem file berpemilik Microsoft.