linux kök dosya sisteminin tamamını ssh ve tar ile yeni sabit diske kopyalama


18

Ben açık, kullanılabilir bir bölüm ile başka bir bilgisayara başarısız bir sabit disk kapalı tüm linux kök dosya sistemi aktarmak gerekir. Bunun içerdiğinden eminim tarve sshbunun nasıl yapılacağını tam olarak hatırlayamıyorum.

Muhtemelen böyle bir şey çalıştırmak için yeni / hedef ana bilgisayar üzerinde canlı bir cd kullanarak görüntüleme :

ssh user@failingharddrivehost "some tar command | piped into something else"


konu dışı. programlama sorusu değil. ama deneyinssh user@failingsys "tar cfz - /" > oldsys.tar.gz

Tar / dev / (örneğin / dev / random, / dev / sdX, ...) uygulamamıza dikkat etmek istiyorsunuz. Ditto / proc /
Hennes

Yanıtlar:


19

Rsync kullanın. Yeni ana bilgisayardan şunları kullanabilirsiniz:

rsync -avP --numeric-ids --exclude='/dev' --exclude='/proc' --exclude='/sys' root@failedharddrivehost:/ /path/to/destination/

Ben katran gibi bir şey dahil denemek olmaz çünkü büyük olasılıkla bozuk dosyaları olduğunda işe yaramaz.


Etagenklo ve @Hennes tarafından yukarıda açıklandığı gibi rsync kullanılarak sona erdi. Göç iyi gitti. Sadece grub düzeltmek gerekiyor, ama bu çok kötü olmamalı.
CHK

8
Orijinal fs daha kesin bir kopyasını sonuçlanan acls, xattrs ve hardlink korumak için de rsync bayrakları olarak -AHX eklemek istiyorum.
Alexander Remesch

5
Kök dosya sisteminde olmayan öğeleri yoksaymak için -x eklerim, sonra çeşitli yollar için --exclude bağımsız değişkenlerini atlayabilirsiniz.
Alex

4

Her iki bilgisayar da aynı (güvenli) LAN'da ise, farklı bir yaklaşım kullanmanızı öneririm netcat. Bu genellikle verileri şifrelemediği için çok daha hızlıdır.

root@good_host$ cd good_partition; netcat -l -p 1234 | tar xvpmf -
root@bad_host$ tar -cv -f- --exclude=/proc --exclude=/sys / | netcat good_host.ip 1234

iyi makinede bir dinleme portu (1234) açar netcat -l -p 1234ve gelen verileri tarayıklamak üzere boru haline getirir (zaman ve izinleri koruyarak). Kötü ev sahibi de kullanarak, bu bağlantı noktasına veri gönderir tarve netcat. Bazı dahil --excludeolarak, parametreleri /procve /syssanal dosya sistemleri ve yeni ana bilgisayarda dolayısıyla yararsız. (özellikle ( /proc/kcore) içindeki RAM'inizi temsil eden dosya gereksiz miktarda veri ekler).

Bununla birlikte, ddarızalı sürücünün bölümlerini bir dökümü yapmayı da düşünmelisiniz :

user@good_host$ cd good_partition; netcat -l -p 1234 > dump_of_bad_partition_1.dd
root@bad_host$ dd if=/dev/sda1 | netcat good_host.ip 1234

/dev/sda1doğru cihaza adapte olmanız gerekiyordu . Bunu arızalı sürücüdeki diğer bölümlerle de yapın.

Bu dökümle tar, yakalamayacak önemli bir meta veriyi (ACL'ler gibi) kaçırmamaya eminsiniz .


3

Neden dizini hariç tutarak birleştiriyorsunuz? Aynı cihazı başka bir dizine bağlamak daha iyi bir fikir değil mi? modern çekirdekler bu şekilde izin verir. örneğin,

/ dev / sda1 olarak / sonra yapın: mkdir / CLEANROOT montaj / dev / sda1 / CLEANROOT

bundan sonra: / dev / sda1 as / / dev / sda1 as / CLEANROOT

Bu, iki yerde görünen aynı dosya sistemidir, ancak / CLEANROOT'un ek bağlar yoktur. Daha sonra kopyalamak / hariç tutmak yerine herhangi bir istisna olmadan katran veya rsync / CLEANROOT yapabilirsiniz.

Tabii ki, bazı veri bölümlerini kopyalamanız gerekir.

Bölümü kopyalamak sunucu kurtarma için ilk adımdır. diğeri yeniden başlatma sektörlerini oluşturur, aksi takdirde sistem kopyalanan diskten önyükleme yapmayacaktır. Yükleme / kurtarma CD'sinden veya pendrive'dan önyükleme yaptığınızda yararlı kurtarma modudur.


1

Arızalı ana bilgisayara fiziksel erişiminiz var mı?

Bunu yaparsanız, canlı bir CD'den önyükleme yapın. Sonra kullan:

  • dump (izinleri de dahil olmak üzere tüm dosya sistemlerini dump / geri yükler).
  • / Dev hariç tar . Sen std_out çıktısı ve netcat'in olsa o boru ile bu birleştirebilirsiniz
    sözdizimi hariç geçerli: tar --exclude='/dev'.
  • veya rsync ile aynı hariç tutulur. Örneğin
    rsync -zvr --exclude /dev/ / destination_computer_name_or_ip
  • veya dd'yi şu şekilde kullanın :
    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

Canlı bir CD'den önyükleme yapamıyorsanız, yukarıdaki çözümlerin çoğu aynı kalır, ancak:

  1. Bazı dosyalar kullanımda / kilitli olabilir.
  2. Yalnızca / dev / değil / / proc / parametresini de hariç tuttuğunuzdan emin olun.
    Örneğintar --exclude='/dev' --exclude='/proc'

Evet, her iki ana bilgisayara da fiziksel (ve kök) erişimim var. Rsync ile deneyecek. netcat bilinmeyen nedenlerden dolayı başarısız kutusu nedeniyle çöktü. hedef dosya sistemi takılmak istemiyor. ile başarısız: #mount /dev/sda1 /mnt/fedora mount: unknown filesystem type 'LVM2_member'
CHK


0

rsync kullanmayı düşünmelisiniz

follwoing komutu 2 şey varsayar:

  1. sabit sürücü arızalı sistemdesiniz
  2. yeni bölüm, ssh etkinleştirilmiş minimum bir linux kurulumuna sahiptir.

rsync / new_partition:/wherever/you/want/

Not: sondaki / önemlidir, aksi takdirde dosyalarınız yukarıdaki bir dizin düzeyinde olur


OP muhtemelen -aparametreleri (ve belki de -A), zaman, sahiplik, sembolik bağlar (ve belki de ACL'ler) vb -e ssh. Yanirsync -aAv -e ssh root@failingharddrivehost:/ /good_computer/newpartition_mountpoint
mpy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.