Dosya sayısı neden farklı?
Görünüşe göre yalnızca "bir dosya kopyalama" nın "verileri kopyala" yönüne odaklanıyorsunuz. Bir dosya sadece veriden daha fazlasıdır; dosya sistemindeki bir varlıktır . Bir dosyanın adı, nitelikleri ve izinleri vardır. Dosyayla ilgili bu ek bilgilerin tümü, "dosya kopyalandığında" verilerle birlikte çoğaltılmalıdır. Bu dosya sistemi ek yükünü gerçekleştirmek için önemli miktarda disk G / Ç'si vardır.
Genel bir dosya sisteminde bir (1) dosyayı kopyalama prosedürü şöyle olacaktır:
- Kaynak dosyayı dosya sisteminde bulun. (A)
- Diskten kaynak dosyanın dizin girdisini okuyun.
- Okuma izinlerini doğrulayın.
- Hedef dosyayı dosya sisteminde bulun. (B)
- Hedef dizinde yazma izinlerini doğrulayın.
- Yeni dosyayı yerleştirmek için gerekirse dizini genişletin. (C)
- Diskteki dizini güncelleyin. (C1)
- Ücretsiz blokları bulun, ayırın ve tabloyu tekrar güncelleyin. (D)
- Dosya verilerini okuyun ve hedef dosyaya kopyalayın (örn. "Dosyayı" kopyalayın).
- Yeni dosyanın dizin girişini (boyut ve saat) ile güncelleyin. (E)
- Kaynak dizin girdisinin erişim zamanını güncelleyin. (F)
(a) Bu, en azından geçerli dizinde arama yapmak anlamına gelir. Veya yol, dosya sisteminin kökünden başlayabilir ve çeşitli düzeylerde dizinlerin dolaşılması gerekir.
(b) En azından bu, geçerli dizinde arama yapmak anlamına gelir. Veya yol, dosya sisteminin kökünden başlayabilir ve çeşitli düzeylerde dizinlerin dolaşılması gerekir. Hedef dosya zaten varsa, kopyanın nasıl ilerlemesi veya durdurulması gerektiğini belirleyin. Hedef dosya yoksa, yeni bir dizin girişi oluşturulmalıdır ve bu da dizinin genişletilmesini (yani dosya bloğu (diğer adıyla küme) ayırma yükü ) içerebilir .
(c) dizin genişletilecek varsa, bir boş blok bularak yeni bir blok tahsis değiştirme yeni ayırma ile ayırma tablosu ve geç diske bloğu (ler) i. Çoğu dosya sistemi, ayırma tablosunun birden çok kopyasını sakladığından, diske birden çok yazma anlamına gelir.
(c1) Hedef dizin bulunduğu kez okundu , diskten dizin bloğu değiştirmek kopyalanan dosyanın yeni dizin girdisi ile, sonra da yazma diske dışarı blok.
(d) dosya kopyalamak için, serbest bir blok bulma blokları tahsis değiştirme yeni tahsis ile ayırma tablosu ve geç diske bloğu (s) üzerinden. Çoğu dosya sistemi, ayırma tablosunun birden çok kopyasını sakladığından, diske birden çok yazma anlamına gelir. Veri bütünlüğünü korumak için, dosya sistemi dizinler ve ayırma tabloları için disk yazma işlemlerini birleştirmeyi (geciktirmeyi ve birleştirmeyi) deneyemez , bunun yerine yeni dosyalar oluşturulurken ve tahsis edilirken yazma işlemlerini hemen gerçekleştirebilir.
(e) veri complele olduğunu kopyalamak sonra güncellemek uygun dosya uzunluğu ve zaman damgaları ile kopyalanan dosyanın yeni dizin girişi ve sonra yazma diske dışarı dizin bloğu.
(f) güncelleyin yeni bir "erişim" damgası ile kaynak dizin girdisini ve sonra yazma diske dışarı dizin bloğu.
Yani tek bir dosya yerine, sorunuz bin dosya için tüm bu şeyleri yapmanın sadece dosyaların veri kısmını kopyalamak için gereken süreye ekleyip ekleyemeyeceğini soruyor. 24 MB'lık yalnızca bir dosyayı kopyalarsanız, bin dosyanın kopyalama sürenizle karşılaştırılacak bir şeyiniz olur.
Ne zaman destek-up bir dosya sistemi, bu keşfettim olarak oldukça yavaş bir süreç olduğu için nadiren kullanılan bir disk veya disk üzerinde başka bir dosya sistemine tek tek dosyaları kopyalama. Daha hızlı bir yöntem, kaynak dizin girişlerini ve dosya içeriğini özel bir dosya biçiminde tutan tek bir arşiv dosyası oluşturmak ve yazmaktır ; yedekleme programları ve * nix komutu 'tar' böyle bir arşiv dosyası çıktısı verebilir. ('Tar' öğesinin yalnızca arşiv dosyalarını işlediğini ve arşiv + sıkıştırma yardımcı programları gibi sıkıştırmayı kullanmadığını unutmayın.) En hızlı yedekleme yöntemi, bir blok cihaza (aygıttaki bir dosya sistemi yerine) yazmaktır; yok sayılır (daha fazla veri olarak işlem görür) ve kaynak cihazın blok satır görüntü kopyası gerçekleştirilebilir.