`Cp --sparse = always` nin dezavantajları var mı?


10

Bir sebep var mı yok kullanımını kullanmak --sparse=alwaysiçin her başlatılmasıyla cp?

info cp diyor:

‘--sparse=WHEN’
     A “sparse file” contains “holes”—a sequence of zero bytes that does
     not occupy any physical disk blocks; the ‘read’ system call reads
     these as zeros.  This can both save considerable disk space and
     increase speed, since many binary files contain lots of consecutive
     zero bytes.  By default, ‘cp’ detects holes in input source files
     via a crude heuristic and makes the corresponding output file
     sparse as well.  Only regular files may be sparse.

    The WHEN value can be one of the following:

...

    ‘always’
          For each sufficiently long sequence of zero bytes in the input
          file, attempt to create a corresponding hole in the output
          file, even if the input file does not appear to be sparse.
          This is useful when the input file resides on a file system
          that does not support sparse files (for example, ‘efs’ file
          systems in SGI IRIX 5.3 and earlier), but the output file is
          on a type of file system that does support them.  Holes may be
          created only in regular files, so if the destination file is
          of some other type, ‘cp’ does not even try to make it sparse.

Ayrıca şunu söylüyor:

[...] aşağıdaki takma adla, 'cp' dosya sistemi tarafından desteklenen minimum alan miktarını kullanacaktır.

alias cp='cp --reflink=auto --sparse=always'

Neden --sparse=alwaysvarsayılan değil ?


1
--reflinkBilmem dışında bununla bağdaşmaz ...
Stephen Kitt

belki de geliştiricilerin en az sürpriz ilkesini kullanmak istedikleri ya da POSIX aksini belirttikleri için? (posix'te bile cp, unutuyorum)
kedi

2
Seyrekliği kontrol etmek performansa zarar verebilir, seyrek dosyalar ciddi dosya sistemi parçalanmasına neden olabilir ve en az bir veri bozulması örneği vardı cp --sparse.
frostschutz

1
(Çoğunlukla seyrek olmayan) dosyalar için verilerin bir okuma / yazma döngüsü aracılığıyla kopyalanması, verilerin dma'sının belleğe girip çıkarılmasını içerirken, her zaman (veya blok sayısının dosyayla eşleşmediği otomatik) tarafından belirtilen sıfırların çalışmasını aramak boyut) verileri cpu önbelleklerine sürükleyecek ve çok daha fazla cpu bant genişliği ve döngüleri içerecektir.
meuh

1
@StephenKitt O ise --reflink uyumlu: info cpiçerir:with the following alias, ‘cp’ will use the minimum amount of space supported by the file system. alias cp='cp --reflink=auto --sparse=always'
Tom Hale

Yanıtlar:


2

Varsayılan olmamanın birkaç nedeni vardır, biri geriye dönük uyumluluk, performans ve son olarak da en az sürpriz ilkesidir.

Anladığım kadarıyla, bu seçeneği etkinleştirdiğinizde, kabul edilebilir olmayabilir CPU ek yükü vardır, ayrıca geriye dönük uyumluluk da önemlidir. cpKomut biraz boşluk tasarrufu eklese ama olmadan güvenilir bir şekilde çalışır gerçekten en azından çoğu durumda, önemsiz bugünlerde, ...

Aldığınız yorumların başka nedenleri de vurguladığını düşünüyorum.

En az sürpriz ilkesi, bir şeyi gereksiz yere cpdeğiştirmemeniz, on yıllardır var olmanız , varsayılan davranışını değiştirmek birçok gaziyi üzecek demektir.

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.