gzip - przekierowanie czy potok?

10

Będę tworzył kopię zapasową dużego dysku (750 GB) na zewnętrznym dysku USB za pomocą dd.
Czy powinienem używać przekierowania czy potoków? Który jest bardziej wydajny? Czy jest różnica?

Jaki jest najlepszy rozmiar bloku? Problemem może być USB.

dd if=/dev/sda bs=1M | gzip -c > /mnt/sdb1/backups/disk.img.gz

gzip -dc /mnt/sdb1/backups/disk.img.gz | dd of=/dev/sda bs=1M

vs

dd if=/dev/sda bs=1M | gzip -c | dd of=/mnt/sdb1/backups/disk.img.gz

dd if=/mnt/sdb1/backups/disk.img.gz | gzip -dc | dd of=/dev/sda bs=1M

Dzięki.

mcu
źródło
2
Spróbowałbym wykonać kopię zapasową systemów plików, a nie surowych obrazów dysków. Aby dostroić parametry, musisz przeprowadzić test porównawczy.
ddjest archaiczny (każde inne narzędzie na szczęście usuwa bs=i count=, podobnie ddrescue), a w twoim przypadku jest również prawie bezcelowy. Po prostu podłącz go do gzip -c </dev/sda >disk.img.gz& gzip -cd disk.img.gz >/dev/sda.
Lub zrób to za pomocą rsync. Wystarczy zbudować polecenie z parametrami, a zrobi to wszystko w najbardziej efektywny sposób, jaki myśli.
vakufo
W drugim poleceniu drugiego wykazu, co ma zrobić ta dd if=.../disk.img.gz |część? O ile rozumiem, gzip -dc(= zcat) nie dba o to, stdingdy występuje argument pliku.
sr_
Nie sądzę, aby Linux mógł niezawodnie odtwarzać instalacje Windows, po prostu kopiując strukturę plików. Stąd potrzeba kopiowania bitowego jak dd. ddrescuewygląda bardziej solidnie niż gładko dd. Czy użyłbyś GNU ddrescuelub dd_rescue? Co można pobrać z dobrej płyty Live CD?
mcu

Odpowiedzi:

3

Piping wymaga jeszcze jednego procesu i jeszcze jednej kopii użytkownika-lądu, więc bardziej efektywne powinno być użycie przekierowania.

Wydaje mi się jednak, że w dzisiejszym systemie buforowania sprzętu i oprogramowania nie powinno to robić żadnej różnicy. Być może możesz uzyskać lepsze wyniki przy użyciu bs=4klub bs=64k, ponieważ jest to limit potoku pod Linuksem. Zobacz to pytanie, aby uzyskać więcej informacji na temat różnych parametrów bs .

Coren
źródło
9

W ogóle nie musisz używać ddani orurowania.

</dev/sda gzip >/mnt/sdb1/backups/disk.img.gz
</mnt/sdb1/backups/disk.img.gz gunzip >/dev/sda

Kiedyś zrobiłem test porównawczy i znalazłem używanie ddwolniej niż catw przypadku prostej kopii między różnymi dyskami. Spodziewałbym się, że ddw tym przypadku rura stworzy rozwiązanie wymagające jeszcze wolniej.

Gilles „SO- przestań być zły”
źródło
To jest przykład użycia przekierowania.
psusi
@psusi Gah! Chciałem napisać „dd or piping”. Dzięki.
Gilles „SO- przestań być zły”
Czy istnieje sposób na połączenie pvtych poleceń?
Yaron
2
@Yaron Sure: zastąpienie gzipprzez pv | gzipi gzip -dzagzip -d | gv
Gilles „SO- przestać być zła”
0

Prostsze:

gzip -c /dev/sda > disk.img.gz
gzip -dc /mnt/sdb1/backups/disk.img.gz > /dev/sda 
Mike Redrobe
źródło