Saya perlu mentransfer seluruh filesystem root linux dari hard drive yang gagal ke komputer lain dengan partisi terbuka yang tersedia. Saya cukup yakin ini melibatkan tar
dan ssh
, tapi saya tidak ingat persis bagaimana melakukan ini.
Saya sedang membayangkan mungkin menggunakan live cd pada host target baru untuk dijalankan sesuatu seperti ini:
ssh user@failingharddrivehost "some tar command | piped into something else"
ssh user@failingsys "tar cfz - /" > oldsys.tar.gz
Jawaban:
Gunakan rsync. Dari host baru, Anda dapat menggunakan
rsync -avP --numeric-ids --exclude='/dev' --exclude='/proc' --exclude='/sys' root@failedharddrivehost:/ /path/to/destination/
Saya tidak akan mencoba melibatkan sesuatu seperti tar karena mungkin tidak akan berfungsi ketika ada file yang rusak.
sumber
Jika kedua komputer berada pada LAN (aman) yang sama, saya sarankan menggunakan pendekatan yang berbeda
netcat
. Ini biasanya jauh lebih cepat karena tidak mengenkripsi data.yang membuka port mendengarkan 1234 pada mesin yang bagus
netcat -l -p 1234
dan menyalurkan data yang masuk ketar
untuk mengekstrak (mempertahankan mtime dan izin). Tuan rumah yang buruk mengirimkan data ke port ini, juga menggunakantar
dannetcat
. Saya memasukkan beberapa--exclude
parameter, seperti/proc
dan/sys
adalah filesystem virtual dan karenanya tidak berguna pada host baru. (terutama file yang mewakili RAM Anda di (/proc/kcore
) akan menambahkan jumlah data yang tidak perlu).Namun, Anda harus (juga) mempertimbangkan untuk membuat
dd
dump dari partisi drive yang gagal:di mana Anda harus mengadopsi
/dev/sda1
ke perangkat yang tepat. Lakukan itu dengan partisi lain pada drive yang gagal juga.Dengan dump itu Anda yakin, bahwa Anda tidak melewatkan metadata penting (seperti ACL) yang
tar
tidak akan menangkap.sumber
Mengapa Anda menggabungkan dengan direktori tidak termasuk? Bukankah ide yang lebih baik memasang perangkat yang sama ke direktori lain? kernel modern memungkinkan cara ini. misalnya, Anda telah melakukan mount
/ dev / sda1 as / lalu lakukan: mkdir / CLEANROOT mount / dev / sda1 / CLEANROOT
setelah ini, Anda memiliki: / dev / sda1 as / / dev / hda1 sebagai / CLEANROOT
Ini adalah sistem file yang sama yang terlihat dengan dua tempat, tetapi / CLEANROOT tidak memiliki mount tambahan. Kemudian Anda dapat tar atau rsync / CLEANROOT tanpa pengecualian, bukan menyalin / dengan pengecualian.
Tentu saja Anda harus menyalin partisi data lain ketika Anda punya.
Mengkopi partisi adalah langkah pertama untuk pemulihan server. yang lain adalah regenerasi sektor boot, jika tidak, sistem tidak akan boot dari disk yang disalin. Usefull adalah mode penyelamatan saat Anda boot dari instal / rescue CD atau flashdisk.
sumber
Apakah Anda memiliki akses fisik ke host yang gagal?
Jika Anda melakukannya, boot dari CD langsung. Kemudian gunakan:
Sintaks yang dikecualikan adalah:
tar --exclude='/dev'
.rsync -zvr --exclude /dev/ / destination_computer_name_or_ip
nc -l 4242 | gunzip | cat > my_full_disk_backup_of_PC_named_foo
dd if=/dev/sda of=- bs=1M | gzip | nc -p 4242 name_of_the_destination
Jika Anda tidak dapat mem-boot dari CD langsung, maka sebagian besar solusi di atas akan tetap sama, tetapi:
Misalnya.
tar --exclude='/dev' --exclude='/proc'
sumber
#mount /dev/sda1 /mnt/fedora
mount: unknown filesystem type 'LVM2_member'
Berikut ini adalah deskripsi cara menyalin file menggunakan
tar
danssh
. Pada dasarnya, Anda akan menjalankan salah satu dari yang berikut, tergantung pada apakah Anda ingin menyalin lokal - & gt; jarak jauh atau jarak jauh - & gt; lokal:sumber
Anda harus mempertimbangkan menggunakan rsync
perintah berikut mengasumsikan 2 hal:
rsync / new_partition:/wherever/you/want/
Catatan: trailing / penting, jika tidak file Anda akan berakhir di satu level direktori di atas
sumber
-a
parameter (dan mungkin-A
), karena menghemat waktu, kepemilikan, symlink (dan mungkin ACL) dll dan-e ssh
parameter, karena data harus ditransfer ke komputer lain. Begitursync -aAv -e ssh root@failingharddrivehost:/ /good_computer/newpartition_mountpoint