There are some predefined settings:
-f | -r | -R | -Z | -L | -I | -o | ||
---|---|---|---|---|---|---|---|---|
stage | skip | resolution | reads | move head | low level | increm. mode | bad block out file | other |
stage1 | 10% | 10% | 1 | 0 | 2 | stage1.badblocks | ||
stage2 | 128* | 1* | 1 | 0 | 2 | stage1.badblocks | stage2.badblocks | |
stage3 | 1* | 1* | 4 | 1 | 2 | stage2.badblocks | stage3.badblocks |
Every stage
preset parameter can be overridden.
E.g. for stage 3 is not needed to give additional stress to device with -R 4 and -Z 1, and better is to use:
safecopy --forceopen -L 0 --stage3 -c 151275030 -Z 0 -R 1 /dev/sdb /dev/sdc
Note: -c
parameter is used to continue previous safecopy
interrupted by CTRL+C.
Note: With -f
parameter other than 1* you can miss good areas in between two bad ones.
In current working directory, safecopy will create files with badblocks map: stage#.badblocks
, which are used in next stages.
Make sure stage#.badblocks
files are sorted are unique before moving to next stage.
In other case following error will shown:
..................Parse error in badblocks file stage1.badblocks: not sorted correctly! Aborted because of error! Recovered bad blocks: 0 Unrecoverable bad blocks (bytes): 60 (18100224) Blocks (bytes) copied: 151299151 (619721322496)
Number of lines in each stage#.badblocks
file shows how each stage works:
# cat stage1.badblocks | sort | uniq | wc -l 51200 # cat stage2.badblocks | sort | uniq | wc -l 4720 # cat stage3.badblocks | sort | uniq | wc -l 1477
Typical usage is:
safecopy --stage1 /dev/source output.img mv stage1.badblocks stage1.badblocks.bak cat stage1.badblocks.bak | sort | uniq > stage1.badblocks safecopy --stage2 /dev/source output.img mv stage2.badblocks stage2.badblocks.bak cat stage2.badblocks.bak | sort | uniq > stage2.badblocks safecopy --stage3 /dev/source output.img
......................................... [244042830] ......................................... [244084814] ......................................... [244126798] ......................................... [244168782] ..................... 100% Done! Recovered bad blocks: 0 Unrecoverable bad blocks (bytes): 2 (209715200) Blocks (bytes) copied: 244190646 (1000204886016)
# safecopy --forceopen -L 0 --stage2 /dev/sdb /dev/sdc Low level device calls enabled mode: 0 Forced reopening of source file even if device is temporarily gone. Reported hw blocksize: 4096 Filesize not reported by stat(), trying seek(). File size: 1000204886016 Blocksize: 4096 Fault skip blocksize: 524288 Resolution: 4096 Min read attempts: 1 Head moves on read error: 0 Incremental mode file: stage1.badblocks Incremental mode blocksize: 4096 Badblocks output: stage2.badblocks Starting block: 0 Source: /dev/sdb Destination: /dev/sdc Destination filesize not reported by stat(), trying seek(). Current destination size: 1000204886016 [1124830](+4607303680){X<<<<<<<}[1124831](+4096) .........................[151273551](+615009157120){X [151273679] <<<<<<<}[151273655](+425984) .[151273690](+143360){XXXXX<<<<<<<}[151274319](+2576384) .[151274323](+16384){XXX<<<<<<<}[151274620](+1216512) .[151274700](+327680){X<<<<<<<}[151274788](+360448) .[151275798](+20480){XXX<<<<<<<}[151276078](+1146880) .[151276107](+118784){X<<<<<<<}[151276110](+12288) .[151276125](+61440){XX<<<<<<<}[151276262](+561152) .[151276326](+262144){X<<<<<<<}[151276345](+77824) .[151276347](+8192){X<<<<<<<}[151276412](+266240) .[151276511](+405504){X<<<<<<<}[151276512](+4096) ..[151278398](+7725056){XXXX<<<<<<<}[151278843](+1822720) .[151278847](+16384){XX<<<<<<<}[151279033](+761856) .[151279172](+8192){X<<<<<<<}[151279173](+4096) .[151279178](+20480){X<<<<<<<}[151279179](+4096) .[151279274](+389120){X<<<<<<<}[151279287](+53248) .[151279318](+126976){XX<<<<<<<}[151279501](+749568) .[151279567](+270336){X<<<<<<<}[151279640](+299008) .[151279646](+24576){X<<<<<<<}[151279684](+155648) .[151279685](+4096){XXX<<<<<<<}[151280013](+1343488) .[151280572](+413696){X<<<<<<<}[151280636](+262144) .[151280638](+8192){XX<<<<<<<}[151280812](+712704) .................. 100% Done! Recovered bad blocks: 0 Unrecoverable bad blocks (bytes): 60 (18206720) Blocks (bytes) copied: 244190646 (1000204886016)
......................................... [175312976] ..^C:-) 71% Aborted by user request! Recovered bad blocks: 0 Unrecoverable bad blocks (bytes): 2 (209715200) Blocks (bytes) copied: 175316045 (718094520320)
With -I
parameter safecopy works in incremental mode. Position is detemined from dest
file size.
If dest
is a block device parameter -c
needs to be used:
safecopy --stage1 -c 175316045 -I my/previous/stage1.badblocks -L 0 --forceopen /dev/sdi /dev/sdd
To disable SATA low level operations:
safecopy --forceopen -L 0 --stage1 /dev/source /dev/destination