A adição de um buffer grande acelerará significativamente as coisas . O tamanho padrão é pequeno; como 512 bytes. Você aumenta o tamanho usando a opção bs. Eu só estou usando sudo porque você fez.
sudo dd if=/dev/disk bs=4096m | sudo dd of=/Volumes/Path/To.iso bs=4096m
Este comando de aparência assustadora solicitará aos comandos dd que relatem seu status. O -s diz para sinalizar.
sudo kill -s siginfo $(pgrep ^dd) # get dd info
Eu testei com vários tamanhos de buffer, quanto maior o buffer, mais rápida será a cópia. Não deseja obter um buffer tão grande, pois ele precisa ser paginado.
Se eu entendi errado a sintaxe acima, esses são os comandos reais que funcionaram para mim. Eu suponho que você saiba que precisa desmontar a partição / unidade antes de usar o dd. Para alguns comandos dd, eu precisava usar o sudo.
dd if=/dev/disk0s10 bs=4096m | gzip | dd of=~/disk0-s10 bs=4096m
dd if=~/disk0-s10 bs=4096m | gunzip | dd of=/dev/disk0s10 bs=4096m
sudo kill -s siginfo $(pgrep ^dd) # get dd info
Edit: Jan 18,2019 Fiz temporizações usando um ou dois comandos dd. Foi uma jogada de que forma era mais rápida. O tempo no meu teste variava tipicamente em 0,3 segundo entre os comandos. No entanto, em um caso, os dois comandos dd foram mais lentos em mais de um segundo. A diferença parecia ser qual comando foi executado primeiro. O segundo teste foi sempre mais rápido. Suponho que o comando one dd crie um segundo processo para gerar os dados e se comunique com o segundo processo por meio de um pipe. É o mesmo que usar dois comandos dd.
dd if=InstallESD.dmg bs=801920k of="/Volumes/--Mojave--/mojave2.dmg"
5+1 records in
5+1 records out
4719681368 bytes transferred in 28.887363 secs (163382216 bytes/sec)
Show_Time
date +%s
Elapsed time in seconds since start of processing: 84 Time of this step: 29
dd if=InstallESD.dmg bs=801920k | dd of="/Volumes/--Mojave--/mojave.dmg" bs=801920k
5+1 records in
5+1 records out
4719681368 bytes transferred in 27.383548 secs (172354633 bytes/sec)
0+72017 records in
0+72017 records out
4719681368 bytes transferred in 27.459524 secs (171877757 bytes/sec)
Show_Time
date +%s
Elapsed time in seconds since start of processing: 112 Time of this step: 28
rm "/Volumes/--Mojave--/mojave.dmg"
rm "/Volumes/--Mojave--/mojave2.dmg"
Show_Time
date +%s
Elapsed time in seconds since start of processing: 112 Time of this step: 0
dd if=InstallESD.dmg bs=801920k of="/Volumes/--Mojave--/mojave2.dmg"
5+1 records in
5+1 records out
4719681368 bytes transferred in 26.754509 secs (176406950 bytes/sec)
Show_Time
date +%s
Elapsed time in seconds since start of processing: 139 Time of this step: 27
dd if=InstallESD.dmg bs=801920k | dd of="/Volumes/--Mojave--/mojave.dmg" bs=801920k
5+1 records in
5+1 records out
4719681368 bytes transferred in 26.210222 secs (180070255 bytes/sec)
0+72017 records in
0+72017 records out
4719681368 bytes transferred in 26.286946 secs (179544682 bytes/sec)
Show_Time
date +%s
Elapsed time in seconds since start of processing: 165 Time of this step: 26
... as linhas no início foram cortadas. ...
Aqui está o script bash que eu usei.
#!/bin/bash -v
function Show_Time () {
let currentRunTime="$( date +%s ) - ${Seconds_since_the_epoch_start}"
let stepRunTime=currentRunTime-previousRunTime
echo " Elapsed time in seconds since start of processing: ${currentRunTime}" \
" Time of this step: ${stepRunTime}"
echo
let previousRunTime=currentRunTime
}
savedCommandName="$0"
echo
echo "${savedCommandName} script last revised on $(GetFileInfo -m $0)"
#echo "${savedCommandName} script revised."
echo
# input file name "/Applications/InstallmacOSHighSierra.app/Contents/SharedSupport/InstallESD.dmg"
inputDir="/Applications/InstallmacOSHighSierra.app/Contents/SharedSupport"
cd ${inputDir}
inputName="InstallESD.dmg"
echo "inputDir is ${inputDir}"
echo "inputName is ${inputName}"
ls -l "${inputDir}/${inputName}"
ls -l "/Volumes/--Mojave--/mojave.dmg"
rm "/Volumes/--Mojave--/mojave.dmg"
ls -l "/Volumes/--Mojave--/mojave.dmg"
ls -l "/Volumes/--Mojave--/mojave2.dmg"
rm "/Volumes/--Mojave--/mojave2.dmg"
ls -l "/Volumes/--Mojave--/mojave2.dmg"
# Set the start time now that the user interaction is done
Seconds_since_the_epoch_start=$( date +%s )
# 80meg buffer
Show_Time
dd if=InstallESD.dmg bs=801920k of="/Volumes/--Mojave--/mojave2.dmg"
Show_Time
dd if=InstallESD.dmg bs=801920k | dd of="/Volumes/--Mojave--/mojave.dmg" bs=801920k
Show_Time
rm "/Volumes/--Mojave--/mojave.dmg"
rm "/Volumes/--Mojave--/mojave2.dmg"
Show_Time
dd if=InstallESD.dmg bs=801920k of="/Volumes/--Mojave--/mojave2.dmg"
Show_Time
dd if=InstallESD.dmg bs=801920k | dd of="/Volumes/--Mojave--/mojave.dmg" bs=801920k
Show_Time
rm "/Volumes/--Mojave--/mojave.dmg"
rm "/Volumes/--Mojave--/mojave2.dmg"
Show_Time
dd if=InstallESD.dmg bs=801920k of="/Volumes/--Mojave--/mojave2.dmg"
Show_Time
dd if=InstallESD.dmg bs=801920k | dd of="/Volumes/--Mojave--/mojave.dmg" bs=801920k
Show_Time