mengompresi cadangan dd dengan cepat

23

Mungkin ini akan terdengar seperti pertanyaan bodoh tetapi cara saya mencoba untuk melakukannya tidak berhasil.

Saya menggunakan livecd, drive tidak terpasang, dll.

Ketika saya melakukan backup dengan cara ini

sudo dd if=/dev/sda2 of=/media/disk/sda2-backup-10august09.ext3 bs=64k

... biasanya itu akan bekerja tetapi saya tidak punya cukup ruang di hd eksternal saya salin ke (itu hampir cocok untuk itu). Jadi saya ingin mengompres dengan cara ini

 sudo dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz

... tetapi saya mendapat izin ditolak. Saya tidak mengerti.

Phil
sumber
2
Jangan. Ini bukan cadangan. Periksa perintah 'dump' dan 'restore'.
Juliano
Atau tar atau cpio ....
chris
1
Juliano, apa maksudmu dengan 'ini bukan cadangan'?
Phil
5
Ini bukan cadangan karena cadangan serius, terstruktur dengan baik dan menggunakan alat yang tepat yang dimaksudkan untuk membuat cadangan. Anda hanya membuat salinan data mentah partisi. Untuk mengembalikan data ini, Anda memerlukan partisi lain dengan geometri yang sama, yang tidak dijamin. Juga, jika Anda merusak satu blok arsip Anda (superblok, tabel inode, direktori root, dll), Anda berisiko kehilangan semua data Anda. Dengan cadangan yang tepat ini tidak akan terjadi.
Juliano
7
"Untuk mengembalikan data ini, Anda akan memerlukan partisi lain dengan geometri yang sama, yang tidak dijamin" Mengapa dia membutuhkan itu, tidak bisakah dia memasang gambar partisi pada perangkat loopback?
Kyle Brandt

Jawaban:

41

Apakah Anda memiliki akses ke file sda2-backup ... gz? Sudo hanya bekerja dengan perintah setelahnya, dan tidak berlaku untuk pengalihan. Jika Anda ingin menerapkan ke pengalihan, maka jalankan shell sebagai root sehingga semua proses anak-anak adalah root juga:

sudo bash -c "dd if=/dev/sda2 | gzip > /media/disk/sda2-backup-10august09.gz"

Atau, Anda dapat memasang disk dengan opsi pemasangan uid / gid (dengan asumsi ext3) sehingga Anda memiliki izin menulis sebagai pengguna apa pun Anda. Atau, gunakan root untuk membuat folder di / media / disk yang Anda miliki izinnya.

Informasi lain yang mungkin membantu Anda:

  • Ukuran blok hanya penting untuk kecepatan sebagian besar. Standarnya adalah 512 byte yang ingin Anda simpan untuk MBR dan floppy disk. Ukuran yang lebih besar ke suatu titik harus mempercepat operasi, anggaplah analog dengan buffer. Berikut ini tautan ke seseorang yang melakukan beberapa pembandingan cepat dengan ukuran blok yang berbeda. Tetapi Anda harus melakukan pengujian sendiri, karena kinerja dipengaruhi oleh banyak faktor. Lihatlah juga jawaban lain dari andreas
  • Jika Anda ingin menyelesaikan ini melalui jaringan dengan ssh dan netcat sehingga ruang mungkin tidak sebesar masalah, lihat pertanyaan serverfault ini .
  • Apakah Anda benar-benar membutuhkan gambar partisi, mungkin ada strategi cadangan yang lebih baik?
  • dd adalah perintah yang sangat berbahaya, gunakan ofalih-alih ifdan Anda akhirnya menimpa apa yang ingin Anda backup !! Perhatikan bagaimana tombol-tombolnya odan iletaknya bersebelahan? Jadi sangat sangat sangat hati-hati.
Kyle Brandt
sumber
Saya akan coba ini. bagaimana saya juga membuatnya bs = 64k? (dan apakah saya harus melakukannya?)
Phil
Bs = 64k hanya membuat transfer berjalan lebih cepat karena dd akan membaca blok masing-masing 64k alih-alih ukuran blok default (saya tidak ingat).
chris
Apa kata chris, dan jika Anda ingin memasukkannya letakkan setelah dd dan sebelum simbol pipa (|) karena ini merupakan argumen untuk dd.
Kyle Brandt
1
Saya juga kadang-kadang akan menggunakan "sudo tee $ file> / dev / null" dalam pipa untuk memungkinkan penulisan ke file yang akun pengguna saya tidak memiliki akses juga.
Rik Schneider
6

Dalam kasus pertama, dd berjalan sebagai root.

Dalam kasus kedua, dd berjalan sebagai root tetapi gzip berjalan seperti Anda.

Ubah izin pada / media / disk, beri diri Anda root shell, atau jalankan gzip sebagai root juga.

chris
sumber
3

Selain itu, Anda dapat mengganti gzip dengan bzip2 --bestuntuk kompresi yang jauh lebih baik:

sudo dd if=/dev/sda2 | bzip2 --best > /media/disk/$(date +%Y%m%d_%H%M%S)_sda2-backup.bz2
dmityugov
sumber
3
Dengan biaya banyak waktu. Lihat changelog.complete.org/archives/… "Cara berpikir tentang kompresi" untuk detail lebih lanjut.
Bill Weiss
@ Billilliss: Terima kasih atas komentar Anda, bacaan yang sangat menarik!
Andreas
kompresi: lzma> bzip2> gzip .. kecepatan: gzip> bzip2> lzma. Kecuali Anda mempublikasikan gambar disk di internet, tidak ada banyak manfaat untuk waktu, daya CPU dan memori yang Anda habiskan untuk kompresi yang lebih baik.