Bir dosya sistemi tam olarak nasıl kopyalanabilir?


10

Programladığım bir cihaz için tam kopyasını almak istediğim bir dosya sistemim var. İdeal olarak bu kopyanın kopyalandığı klasöre özdeş olmasını istiyorum. Bunu kullanmayı denemek için cp -r cp -ave kullanmayı denedim rsync -azvP. Her biri farklı boyutta (kullanarak du -s) bir klasörle sonuçlanır ve sonuçta, cihazım orijinal klasörden tükenmesine rağmen kopyaladığım klasörden çıkmaz.

  • Kullandığım komutların hesaba katılmadığı ne anlama geliyor?
  • Bir dosya sistemi / klasörü kopyalarken her şeyi aynı tutmak mümkün müdür? Eğer öyleyse bunu nasıl yapabilirim?

PS StackOverflow benzer bir soru yayınladı ama hızlı bir şekilde yanlış değişim sordum fark etti


Düzenleme: Bu yardımcı olmayabilir ama kopyalanan dizini hangi yöntemi kullanırsam kullanın her zaman aşağıdaki çıkış ile söz konusu makinenin Çekirdek Panik neden olur.

VFS: Kök fs NFS üzerinden bağlanamıyor, disket deneniyor. VFS: "nfs" veya bilinmeyen blok kök aygıtı açılamıyor (2,0) Lütfen doğru bir "root =" önyükleme seçeneği ekleyin; kullanılabilir bölümler şunlardır: 1f00
64 mtdblock0 (sürücü?) 1f02 64 mtdblock2 (sürücü?) 1f04 2432 mtdblock4 (sürücü?) 1f05 128 mtdblock5 (sürücü?) 1f06 4352 mtdblock6 (sürücü?) 1f07 204928 mtdblock7 (sürücü?) 1f0 504 504 mtdblock8 (sürücü?) 0800
8388608 sda sürücüsü: sd Çekirdek paniği - eşitleme değil: VFS: bilinmeyen blokta kök fs bağlanılamıyor (2,0)


5
duÇıktıdaki bir fark , içeriğin aynı olmadığının bir göstergesi değildir.
Ignacio Vazquez-Abrams

Cihazım kopyalanan dizini kullanarak önyükleme yapmıyor. Bunu bir gösterge olarak alıyorum ve tam olarak neyi yanlış yaptığımı merak ediyorum, kopyalanan dosya sistemi aynı muamele
görmediğini

Tam olarak ne yapmaya çalıştığınızı belirtmeniz gerekiyor. rsync -aveya cp -adizinlerin tam kopyalarını yapın, ancak önyüklenebilir bir diski kopyalamaya çalışıyorsunuz, bunu tamamlamak için yapmanız gereken birkaç şey daha var.
forcefsck

1
Ne tür bir cihaz? Ne tür bir dosya sistemi? Ne tür bir depolama ortamı?
michas

1
Bana öyle geliyor dd if=/some/location of=/some/other/location bs=4Mki, verileri olduğu gibi okumak ve yazmak gibi bir şey kullanmak istiyorsunuz .

Yanıtlar:


12

Genellikle aşağıdaki alternatiflerden birini kullanırım:

  • rsync -aHAX(ayrıntı için v ekle) kopyalama sırasında hedef klasördeki herhangi bir bağlantı yapısını ve x-attr'leri korumanızı sağlar. Unutmayın a, arşiv anlamına gelir ve zaten zaman, sahiplik ve izinleri korur.
  • Basit tar cvf(zaman kazanmak için sıkıştırmayın, sadece onları katlayın), birincisi ne olursa olsun ihtiyacım olanı karşılamıyorsa ve zamanım yoksa, her zaman ilkini deniyorum.

Her şeyin olması gerektiği gibi gittiğini kontrol etmek için, diff -r <folder1> <folder2>daha sonra isterseniz koşabilirsiniz .


1
Bu hile yaptı! Ayrıca, önyükleme yaptığım cihazın (NFS aracılığıyla) kapatıldığından ve kopya devam ederken dosya sistemine erişemediğinden emin olmam gerekiyordu.
TopGunCoder

1
Ah, okuma-yazma erişimi olan NFS istemcileri bazen işleri hızlandırabilir!
bayındırh

3
Bu, -S olmadan seyrek dosyaları kopyalamaz. Bu du -sfarkın bir parçası olabilir . Her rsync -axXSAHşeyi kopyalardım. -X yalnızca dosya sisteminde kopyalanır, başka bir dosya sisteminden bağlanan dosyaları kopyalamaz.
Victor Roetman

--Numeric-ids ne olacak?
2017'de 0x2207

@ 0x2207 Yalnızca bir kullanıcının farklı sistemlerde farklı sayısal kimlikleri varsa kullanışlıdır (örneğin, kullanıcı hbayindir her iki sistemde de ve kaynakta UID 1000 ve hedefte 1536 olduğunda). Bu seçeneği kullanmak zorunda kalmadım, çünkü UID ve GID'yi değil gerçek sahibini korumam gerekiyor. Bir kullanıcı kaynak veya hedef yoksa, sayısal kimlik yedek olarak kullanılır.
bayindirh

4

Yanıtınızı, muhtemelen kök klasörü kopyalamaya çalıştığınız yorumlarında okumak ("Cihazım kopyalanan dizini kullanarak önyükleme yapmıyor"). Bu durumda yapmanız gereken birkaç şey vardır.

$ cd /
$ mkdir backups

$ tar -cvpf /backups/fullbackup.tar --directory=/ --exclude=proc --exclude=sys \
     --exclude=dev/pts --exclude=backups .

Kök klasörü yeni sisteme kopyaladıktan sonra, önyükleme yapmadan önce grub'u güncellemeniz gerekir.

$ grub-install --recheck /dev/sdX (Where X is the partition number)
$ update-grub

+1 Ben ipucu OP başarısız önyükleme iletisinde olduğunu düşünüyorum ve bu adres.
msw

Görünüşe göre buna çok benzer bir şey çalıştı. Makinemde kopyalamam gereken bir dosya sistemi (FS) ile uğraşıyordum. Tüm aldı benim için oldu tar c, sonra tar xo. Kicker olsa da, makinem için yerel olan
FS'yi

grub-install: error: embedding is not possible, but this is required for cross-disk install.
Vitaly Zdanevich

2

FSArchiver'ı deneyebilirsiniz . Şimdi sürdürülemeyen benzer partikülün halefi. Geçmişte hem partimage hem de FSArchiver kullandım ve ikisi de iyi çalıştı. Bildiğim kadarıyla, ikisi de orijinaline mümkün olduğunca yakın olan bir dosya sisteminin kopyalarını çıkarıyor. Bence FSArchiver partimage'den biraz daha güçlü. Örneğin, partimage çalışmazken ext4 ile çalışır. Bkz FSArchiver / Partimage karşılaştırma tablosunu .


2

duKlasörleri karşılaştırmak için kullanmak doğal olarak zahmetlidir. Gerçekten tamamen kendi boyutlarına göre 2 dizin karşılaştırmak istiyorsanız, o zaman şöyle kullanın du:

$ du -sh --apparent-size <dir>

Bu anahtar, fiziksel sürücü ortamında depolandığında tükettiği disk alanı miktarına karşı dizinlerin gerçek boyutunu bildirir. Diskler bloklar halinde düzenlenir ve dosyalar bu bloklara yazılır. Bir dosya yalnızca BLOCK + 1 alanına ihtiyaç duyuyorsa, 2 BLOCKS değerinde alan tüketir ve dunormalde bildirir. Unutmayın, aracın adı disk kullanımı!

Tüm dosya sistemi gibi görünen şeylerle uğraşıyorsanız dd, dizinin bulunduğu bölümün tam bir kopyasını oluşturmak için kullanmaya eğilimliyim

$ dd if=/dev/sda1 of=/srv/boot.img

Daha sonra boot.img, bölümü istediğiniz yere geri yüklemek için bunu kullanabilirsiniz .

$ dd if=/srv/boot.img of=/dev/sdb1

du ayrıca diskteki boyutu da bildirir (bu nedenle seyrek dosyalar ve sabit bağlantılar daha az yer kaplar). Örneğin, du -sh /var21G verir ancak du -sh --apparent-size /varsistemimde 209G verir.
Victor Roetman

0

Biraz "özdeş" ile ne demek istediğine bağlı.

  • Sadece yapmak rsyncçoğu zaman iyi olur. Bazen tarher şeyi bir dosyaya paketlemek ve başka bir yere çıkarmak için kullanmak istersiniz .
  • Komple dosya sisteminin bir klonunu istiyorsanız dd, tüm dosya sistemini kopyalamak için kullanabilirsiniz .

Cihazınızda hata ayıklamak için herhangi bir yönteminiz varsa, şu anda neden çalışmadığı sorunun tam olarak ne olduğunu bulmaya çalışın.

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.