gzip - pengalihan atau perpipaan?

10

Saya akan mencadangkan disk besar (750GB) ke disk USB eksternal menggunakan dd.
Haruskah saya menggunakan pengalihan atau perpipaan? Mana yang lebih efisien? Atau ada perbedaan?

Juga, apa ukuran blok terbaik? USB kemungkinan akan menjadi penghambat di sini.

dd if=/dev/sda bs=1M | gzip -c > /mnt/sdb1/backups/disk.img.gz

gzip -dc /mnt/sdb1/backups/disk.img.gz | dd of=/dev/sda bs=1M

vs.

dd if=/dev/sda bs=1M | gzip -c | dd of=/mnt/sdb1/backups/disk.img.gz

dd if=/mnt/sdb1/backups/disk.img.gz | gzip -dc | dd of=/dev/sda bs=1M

Terima kasih.

mcu
sumber
2
Saya akan mencoba membuat cadangan sistem file, bukan gambar disk mentah. Dan untuk menyesuaikan parameter, Anda harus melakukan tolok ukur.
ddadalah kuno (alat lain untungnya tidak dengan bs=dan count=, seperti ddrescue), dan dalam kasus Anda juga cukup banyak gunanya. Cukup masukkan ke gzip -c </dev/sda >disk.img.gz& gzip -cd disk.img.gz >/dev/sda.
Atau melakukannya dengan rsync. Hanya membangun perintah dengan parameter, dan itu akan melakukan segalanya dengan cara yang paling efisien menurutnya.
vakufo
Pada perintah kedua dari daftar kedua, apa yang dd if=.../disk.img.gz |harus dilakukan bagian itu? Sejauh yang saya mengerti, gzip -dc(= zcat) tidak peduli stdinketika ada argumen file.
sr_
Saya tidak berpikir Linux dapat dengan andal mereproduksi instalasi Windows hanya dengan menyalin struktur file. Karenanya, kebutuhan untuk menyalin bit-bijaksana suka dd. ddrescueterlihat lebih kuat daripada polos dd. Apakah Anda menggunakan GNU ddrescueatau dd_rescue? Apa itu Live CD yang baik untuk diunduh?
mcu

Jawaban:

3

Perpipaan melibatkan satu proses lagi dan satu lagi salinan pengguna-tanah, sehingga harus lebih efisien untuk menggunakan pengalihan.

Tapi saya kira pada sistem caching perangkat keras & lunak saat ini, seharusnya tidak membuat perbedaan nyata. Mungkin Anda dapat memiliki hasil yang lebih baik menggunakan bs=4katau bs=64k, karena itu batas pipa di bawah linux. Lihat pertanyaan ini untuk detail lebih lanjut tentang berbagai parameter bs .

Coren
sumber
9

Anda tidak perlu menggunakan ddatau mengirim pipa sama sekali.

</dev/sda gzip >/mnt/sdb1/backups/disk.img.gz
</mnt/sdb1/backups/disk.img.gz gunzip >/dev/sda

Saya pernah membuat patokan dan menemukan menggunakan ddlebih lambat daripada catuntuk salinan langsung antara disk yang berbeda. Saya berharap pipa membuat solusi yang melibatkan ddlebih lambat dalam kasus ini.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Itu adalah contoh menggunakan pengalihan.
psusi
@psusi Gah! Saya bermaksud menulis "dd atau piping". Terima kasih.
Gilles 'SO- stop being evil'
Apakah ada cara untuk menggabungkan pvperintah-perintah ini?
Yaron
2
@Yaron Sure: ganti gzipoleh pv | gzipdan gzip -dolehgzip -d | gv
Gilles 'SO- stop being evil'
0

Lebih sederhana:

gzip -c /dev/sda > disk.img.gz
gzip -dc /mnt/sdb1/backups/disk.img.gz > /dev/sda 
Mike Redrobe
sumber