USB sürücüsüne kopyalanan dosyaların zaman damgaları


13

Bilgisayarımdan veya dizüstü bilgisayarımdan USB sürücülerine kopyalanan dosyaların zaman damgalarıyla ilgili bir sorunum var: orijinal dosyanın ve kopyalanan dosyanın son değişiklik zamanı farklı. Bu nedenle, bilgisayarım ve USB sürücüm arasında dosya senkronizasyonu oldukça zahmetlidir.

Adım adım açıklama

  1. GUI'yi veya komutunu kullanarak PC / dizüstü bilgisayarımdan USB sürücüsüne rastgele bir dosya kopyalarım

    cp -a file.txt /media/gabor/CORSAIR/
    
  2. Orijinal dosyanın son değişiklik zamanını kontrol ediyorum:

    $ 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
    
  3. Kopyalanan dosyanın son değişiklik zamanını kontrol ediyorum:

    $ 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
    
  4. Gördüğünüz gibi, kopyalanan dosyanın son değişiklik süresindeki saniye sayısı sıfır ondalık basamağa kesilir. Ancak, komutu girersem

    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
    

Çıktıyı alıyorum The last modification times are equal.

  1. USB sürücüsünü çıkarır ve yeniden takarsam ve son iki komutu tekrar çalıştırırsam durum değişir:

    $ 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. Yeniden montajdan sonra, kopyalanan dosyanın son değiştirme süresi bir saniye daha azalır. Bununla birlikte, daha fazla sökme ve yeniden montaj, son değişiklik süresini artık etkilemez. Ayrıca, dosyalar üzerindeki test artık PC'deki dosyanın daha yeni olduğunu gösteriyor (olmasa da).

Durum, PC ve dizüstü bilgisayarımda son değişiklik zamanının PC'mde ve dizüstü bilgisayarımda farklı gösterilmesi gerçeğiyle daha da karmaşıklaşıyor , tarih ve saat ayarı bilgisayarımda ve dizüstü bilgisayarımda aynı olmasına rağmen fark tam 2 saat!

Daha fazla bilgi

Hem bilgisayarım hem de dizüstü bilgisayarım yukarıda açıklanan davranışı gösteriyor. Bilgisayarımda Ubuntu 14.04.5 (güvenilir) ve dizüstü bilgisayarımda Ubuntu 16.04.2 (xenial) var.

USB sürücülerimde vfat dosya sistemi var. Çıktısı mount | grep CORSAIR benim PC'de olduğu

/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)

Çıktısı mount | grep CORSAIR benim laptop olduğunu

/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)

Diğer USB sürücülerim de aynı davranışı gösteriyor.

Soru

Son değişiklik sürelerindeki fark bir şekilde ortadan kaldırılabilir mi? Örneğin, montaj / sökme sırasında başka parametreler kullanmak mı? Yoksa Ubuntu'da bir hata mı?

Orijinal ve kopyalanan dosyaların zaman damgalarının tam olarak aynı olmasını sağlamak istiyorum, böylece senkronizasyon daha verimli bir şekilde yapılabilir. Ayrıca, vfat dosya sistemini USB sürücülerimde tutmak istiyorum, böylece bunları Windows altında da kullanabiliyorum.


USB sürücüsünde linux ext4dosya sistemi gibi başka bir dosya sistemi oluşturmak istiyor musunuz ? (Microsoft tescilli dosya sistemleri, FAT32, exFAT, NTFS için linux desteğinin bazı sınırları vardır.) Microsoft tescilli dosya sistemlerine yalnızca değil , alternatif olarak da öneren bu bağlantıya bakın . ext4udf
sudodus

Yanıtlar:


17

Zaman damgası saniyelerinin değiştirilmesiyle ilgili sorun, bir VFAT (evet, hatta FAT32) dosya sisteminin değişiklik süresini sadece 2 saniyelik çözünürlükle depolamasıdır.

Görünüşe göre, dosya sistemi monte edildiği sürece, dosya sistemi sürücüsü zaman damgalarını 1 saniyelik çözünürlüğe önbelleğe alır (muhtemelen POSIX gereksinimlerini karşılamak için), ancak dosya sistemi bağlantısı kesildiğinde önbellekler temizlenir ve gerçekte neyin kaydedildiğini görürsünüz dosya sistemi dizini.

PC ve dizüstü bilgisayar arasındaki iki saatlik fark muhtemelen farklı saat dilimi ayarları ve / veya VFAT dosya sistemi için farklı varsayılan bağlama seçeneklerinden kaynaklanmaktadır. (UTC farkı şu anda pozitif veya negatif olan 2 saat olan bir saat diliminde bulunduğunuzu tahmin ediyorum.)

Dahili olarak, Linux Unix tarzı dosya sistemlerinde UTC zaman damgalarını kullanır; ancak VFAT dosya sistemlerinde, (geçerli) varsayılan VFAT dosya sistemi zaman damgalarında yerel saati kullanmaktır, çünkü MS-DOS'un yaptığı ve Windows hala bunu yapar. Ancak bunu etkileyebilecek iki bağlama seçeneği vardır: tz=UTCVFAT dosya sistemlerinde UTC tabanlı zaman damgalarını kullanmak için bağlama seçeneğini belirtebilir veya time_offset=<minutes>bu belirli dosya sistemiyle kullanılacak saat dilimi uzaklığını açıkça belirtmek için kullanabilirsiniz .

VFAT için varsayılan bağlama seçeneklerinin, çekirdek veya udisksçıkarılabilir medya yardımcı hizmeti içinde Ubuntu 14.04 ve 16.04 arasında değişmiş olması, gördüğünüz iki saatlik farkla sonuçlanabilir.


Cevabınız için teşekkür ederim. mount | grep CORSAIRSorumu bilgisayarımdaki çıkıştan farklı olan dizüstü bilgisayarımın çıktısıyla tamamladım . Ayrıca haklısınız, ben Orta Avrupa'da CEST (= UTC + 2) saat diliminde bulunuyorum.
K. Gabor

Bu montaj çıkışlarının hiçbiri zaman damgalarını etkileyecek herhangi bir montaj seçeneği içeriyor gibi görünüyor, bu yüzden VFAT zaman damgaları için varsayılan işleme, Ubuntu'nun bu sürümleri arasında bir yerde çekirdek düzeyinde değiştirilmiş olması gerektiğini düşünüyorum. Görünüşe göre modern , USB sürücünüz için bir giriş yazarsanız, udisksbelirtilen montaj seçeneklerine uymalıdır /etc/fstab.
telcoM

0

Her ne kadar sorumu " vfatDosya sürücülerini USB sürücülerimde tutmak istiyorum" yazmış olsam da , onları ntfsdosya sistemine yeniden formatladım . Hem Linux hem de Windows işleyebilir ntfsve yukarıda gösterilen zaman damgalarıyla garip bir fenomeni göstermiyor gibi görünüyor.


Evet, NTFS tüm dosya zaman damgalarını UTC saatine göre 64 bit sayı olarak depolar, bu nedenle 100 nanosaniyelik bir çözünürlüğe sahiptir ve tarih aralığı 1 Ocak 1601 ile 28 Mayıs 60056 arasındadır. Bu fazlasıyla yeterli olmalıdır. Daha da önemlisi, VFAT dosya sistemlerinin sahip olduğu saat dilimi belirsizliğine yer yoktur.
telcoM
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.