200 GB boş disk alanım var, 16 GB RAM (bunlardan ~ 1 GB masaüstü ve çekirdeğin kapladığı) ve 6 GB takas.
240 GB harici SSD'm var, 70 GB kullanılmış 1 ve gerisi ücretsiz, diskime yedeklemem gerekiyor.
Normalde, önce dd if=/dev/sdb of=Desktop/disk.img
diski ve ardından sıkıştırırdım, ancak görüntüyü ilk yapmak bir seçenek değildir, çünkü bunu yapmak benimkinden çok daha fazla disk alanı gerektirir, ancak sıkıştırma adımı boş alanın ezilmesine neden olur. son arşiv diskime kolayca sığabiliyor.
dd
varsayılan olarak STDOUT'a yazar ve STDIN'den gzip
okuyabilir, bu yüzden teoride yazabilirim dd if=/dev/sdb | gzip -9 -
, ancak gzip
baytları okumak dd
onları üretebileceklerinden çok daha uzun sürer .
Kimden man pipe
:
Borunun yazma ucuna yazılan veriler, borunun okunan ucundan okunana kadar çekirdek tarafından tamponlanır.
|
Birinin gerçek bir boru gibi göründüğünü hayal ediyorum - biri uygulamada veri toplayan, diğeri ise borunun kuyruğundan mümkün olan en kısa sürede veri alıyor.
Sol taraftaki program borunun diğer tarafına göre daha hızlı veri yazdığında ne işleyeceğini umarız? Aşırı belleğe mi yoksa takas kullanımına mı neden olacak, yoksa çekirdek diskte bir FIFO oluşturmaya çalışıp diski doldurmaya çalışacak mı? Yoksa SIGPIPE Broken pipe
tampon çok büyükse sadece başarısız olur ?
Temel olarak, bu iki soruya yol açar:
- Bir kerede okunandan daha fazla veriyi bir boruya aktarmanın sonuçları ve sonuçları nelerdir?
- Sıkıştırılmamış tüm veri akışını diske koymadan bir veri akışını diske sıkıştırmanın güvenilir yolu nedir?
Not 1: İlk kullanılan 70 GB'nin tamamını tam olarak kopyalayamıyorum ve tam bir içeriğin bozulmasını gerektiren parçalanma ve diğer şeyler nedeniyle bir çalışma sistemi veya dosya sistemi almayı umuyorum.
lzop
yerine gzip
; sadece biraz daha düşük sıkıştırma oranı ile çok daha hızlı sıkıştırır. Sıkıştırma hızının gerçek bir darboğaz olabileceği disk görüntüleri için ideal buluyorum.