Thread: [Partclone-user] [PATCH] Using partclone to create a domain log file for GNU ddrescue
Brought to you by:
thomas_tsai
From: Ian A. <ab...@me...> - 2011-05-20 16:25:43
Attachments:
partclone-0.2.23-domain-log.patch
|
Hi folks, While using GNU ddrescue recently to copy a partition on a disk with read errors, I realized it would be quicker if it only copied the in-use areas of the partition. ddrescue has a '--domain-log=FILE' option which can be used to restrict it to certain areas, so the problem is to create such a domain log file to cover the areas used by the filesystem on the partition. I modified partclone-0.2.23 to add a new mode '--domain' (-D) which examines the source device and writes a domain log file to the target. Please see the attached patch that implements this function. I also added an option '--offset_domain=X' to add a fixed offset (in bytes) to the position values in the domain log file. This is useful if you are using ddrescue to recover a whole disk and need to specify the offset (in bytes) to the partition covered by the domain log file. Here is an example of how to use it: # produce a domain file for NTFS partition on /dev/sda1 partclone.ntfs -s /dev/sda1 -D -o sda1.domain # copy /dev/sda1 to /dev/sdb1 using ddrescue with domain log file ddrescue --domain-log sda1.domain /dev/sda1 /dev/sdb1 rescue.log The domain log file contains some comment lines starting with '#', a status line (which is required but ignored by ddrescue's --domain-log option), and some lines describing the used and unused sections as follows: POSITION LENGTH STATUS where 'POSITION' is the offset to the section in bytes, 'LENGTH' is the length of the section in bytes, and 'STATUS' is a status character for the section. The status gets set to '+' for used areas and '?' for unused areas. (ddrescue's --domain-log option only cares if the status is '+' or not.) The areas listed are consecutive with no gaps or overlaps, and covers the whole file system on the device. If '--offset_domain=X' is specified, the value X is added to all the positions listed in the file. Here is an example of a domain log file produced by the modified program (the part indicated by '[...]' has been edited out for brevity): # Domain logfile created by partclone.ntfs v0.2.23 # Source: /dev/sda1 # Offset: 0x00000000 # current_pos current_status 0x992D57000 ? # pos size status 0x00000000 0x000CF000 + 0x000CF000 0x00002000 ? 0x000D1000 0x00002000 + [...] 0x99174C000 0x0002D000 ? 0x991779000 0x015DE000 + It would be great if this feature could be incorporated into the main partclone sources. (Note that I had a look at the git repository, but it seemed to be out-of-date and wouldn't compile, so I based the patch on the latest testing version instead.) Suggestions for changes or any questions about the patch are welcome! Best regards, Ian Abbott. -- -=( Ian Abbott @ MEV Ltd. E-mail: <ab...@me...> )=- -=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=- |
From: thomas <th...@nc...> - 2011-05-23 15:22:41
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, We are glad of your patch file. There is no problem to apply your patch and release in next version if it works fine. A question about partclone, why not just use partclone to backup your partition? You can try to use --dev-to-dev and --rescue to clone partition to another partition directly(or save to row file). If it possible, I want to know what different in ddrescue and partclone especially for block read error or for some situation. Thanks for your contribution to partclone. BR, Thomas. On 05/21/2011 12:25 AM, Ian Abbott wrote: > Hi folks, > > While using GNU ddrescue recently to copy a partition on a disk with > read errors, I realized it would be quicker if it only copied the in-use > areas of the partition. ddrescue has a '--domain-log=FILE' option which > can be used to restrict it to certain areas, so the problem is to create > such a domain log file to cover the areas used by the filesystem on the > partition. > > I modified partclone-0.2.23 to add a new mode '--domain' (-D) which > examines the source device and writes a domain log file to the target. > Please see the attached patch that implements this function. > > I also added an option '--offset_domain=X' to add a fixed offset (in > bytes) to the position values in the domain log file. This is useful if > you are using ddrescue to recover a whole disk and need to specify the > offset (in bytes) to the partition covered by the domain log file. > > Here is an example of how to use it: > > # produce a domain file for NTFS partition on /dev/sda1 > partclone.ntfs -s /dev/sda1 -D -o sda1.domain > # copy /dev/sda1 to /dev/sdb1 using ddrescue with domain log file > ddrescue --domain-log sda1.domain /dev/sda1 /dev/sdb1 rescue.log > > The domain log file contains some comment lines starting with '#', a > status line (which is required but ignored by ddrescue's --domain-log > option), and some lines describing the used and unused sections as follows: > > POSITION LENGTH STATUS > > where 'POSITION' is the offset to the section in bytes, 'LENGTH' is the > length of the section in bytes, and 'STATUS' is a status character for > the section. The status gets set to '+' for used areas and '?' for > unused areas. (ddrescue's --domain-log option only cares if the status > is '+' or not.) The areas listed are consecutive with no gaps or > overlaps, and covers the whole file system on the device. If > '--offset_domain=X' is specified, the value X is added to all the > positions listed in the file. > > Here is an example of a domain log file produced by the modified program > (the part indicated by '[...]' has been edited out for brevity): > > # Domain logfile created by partclone.ntfs v0.2.23 > # Source: /dev/sda1 > # Offset: 0x00000000 > # current_pos current_status > 0x992D57000 ? > # pos size status > 0x00000000 0x000CF000 + > 0x000CF000 0x00002000 ? > 0x000D1000 0x00002000 + > [...] > 0x99174C000 0x0002D000 ? > 0x991779000 0x015DE000 + > > It would be great if this feature could be incorporated into the main > partclone sources. > > (Note that I had a look at the git repository, but it seemed to be > out-of-date and wouldn't compile, so I based the patch on the latest > testing version instead.) > > Suggestions for changes or any questions about the patch are welcome! > > Best regards, > Ian Abbott. > > > > > ------------------------------------------------------------------------------ > What Every C/C++ and Fortran developer Should Know! > Read this article and learn how Intel has extended the reach of its > next-generation tools to help Windows* and Linux* C/C++ and Fortran > developers boost performance applications - including clusters. > http://p.sf.net/sfu/intel-dev2devmay > > > > _______________________________________________ > Partclone-user mailing list > Par...@li... > https://lists.sourceforge.net/lists/listinfo/partclone-user - -- Thomas, 蔡育欽 國家高速網路與計算中心 格網技術組 專案助理研究員 thomas at nchc org tw pub key 46379ACF fingerprint = 7BB2 2103 CADC 59F6 11D5 BCB3 5E97 22B4 4637 9ACF -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk3adu8ACgkQXpcitEY3ms/GgQCgqDIULpMbpPsncTg0DTcaJFzJ eg4AoJ7dU9h0X3YJZu7TE7C6U35m6D2x =3A2K -----END PGP SIGNATURE----- |
From: Ian A. <ab...@me...> - 2011-05-24 10:53:38
|
On 23/05/11 16:02, thomas wrote: > We are glad of your patch file. There is no problem to apply your patch > and release in next version if it works fine. > > A question about partclone, why not just use partclone to backup your > partition? You can try to use --dev-to-dev and --rescue to clone > partition to another partition directly(or save to row file). If it > possible, I want to know what different in ddrescue and partclone > especially for block read error or for some situation. ddrescue has more options for recovering data. For example, when it encounters bad sectors it skips ahead to try and copy the good areas of the disk as soon as possible, then goes back and tries to recover more data from the bad areas. There are also controls over the number of retries, disk access method (cached or direct). Also, it can use a log file (different to the --domain-log file) to record its progress, so you can restart the program and it knows which areas have already been recovered. It doesn't know anything about filesystems though! It's nice to be able to combine the strengths of different utilities that complement one another. > Thanks for your contribution to partclone. You're welcome! -- -=( Ian Abbott @ MEV Ltd. E-mail: <ab...@me...> )=- -=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=- |