kompresowanie kopii zapasowej dd w locie

23

Może to zabrzmi jak głupie pytanie, ale sposób, w jaki próbuję to zrobić, nie działa.

Jestem na żywo, dysk jest odmontowany itp.

Kiedy robię kopię zapasową w ten sposób

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

... normalnie działałoby, ale nie mam wystarczającej ilości miejsca na zewnętrznym dysku twardym, do którego kopiuję (PRAWIE pasuje). Więc chciałem skompresować w ten sposób

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

... ale odmówiono mi uprawnień. Nie rozumiem.

Phil
źródło
2
Nie rób To nie jest kopia zapasowa. Sprawdź polecenia „zrzutu” i „przywracania”.
Juliano,
Lub tar lub CPI ....
Chris
1
Juliano, co rozumiesz przez „to nie jest kopia zapasowa”?
Phil,
5
Nie jest to kopia zapasowa, ponieważ kopie zapasowe są poważne, mają dobrą strukturę i używają odpowiednich narzędzi do tworzenia kopii zapasowych. Po prostu tworzysz kopię surowych danych partycji. Aby przywrócić te dane, potrzebujesz innej partycji o tej samej geometrii, co nie jest gwarantowane. Ponadto, jeśli uszkodzisz pojedynczy blok archiwum (superblok, tabele i-węzłów, katalog główny itp.), Ryzykujesz utratą wszystkich danych. Przy odpowiedniej kopii zapasowej tak się nie stanie.
Juliano
7
„Aby przywrócić te dane, będziesz potrzebować kolejnej partycji o tej samej geometrii, co nie jest gwarantowane” Dlaczego miałby tego potrzebować, czy nie może zamontować obrazu partycji na urządzeniu z pętlą zwrotną?
Kyle Brandt,

Odpowiedzi:

41

Czy masz dostęp do pliku sda2-backup ... gz? Sudo działa tylko z poleceniem po nim i nie dotyczy przekierowania. Jeśli chcesz zastosować się do przekierowania, uruchom powłokę jako root, aby wszystkie procesy potomne również były root:

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

Alternatywnie możesz zamontować dysk za pomocą opcji montowania uid / gid (przy założeniu ext3), abyś miał uprawnienia do zapisu jakikolwiek użytkownik. Lub użyj roota, aby utworzyć folder w / media / disk, do którego masz uprawnienia.

Inne informacje, które mogą ci pomóc:

  • Rozmiar bloku naprawdę ma znaczenie tylko dla prędkości. Domyślnie 512 bajtów, które chcesz zachować dla MBR i dyskietek. Większe rozmiary do punktu powinny przyspieszyć operacje, uważaj to za analogiczne do bufora. Oto link do osoby, która przeprowadziła testy porównawcze prędkości przy różnych rozmiarach bloków. Ale powinieneś wykonać własne testy, ponieważ na wydajność wpływa wiele czynników. Spójrz także na drugą odpowiedź Andreasa
  • Jeśli chcesz to zrobić przez sieć za pomocą ssh i netcat, aby przestrzeń nie była tak dużym problemem, zobacz to pytanie o awarię serwera .
  • Czy naprawdę potrzebujesz obrazu partycji, mogą istnieć lepsze strategie tworzenia kopii zapasowych?
  • dd jest bardzo niebezpiecznym poleceniem, użyj ofzamiast, ifa kończy się nadpisywanie tego, co próbujesz wykonać kopię zapasową !! Zauważ, jak klucze oi isą obok siebie? Więc bądź bardzo, bardzo, bardzo ostrożny.
Kyle Brandt
źródło
spróbuję tego. jak sprawić, że bs = 64k? (i czy muszę?)
Phil,
Bs = 64k tylko przyspiesza przesyłanie, ponieważ dd będzie czytał bloki po 64k każdy zamiast domyślnego rozmiaru bloku (nie pamiętam).
Chris
Co powiedział Chris, a jeśli chcesz go dołączyć, umieść go po dd i przed symbolem potoku (|), ponieważ jest to argument dd.
Kyle Brandt,
1
Od czasu do czasu używam „sudo tee $ file> / dev / null” w potoku, aby umożliwić zapis do pliku, do którego moje konto użytkownika też nie ma dostępu.
Rik Schneider
6

W pierwszym przypadku dd działa jako root.

W drugim przypadku dd działa jako root, ale gzip działa tak jak ty.

Zmień uprawnienia na / media / disk, daj sobie root roota lub uruchom gzip jako root.

Chris
źródło
3

Ponadto możesz zastąpić gzip bzip2 --bestna znacznie lepszą kompresję:

sudo dd if=/dev/sda2 | bzip2 --best > /media/disk/$(date +%Y%m%d_%H%M%S)_sda2-backup.bz2
dmityugov
źródło
3
Kosztem dużej ilości czasu. Aby uzyskać więcej informacji, zobacz changelog.complete.org/archives/… „Jak myśleć o kompresji”.
Bill Weiss,
@BillWeiss: Dziękuję za komentarz, bardzo interesująca lektura!
andreas
kompresja: lzma> bzip2> gzip .. prędkość: gzip> bzip2> lzma. O ile nie publikujesz obrazu dysku w Internecie, nie masz wiele korzyści z czasu, mocy procesora i pamięci, które wydajesz na lepszą kompresję.