Saya harus membuat cadangan hard disk saya. Saya ingin menggunakan dd
dan meletakkan gambar pada hdd eksternal.
- Dapatkah saya melakukan ini menggunakan
dd
dari OS yang berada di hdd itu sendiri atau apakah saya harus boot dari perangkat lain, misalnya LiveCD? - Apakah aman, secara umum, untuk mengambil gambar suatu perangkat, jika perangkat sudah terpasang dan berfungsi?
- Bagaimana jika perangkat sudah terpasang, tetapi saya yakin tidak ada operasi I / O lainnya, saat
dd
sedang berjalan?
Saya yakin itu rsync
adalah alat terbaik untuk digunakan untuk cadangan, khususnya yang inkremental.
Tapi saya tertarik dd
, karena saya ingin membuat cadangan juga perangkat penyimpanan lain, dan juga menyalin data yang disimpan di ruang yang tidak dipartisi. Sebagai contoh, pembaca e-book saya menggunakan ruang yang tidak dipartisi untuk menyimpan uboot, kernel dan data lainnya.
backup
dd
disk-image
Marco Sulla
sumber
sumber
Jawaban:
Secara umum itu tidak aman. FS berasumsi bahwa operasi ditulis dalam urutan tertentu sehingga dapat menulis data file baru dan kemudian membuat pointer ke sana dari data lain, detail yang tepat tergantung pada sistem file. Bayangkan jika hal berikut terjadi:
dd
membaca dari lokasi X yang berisi sampah atau beberapa datadd
membaca dari lokasi X + 1 tautan ke lokasi XDari sudut pandang cadangan Anda mendapatkan data sampah. Namun ada beberapa cara untuk mengatasinya:
xfs_freeze
satu dan saya tidak tahu yang lain - tetapi opsi seperti itu setidaknya ada dalam teori)Sebagai catatan terakhir -
dd
mungkin bukan cara cadangan terbaik. Ini menyalin disk penuh yang sering boros saat Anda menyalin 'sampah' juga. Jika Anda perlu memiliki disk image seperti partimage mungkin lebih baik. Jika Anda tidak memiliki pilihan yang lebih baik menggunakan rsync, tar dalam mode diferensial / incremental dll. Atau sistem cadangan lengkap seperti bacula , tarsnap atau salah satu dari banyak lainnya. Deduplikasi data mungkin sangat membantu untuk ukuran cadangan.sumber
Tergantung pada apa sebenarnya partisi ini, dan apa tujuan dari salinan tersebut. Namun, saya akan mengatakan bahwa secara umum
dd
adalah alat yang tidak sesuai untuk membuat cadangan sistem file . Itu juga tidak dimaksudkan untuk itu.Ini akan menghabiskan banyak waktu untuk menyalin bagian kosong dari partisi.
Ini dapat menyebabkan inkonsistensi jika sistem file saat ini dipasang, sebagian karena itu adalah entitas tingkat OS dan mungkin tidak sinkron dengan perangkat blok yang mendasarinya.
sync
Awalnya menelepon tidak akan banyak membantu dengan ini, karena prosesnya tidak instan.Gunakan
cp -a
ataursync
sebagai gantinya. Anda kemudian perlu membuat partisi tujuan, tentu saja, sehingga tidak semudah drop-mati mudah, tetapi jauh lebih aman dan lebih fleksibel. Jika Anda perlu membuat gambar sistem file , lihat di bawah.Jika Anda bermaksud menyalin sistem file root, sama sekali tidak digunakan
dd
. Anda harus menggunakan sesuatu sepertirsync -ax
(ataucp -ax
pada direktori tingkat teratas individu), karena ada banyak hal yang TIDAK boleh ada dalam salinan . Di Linux, ini termasuk:Beberapa di antaranya sebenarnya adalah antarmuka kernel dan bukan direktori nyata pada disk. Jika Anda menyalinnya, Anda menyalin banyak informasi yang tidak akan berlaku dalam salinan; jika Anda mencoba dan menjalankan sistem dengan itu hanya akan menyia-nyiakan ruang karena antarmuka nyata akan dipasang di atas. Lainnya berisi informasi sementara yang digunakan dengan menjalankan proses dan itu lebih merupakan masalah, karena sistem tidak akan dapat memilah sampah jika Anda menyalinnya.
Jika Anda ingin membuat file gambar dari sistem file root (atau sistem file apa pun), buat file gambar kosong - ini adalah penggunaan yang tepat untuk
dd
:Itu adalah gambar 1024 MB (1000000 * 1024). Sesuaikan
count
jika Anda menginginkannya ukuran lain. Buat, misalnya,ext
sistem file dalam file :Ini akan memperingatkan Anda bahwa ini bukan perangkat blok nyata. Memproses. Sekarang pasang file gambar:
/mnt/img
pasti ada tetapi bisa apa saja. Anda sekarang dapatrsync
(ataucp -a
) masuk/mnt/img
. Konten akan tetap di dalamwhatever.img
ketika Anda melepasnya.Namun...
Supaya jelas, hanya gunakan metode gambar filesystem yang baru saja dijelaskan jika Anda benar-benar membutuhkan file gambar untuk alasan apa pun. Jika tujuan Anda adalah menyalin partisi ke hard drive lain, Anda tidak perlu gambar : buat partisi baru dengan sistem file kosong pada drive itu, pasang, dan salin ke sana. Anda bisa meletakkan konten sistem file ke dalam direktori kosong dan mengarsipnya:
Anda kemudian dapat menggunakan ini di partisi yang ada (kosong atau sebaliknya) dengan menempatkannya di tingkat atas dan menggunakan:
Waspadalah yang akan menimpa file yang ada jika jalurnya cocok dengan sesuatu dalam arsip. Jika tidak, hierarki direktori yang ada akan tetap sama.
sumber
cp
dan rsync memiliki opsi-x
untuk menghindari rekursi ke sistem file lain. Jawaban Maciej paling menjelaskan mengapa haldd
ini sangat tidak pantas di sini (hampir dijamin untuk menghasilkan salinan yang tidak dapat digunakan kecuali Anda mengambil tindakan pencegahan yang tercantum oleh Mark , karena penulisan yang akan terjadi selama salinan).dd
tidak akan menyalin hal-hal yang bukan direktori nyata pada disk, jadi saya tidak yakin dari mana titik pertama Anda berasal. Misalnya perangkat yang terpasang/mnt
, simpul dalam/proc
, dll. Tidak akan menjadi bagian dari data yang diambildd
karena tidak ada di disk. Untuk unmount sistem filedd
benar-benar valid; Anda berakhir dengan duplikat yang tepat. Satu-satunya alasan tidak tepat untuk sistem file yang dipasang adalah bahwa data pada sistem dapat berubah / ditulis sebagian selama jangka waktu yang lamadd
untuk beroperasi.rsync adalah alat pilihan untuk membuat cadangan sistem file, dan itu dapat membuat cadangan yang dapat di-boot dari OS yang sedang berjalan.
Beberapa peringatan:
Beberapa kelebihan rsync dibandingkan metode lain seperti tar:
Cadangan gambar ada di tempatnya, tetapi menyalin persis apa adanya, termasuk masalah yang mungkin Anda miliki. Cadangan file membuat direktori baru dan memiliki efek samping melinearisasi (defragmenting) drive Anda dalam proses. Jika Anda ingin membuat 10 salinan identik dari OS Anda saat ini, saya akan menggunakan rsync untuk master salinan dan kemudian dd (atau serupa) untuk sisanya.
sumber
Tergantung pada apa yang Anda maksud dengan "sistem kerja saat ini". Jika Anda hanya ingin menghindari menggunakan disk boot, dan tidak peduli dengan gangguan pada layanan yang berjalan di komputer, itu mungkin:
sync
mount -o ro /
./etc/mtab
; abaikan saja).Saya menggunakan metode ini untuk membuat arsip komputer yang baru saja saya tingkatkan dari dan tidak berharap untuk menggunakan lebih banyak. Ini bukan metode yang sangat bagus untuk sistem yang digunakan aktif: lambat (butuh berjam-jam atau berhari-hari), cadangannya sangat besar (sehingga Anda tidak dapat menyimpan lebih dari beberapa), dan sangat mengganggu penggunaan sistem yang didukung naik. Untuk cadangan sehari-hari, saya merekomendasikan sesuatu yang berfungsi di tingkat sistem file, seperti
rsnapshot
.sumber
/etc/mtab
ke/proc/self/mount
- yang akan bekerja bahkan ketika Anda memiliki hal-hal seperti chroot atau fs ruang nama.mount -o remount,ro /
dapat ditulis. Tetapi begitu perintah ini kembali, dalam situasi apa penulisan selanjutnya akan terjadi?Gunakan Clonezilla , serius. Ini adalah sumber terbuka terbaik, utilitas Norton Ghost berbasis Linux. Ini akan melakukan partisi dan kloning disk penuh, baik disk ke disk atau sistem disk ke file (simpan sebagai file). Ini mendukung sebagian besar sistem file Linux, NTFS, FAT32 dan banyak lagi. Itu dapat menyimpan ke disk internal, drive eksternal atau bahkan melalui jaringan pada saham SMB atau NFS.
Ini sangat mudah digunakan dan akan menghemat banyak waktu.
Sunting: untuk menjawab pertanyaan, tidak, Anda tidak dapat
dd
sebagian besar sistem file saat mereka di-mount karena Anda berisiko berakhir dengan salinan yang tidak konsisten dari sistem file Anda karena membaca dari perangkat blok bukan atom. Misalnya, jika Anda menyalin 100 blok, sistem mungkin telah memperbarui blok pertama dan blok terakhir saat Anda hanya setengah jalan, yang berarti salinan Anda akan menyertakan blok terakhir yang dimodifikasi tetapi bukan yang pertama.sumber