Tôi gặp vấn đề với dấu thời gian của các tệp được sao chép từ PC hoặc máy tính xách tay sang ổ USB: thời gian sửa đổi cuối cùng của tệp gốc và của tệp được sao chép là khác nhau. Do đó, việc đồng bộ hóa các tệp giữa PC và ổ USB của tôi khá cồng kềnh.
Mô tả từng bước
Tôi sao chép một tệp tùy ý từ PC / máy tính xách tay của mình vào ổ USB bằng GUI hoặc bằng lệnh
cp -a file.txt /media/gabor/CORSAIR/
Tôi kiểm tra thời gian sửa đổi cuối cùng của tệp gốc:
$ 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
Tôi kiểm tra thời gian sửa đổi cuối cùng của tệp được sao chép:
$ 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
Như bạn có thể thấy, các giây trong thời gian sửa đổi cuối cùng của tệp được sao chép được rút ngắn thành 0 chữ số thập phân. Tuy nhiên, nếu tôi nhập lệnh
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
Tôi nhận được đầu ra The last modification times are equal.
Tình huống thay đổi nếu tôi ngắt kết nối và nối lại ổ USB và tôi thực hiện lại hai lệnh cuối cùng:
$ 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.
Vì vậy, sau khi kết thúc, thời gian sửa đổi cuối cùng của tệp được sao chép sẽ giảm thêm một giây. Tuy nhiên, việc tiếp tục và kết nối lại không ảnh hưởng đến lần sửa đổi cuối cùng nữa. Ngoài ra, thử nghiệm trên các tệp hiện cho thấy tệp trên PC mới hơn (mặc dù không phải vậy).
Tình hình còn phức tạp hơn bởi thực tế là thời gian sửa đổi lần cuối của các tệp được hiển thị khác nhau trên PC và trên máy tính xách tay của tôi , sự khác biệt chính xác là 2 giờ, mặc dù cài đặt ngày và giờ giống nhau trên PC và trên máy tính xách tay của tôi!
Thêm thông tin
Cả PC và máy tính xách tay của tôi đều thể hiện hành vi, được mô tả ở trên. Tôi có Ubuntu 14.04.5 (đáng tin cậy) trên PC và Ubuntu 16.04.2 (xenial) trên máy tính xách tay của tôi.
Ổ USB của tôi có hệ thống tập tin vfat. Đầu ra của mount | grep CORSAIR
PC của tôi là
/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)
Đầu ra của mount | grep CORSAIR
máy tính xách tay của tôi là
/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)
Các ổ USB khác của tôi cho thấy hành vi tương tự.
Câu hỏi
Sự khác biệt trong lần sửa đổi cuối cùng có thể được loại bỏ bằng cách nào đó? Ví dụ, sử dụng các tham số khác khi gắn / ngắt kết nối? Hay là một lỗi trong Ubuntu?
Tôi muốn đạt được rằng dấu thời gian của các tệp gốc và tệp được sao chép hoàn toàn giống nhau, để việc đồng bộ hóa có thể được thực hiện hiệu quả hơn. Ngoài ra, tôi cũng muốn giữ hệ thống tệp vfat trên các ổ USB của mình để tôi cũng có thể sử dụng chúng trong Windows.
ext4
hệ thống tệp linux ? (Sự hỗ trợ trong linux cho các hệ thống tệp độc quyền của Microsoft, FAT32, exFAT, NTFS, có một số giới hạn.) Xem liên kết này gợi ý không chỉext4
mà cònudf
là lựa chọn thay thế cho các hệ thống tệp độc quyền của Microsoft.