Commit graph

662 commits

Author SHA1 Message Date
d1eefd05ab
Major update to refactor for object-centricity
* Dest/map paths are now set in two steps:
  * The filename prefix is set when creating the DevObj()
  * The full paths are set when creating the BlockPair()
* Merged dest safety checks into RecoveryState.add_block_pair()
  * Mostly check_dest_paths() and dest_safety_check()
* Moved dir RWX checks to is_writable_dir()
* Moved mount RW check to is_writable_filesystem()
* Started merging menu_clone() and menu_image() into menu_ddrescue()
2018-07-26 17:31:39 -06:00
6aeba34bdb
Include path in dir report 2018-07-25 23:57:50 -06:00
66c7563335
Set details for Dev/Dir/Image objects
* Colored report data is generated during obj instantiation
  * Code has been moved into its own function
  * Entire colored string is now stored for each Obj
  * (Should make show_selection, etc more mode/Obj agnostic)
* loopback_dev vs image_path is now better separated
  * losetup is called in ImageObj.set_details()
  * loopback -D is still called during program cleanup/wrapup
* get_device_size_in_bytes() has been renamed get_size_in_bytes()
2018-07-25 23:31:04 -06:00
180eb0f9ef
Added base, dev, dir, and image objects 2018-07-25 21:44:40 -06:00
98b05c93bf
Moved menu_ddrescue() to ddrescue-tui-menu file
* Let's parse the sys.argv earlier in the process
2018-07-24 00:54:58 -06:00
fa3b3b11b0
Added methods: load_map and self_check(s)
* load_map() is called on BlockPair() instantiation
  * This partially replaces resume_from_map()
* Also fixed improper method declarations lacking the self argument
2018-07-24 00:39:22 -06:00
f5ff65bfe0
Started rewriting ddrescue.py
Added two classes:
* BlockPair()
  * Track source/dest pair specific data
  * update_progress() method for its own data
* RecoveryState()
  * Track BlockPair objects and overall state
  * update_progress() method for overall data

Reasons:
* Code readability
* Better status updates, code currently split between:
  * get_recovery_scope_size()
  * resume_from_map()
  * update_progress()
* Functions that should probably be merged into other functions:
  * get_recovery_scope_size()
  * set_dest_image_paths()
  * check_dest_paths()
* Logic that needs to be cleaned up:
  * Calculating overall recovery size
  * Pass "Done"ness and status strings need separated
  * Pass "Done"ness at the device and overall levels
  * Updating output for side pane status display
2018-07-23 23:25:12 -06:00
2430ba5e00
Resume session via map file(s)
* Read map file(s) and set progress, status, and current pass
2018-07-23 00:43:22 -06:00
f5994d851b
Allow more characters in get_simple_string() 2018-07-22 21:56:52 -06:00
cd955fe1fc
Add overall recovery status to side-pane
* --test-mode disabled by default
* Fixed bug that prevented escaping auto_run via Ctrl-c
* Fixed no-trim / no-scrape flag handling
* Only proceed device(s) have been selected in menu_select_children
2018-07-22 21:56:39 -06:00
1f63f91144
PEP8 Cleanup 2018-07-22 16:27:34 -06:00
9e48c1d1a6
Read data from MAP files (Big update)
* Added read_map_file() which uses ddrescuelog to create dict of current state
* Added --test-mode= option to expert menu
* Add size (in bytes) to all devs
  * Allows to calculate real total percent recovered
* Detect 100% completion via ddrescuelog -D
* Moved mark_complete / mark_incomplete code to update_progress()
* Update progress every 30s during ddrescue passes
* Fixed auto_run logic
2018-07-22 02:03:04 -06:00
6b28444c36
Fix function order 2018-07-21 20:31:39 -06:00
d7dfb34b02
Resume function working for imaging cases 2018-07-20 18:06:59 -06:00
37734e65bf
Bugfix: Paths are now relative to the current dir
* They were relative to the script's dir before
2018-07-20 17:53:09 -06:00
281607f3e4
Adjusted confirm/show details order 2018-07-20 13:57:55 -06:00
93c9b206d9
Added ddrescue-tui aliases wkclone and wkimage 2018-07-20 13:56:49 -06:00
6582293370
Initial resume code -- Needs testing 2018-07-19 01:34:14 -06:00
5f4598814a
Clear screen before printing abort warning
* Otherwise the "Abort" string is in the middle of the ddrescue output
* Also added secondary return code to be treated as a user abort
2018-07-19 00:45:04 -06:00
016f87b76c
Don't hide source dev when selecting dest dev
* Disable the entry instead
* It's more clear what's being done
2018-07-19 00:43:41 -06:00
7597394d61
Build real ddrescue cmd for Cloning or Imaging
* --force is only used for cloning
2018-07-18 23:53:05 -06:00
d09664bb7d
Misc cleanup 2018-07-18 23:37:02 -06:00
f84413f1a9
Fix SMART not available warning 2018-07-18 23:36:15 -06:00
e640caee74
Add dest image/map path sections 2018-07-18 23:19:42 -06:00
646e1a3764
Show list of authorized fstypes with error 2018-07-18 22:17:32 -06:00
19dcc87950
Pause when showing usage 2018-07-18 22:09:47 -06:00
e5ce254e8b
Verify destination FS is mounted read-write 2018-07-18 22:02:17 -06:00
f2c557f77c
Added safety checks for the destination
* Dev size / avail space checks
* Permission checks
  * No mount option checks (yet?)
2018-07-18 20:54:51 -06:00
88c28a3f25
Added auto-continue code
* Enabled by default
* Based on static thresholds per pass.
  * Pass 1: 85%
  * Pass 2: 98%
* If using child devices, all must be above the threshold to continue
2018-07-18 18:26:03 -06:00
9d91a28d7a
Add children pass, status, and update sections
* Updating device / child device status/progress done in mark_*() functions
* Add current pass description to main menu
* Current pass (overall) only updated if all children have passed
* Fix Pass 4 crash
2018-07-17 23:22:08 -06:00
c705ba6afc
Add pass completion detection sections
* Retry option now sets recovery back to pass 1
2018-07-17 22:10:37 -06:00
a12a591279
Moved SMART sections to a separate script
* Refresh rate is now handled by 'watch --interval'
* Allows for much simpler ddrescue execution / tracking
* Removed all 'SMART Report' sections from functions/ddrescue.py
* functions/hw_diags.py has been further extended
  * Supports full device paths (only for displaying attributes ATM)
  * Adds a timestamp when only displaying attributes
2018-07-17 21:05:37 -06:00
358191539c
Added run_ddrescue() and update_smart_report()
* Working "wait" loop while ddrescue is running.
2018-07-17 19:19:38 -06:00
d1d3e1592e
Added get_process() 2018-07-17 18:11:23 -06:00
7d851d2222
Add settings menu 2018-07-17 16:59:45 -06:00
310a2eb63a
Initial Main Menu code
* Required refactoring pass status code
* Need to add settings menu next
2018-07-17 16:01:29 -06:00
fd8ac7cf1a
Add child device selection menu for Image mode
* Can select either whole device or child dev(s), not both
2018-07-17 14:16:38 -06:00
de8f3bbd2b
Use image file instead of loopback device
* Still setup loopback for image details but use image directly in ddrescue
* Adjusted outer/side panes to use image path instead of loopback dev
2018-07-17 13:21:12 -06:00
29266f1611
Added initial Imaging source child dev support 2018-07-17 01:11:43 -06:00
1e4a3b6c0e
Fix provided_path for Imaging and adjust top panes
* Moved select_path menu sections to menu_select_path()
2018-07-17 00:49:41 -06:00
007d2ef692
Added select_path() for Image mode
* Can select the current path, a local device's volume, or enter manually
* Optionally add a ticket folder to path before imaging
2018-07-17 00:15:28 -06:00
c37dab58af
Updated mount_all_volumes(), now mount_volumes()
* Now allows mounting R/W
* Can restrict to a specific device's volume(s)
* Added more data to the returned report
2018-07-17 00:06:43 -06:00
6eb486c770
Extend get_simple_string() to support underscores 2018-07-17 00:05:47 -06:00
ae7ba9cba4
Fixed typo in mount-raw-image 2018-07-16 22:25:13 -06:00
9a27afebf7
Moved selection details into its own function
* Will allow for better duplication in Image mode
2018-07-16 22:19:39 -06:00
6643cf5d25
Moved outer pane section to its own function
* Will allow better duplication with Image mode
2018-07-16 22:08:00 -06:00
552868c26e
Moved safety check into its own function
* Will allow better duplication with Image mode
2018-07-16 22:04:09 -06:00
69909fa34c
Added safety check 2018-07-16 21:02:53 -06:00
855884ec93
Added initial update_progress() sections
* TODO: expand to support Image mode
2018-07-16 21:01:10 -06:00
ae4f2ac680
Added outer panes 2018-07-16 19:40:29 -06:00