(BraceGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:INPUT) op:Equal rhs:{(0)} spids:[95])] spids: [95] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: {($ VSub_Number '$1')} right: {(Lit_Other '^') (-) (Lit_Other '?') (Lit_Other '[') (0-9) (Lit_Other ']') (Lit_Other '+') (Lit_Other '$') } ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:INPUT) op: Equal rhs: {($ VSub_Number '$1')} spids: [122] ) ] spids: [122] ) ] spids: [16777215 119] ) ] spids: [16777215 126] ) (C {(.)} {(/DietPi/dietpi/func/dietpi-globals)}) (C {(G_CHECK_ROOT_USER)}) (C {(G_CHECK_ROOTFS_RW)}) (C {(export)} {(Lit_VarLike 'G_PROGRAM_NAME=') (SQ <DietPi-Backup>)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHIP_BACKTITLE) op: Equal rhs: {(SQ <DietPi-Backup>)} spids: [170] ) ] spids: [170] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:WHIP_TITLE) op:Equal rhs:{(SQ )} spids:[176])] spids: [176] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:MENU_LASTITEM) op:Equal rhs:{(SQ )} spids:[181])] spids: [181] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:CHOICE) op:Equal rhs:{(0)} spids:[186])] spids: [186] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:OPTION) op:Equal rhs:{(0)} spids:[190])] spids: [190] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:TARGETMENUID) op:Equal rhs:{(0)} spids:[194])] spids: [194] ) (FuncDef name: Menu_Main body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:backup_last_completed_system) op: Equal rhs: {(SQ <'System backup not found. Create one.'>)} spids: [212] ) ] spids: [210] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-f)} { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_SYSTEM') ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:backup_last_completed_system) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(grep)} {(SQ <Completed>)} { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_SYSTEM') ) } ) (C {(tail)} {(-1)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [238 256] ) } spids: [237] ) ] spids: [237] ) ] spids: [16777215 233] ) ] spids: [16777215 260] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:backup_last_completed_userdata) op: Equal rhs: {(SQ <'User data backup not found (requires "Full" backup mode)'>)} spids: [266] ) ] spids: [264] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-f)} { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_USERDATA') ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:backup_last_completed_userdata) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(grep)} {(SQ <Completed>)} { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_USERDATA') ) } ) (C {(tail)} {(-1)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [292 310] ) } spids: [291] ) ] spids: [291] ) ] spids: [16777215 287] ) ] spids: [16777215 314] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:text_backup_mode) op: Equal rhs: {(SQ <'System only'>)} spids: [320] ) ] spids: [318] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:text_start_mode_desc) op: Equal rhs: {(SQ <system>)} spids: [328] ) ] spids: [326] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$BACKUP_MODE')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [336 345] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:text_backup_mode) op: Equal rhs: {(SQ <Full>)} spids: [352] ) ] spids: [352] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:text_start_mode_desc) op: Equal rhs: {(SQ <'system and user data'>)} spids: [358] ) ] spids: [358] ) ] spids: [16777215 348] ) ] spids: [16777215 365] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHIP_TITLE) op: Equal rhs: {(SQ <DietPi-Backup>)} spids: [369] ) ] spids: [369] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OPTION) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(whiptail)} {(--title)} {(DQ ($ VSub_Name '$WHIP_TITLE'))} {(--menu)} { (DQ ('Current backup and restore location:') (Lit_Other '\\') ('n - ') ($ VSub_Name '$FP_TARGET_BACKUP') (Lit_Other '\\') ('n - ') ($ VSub_Name '$backup_last_completed_system') (Lit_Other '\\') ('n - ') ($ VSub_Name '$backup_last_completed_userdata') ) } {(--cancel-button)} {(DQ (Exit))} {(--default-item)} {(DQ ($ VSub_Name '$MENU_LASTITEM'))} {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(16)} {(80)} {(5)} {(DQ (Help))} {(DQ ('What does DietPi-Backup do?'))} {(DQ (Location))} { (DQ ('Change where your backup will be saved and restored from.')) } {(DQ ('Backup mode'))} {(DQ (': ') ($ VSub_Name '$text_backup_mode'))} {(DQ (Backup))} {(DQ ('Create (or update) a backup of this system.'))} {(DQ (Restore))} {(DQ ('Restore this system from a previous backup.'))} ] redirects: [ (Redir op: <Redir_GreatAnd '3>&'> fd: 3 arg_word: {(1)} ) (Redir op: <Redir_GreatAnd '1>&'> fd: 1 arg_word: {(2)} ) (Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(3)} ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [376 483] ) } spids: [375] ) ] spids: [375] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHOICE) op: Equal rhs: {($ VSub_QMark '$?')} spids: [487] ) ] spids: [487] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$CHOICE')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [493 502] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MENU_LASTITEM) op: Equal rhs: {(DQ ($ VSub_Name '$OPTION'))} spids: [509] ) ] spids: [509] ) (Case to_match: {(DQ ($ VSub_Name '$OPTION'))} arms: [ (case_arm pat_list: [{(Location)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TARGETMENUID) op: Equal rhs: {(1)} spids: [531] ) ] spids: [531] ) ] spids: [526 527 536 16777215] ) (case_arm pat_list: [{(DQ ('Backup mode'))}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OPTION) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(whiptail)} {(--title)} {(DQ ($ VSub_Name '$WHIP_TITLE'))} {(--menu)} { (DQ ('Please select a backup mode:') (Lit_Other '\\') (n) (Lit_Other '\\') ('n - System only') (Lit_Other '\\') ( 'nOnly the system is backed up and restored, this does not include your DietPi user data (' ) ($ VSub_Name '$G_FP_DIETPI_USERDATA') (').') (Lit_Other '\\') (n) (Lit_Other '\\') ('n - Full:') (Lit_Other '\\') ('nSystem and user data (') ($ VSub_Name '$G_FP_DIETPI_USERDATA') (') is backed up and restored.') (Lit_Other '\\') (n) (Lit_Other '\\') ('nMore information on what DietPi user data is:') (Lit_Other '\\') ( 'nhttp://dietpi.com/phpbb/viewtopic.php?f=8&t=478#p2087' ) ) } {(--cancel-button)} {(DQ (Exit))} {(--default-item)} {(DQ ($ VSub_Name '$BACKUP_MODE'))} {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(20)} {(80)} {(2)} {(DQ (0))} {(DQ ('System only'))} {(DQ (1))} {(DQ ('Full (includes user data)'))} ] redirects: [ (Redir op: <Redir_GreatAnd '3>&'> fd: 3 arg_word: {(1)} ) (Redir op: <Redir_GreatAnd '1>&'> fd: 1 arg_word: {(2)} ) (Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(3)} ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [548 637] ) } spids: [547] ) ] spids: [547] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHOICE) op: Equal rhs: {($ VSub_QMark '$?')} spids: [640] ) ] spids: [640] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$CHOICE')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [646 655] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BACKUP_MODE) op: Equal rhs: {($ VSub_Name '$OPTION')} spids: [662] ) ] spids: [662] ) ] spids: [16777215 658] ) ] spids: [16777215 667] ) ] spids: [540 543 671 16777215] ) (case_arm pat_list: [{(Help)}] action: [ (C {(whiptail)} {(--title)} {(DQ ('DietPi-Backup Help'))} {(--msgbox)} { (DQ ( 'DietPi-Backup is a program that allows you to Backup and Restore your DietPi system.' ) (Lit_Other '\\') (n) (Lit_Other '\\') ( 'nIf you have broken your system, or want to reset your system to an earlier date, this can all be done with DietPi-Backup.' ) (Lit_Other '\\') (n) (Lit_Other '\\') ( 'nSimply choose a location where you want to save and restore your backups from, then, select Backup or Restore.' ) (Lit_Other '\\') (n) (Lit_Other '\\') ('nMore information:') (Lit_Other '\\') ('n - http://dietpi.com/phpbb/viewtopic.php?f=8&t=5&p=256#p255') ) } {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(20)} {(75)} ) ] spids: [675 676 720 16777215] ) (case_arm pat_list: [{(Backup)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHIP_TITLE) op: Equal rhs: {(SQ <' Start backup? '>)} spids: [729] ) ] spids: [729] ) (C {(whiptail)} {(--title)} {(DQ ($ VSub_Name '$WHIP_TITLE'))} {(--yesno)} { (DQ ('Your ') ($ VSub_Name '$text_start_mode_desc') (' will be backed up to:') (Lit_Other '\\') (n) ($ VSub_Name '$FP_TARGET_BACKUP') (Lit_Other '\\') (n) (Lit_Other '\\') ('nDo you wish to continue?') ) } {(--yes-button)} {(DQ (Ok))} {(--no-button)} {(DQ (Back))} {(--defaultno)} {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(11)} {(65)} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHOICE) op: Equal rhs: {($ VSub_QMark '$?')} spids: [783] ) ] spids: [783] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$CHOICE')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [789 798] ) terminator: <Op_Semi ';'> ) ] action: [(C {(Run_Backup)})] spids: [16777215 801] ) ] spids: [16777215 809] ) ] spids: [724 725 813 16777215] ) (case_arm pat_list: [{(Restore)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHIP_TITLE) op: Equal rhs: {(SQ <' Start restore? '>)} spids: [822] ) ] spids: [822] ) (C {(whiptail)} {(--title)} {(DQ ($ VSub_Name '$WHIP_TITLE'))} {(--yesno)} { (DQ ('Your ') ($ VSub_Name '$text_start_mode_desc') (' will be restored from:') (Lit_Other '\\') (n) ($ VSub_Name '$FP_TARGET_BACKUP') (Lit_Other '\\') (n) (Lit_Other '\\') ('nDo you wish to continue?') ) } {(--yes-button)} {(DQ (Ok))} {(--no-button)} {(DQ (Back))} {(--defaultno)} {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(11)} {(65)} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHOICE) op: Equal rhs: {($ VSub_QMark '$?')} spids: [876] ) ] spids: [876] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$CHOICE')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [882 891] ) terminator: <Op_Semi ';'> ) ] action: [(C {(Run_Restore)})] spids: [16777215 894] ) ] spids: [16777215 902] ) ] spids: [817 818 906 16777215] ) ] spids: [516 522 910] ) ] spids: [16777215 505] ) ] else_action: [(C {(Menu_Exit)})] spids: [914 922] ) ] spids: [206] ) spids: [203 206] ) (FuncDef name: Menu_Exit body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHIP_TITLE) op: Equal rhs: {(SQ <' Exit DietPi-Backup? '>)} spids: [937] ) ] spids: [937] ) (C {(whiptail)} {(--title)} {(DQ ($ VSub_Name '$WHIP_TITLE'))} {(--yesno)} {(DQ ($ VSub_Name '$WHIP_TITLE'))} {(--yes-button)} {(DQ (Ok))} {(--no-button)} {(DQ (Back))} {(--defaultno)} {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(10)} {(50)} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHOICE) op: Equal rhs: {($ VSub_QMark '$?')} spids: [982] ) ] spids: [982] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$CHOICE')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [993 1002] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TARGETMENUID) op: Equal rhs: {(-1)} spids: [1009] ) ] spids: [1009] ) ] spids: [16777215 1005] ) ] spids: [16777215 1014] ) ] spids: [933] ) spids: [930 933] ) (FuncDef name: Menu_Set_Directory body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:current_directory) op: Equal rhs: {(DQ ($ VSub_Name '$FP_TARGET_BACKUP'))} spids: [1035] ) ] spids: [1033] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:WHIP_TITLE) op: Equal rhs: {(SQ <'Select your backup and restore location'>)} spids: [1042] ) ] spids: [1042] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OPTION) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(whiptail)} {(--title)} {(DQ ($ VSub_Name '$WHIP_TITLE'))} {(--menu)} { (DQ ( 'Please select the location where your system backup will be saved, and restored from.' ) (Lit_Other '\\') (n) (Lit_Other '\\') ('nYour current location:') (Lit_Other '\\') (n) ($ VSub_Name '$FP_TARGET_BACKUP') ) } {(--cancel-button)} {(DQ (Back))} {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(15)} {(75)} {(3)} {(DQ (Search))} {(DQ ('Find previous backups in /mnt/*'))} {(DQ (List))} {(DQ ('Select from a list of available mounts/drives'))} {(DQ (Manual))} {(DQ ('Manually type a directory to use.'))} ] redirects: [ (Redir op: <Redir_GreatAnd '3>&'> fd: 3 arg_word: {(1)} ) (Redir op: <Redir_GreatAnd '1>&'> fd: 1 arg_word: {(2)} ) (Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(3)} ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [1049 1127] ) } spids: [1048] ) ] spids: [1048] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHOICE) op: Equal rhs: {($ VSub_QMark '$?')} spids: [1130] ) ] spids: [1130] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$CHOICE')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [1137 1146] ) terminator: <Op_Semi ';'> ) ] action: [ (Case to_match: {(DQ ($ VSub_Name '$OPTION'))} arms: [ (case_arm pat_list: [{(Search)}] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:fp_search_results) op: Equal rhs: {(DQ (/tmp/.dietpi-backup_search_results))} spids: [1170] ) ] spids: [1168] ) (C {(echo)} {(-e)} { (DQ (Lit_Other '\\') (n) (Lit_Other '\\') ('nSearching /mnt/* for previous backups, please wait... ') (Lit_Other '\\') ('n ') (Lit_Other '\\') (n) ) } ) (SimpleCommand words: [ {(find)} {(/mnt)} {(-type)} {(f)} {(-name)} {(DQ ($ VSub_Name '$BACKUP_STATS_FILENAME_SYSTEM'))} ] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$fp_search_results'))} ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Great left: (ArithWord w: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(cat)} { (DQ ($ VSub_Name '$fp_search_results' ) ) } ) (C {(wc)} {(-l)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [1222 1234] ) } ) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [1220 1241] ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(readarray)} {(search_results_list)}] redirects: [ (Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$fp_search_results'))} ) ] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:search_results_whiptail) op: Equal rhs: {(ArrayLiteralPart)} spids: [1265] ) ] spids: [1263] ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 0)}) ) cond: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:i) right: (ArithWord w: { (BracedVarSub token: <VSub_Name search_results_list> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1280 1286] ) } ) ) update: (UnaryAssign op_id: Node_PostDPlus child: (LhsName name:i) ) body: (DoGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:last_backup_date) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(grep)} {(SQ <Completed>)} { (BracedVarSub token: <VSub_Name search_results_list > bracket_op: (ArrayIndex expr: (ArithWord w: { ($ VSub_Name '$i') } ) ) spids: [1310 1315] ) } ) (C {(tail)} {(-1)}) (C {(sed)} {(SQ <'s/.*: //'>)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [1302 1331] ) } spids: [1301] ) ] spids: [1299] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:backup_directory) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(-e)} { (BracedVarSub token: <VSub_Name search_results_list > bracket_op: (ArrayIndex expr: (ArithWord w: { ($ VSub_Name '$i') } ) ) spids: [1346 1351] ) } ) (C {(sed)} {(SQ <'s/\\/'>) (DQ ($ VSub_Name '$BACKUP_STATS_FILENAME_SYSTEM' ) ) (SQ <//g>) } ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [1340 1367] ) } spids: [1339] ) ] spids: [1337] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:search_results_whiptail) op: PlusEqual rhs: { (ArrayLiteralPart words: [ {(DQ ($ VSub_Name '$backup_directory'))} { (DQ (': ') ($ VSub_Name '$last_backup_date') ) } ] ) } spids: [1373] ) ] spids: [1373] ) ] spids: [1295 1387] ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OPTION) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(whiptail)} {(--title)} {(DQ ('Backups found.'))} {(--menu)} { (DQ ( 'Please select a previous backup to use:' ) ) } {(--cancel-button)} {(DQ (Back))} {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(12)} {(70)} {(3)} { (DQ (BracedVarSub token: <VSub_Name search_results_whiptail > bracket_op: (WholeArray op_id:Lit_At) spids: [1426 1431] ) ) } ] redirects: [ (Redir op: <Redir_GreatAnd '3>&'> fd: 3 arg_word: {(1)} ) (Redir op: <Redir_GreatAnd '1>&'> fd: 1 arg_word: {(2)} ) (Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(3)} ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [1392 1442] ) } spids: [1391] ) ] spids: [1391] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHOICE) op: Equal rhs: {($ VSub_QMark '$?')} spids: [1445] ) ] spids: [1445] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$CHOICE')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [1451 1460] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FP_TARGET_BACKUP) op: Equal rhs: {(DQ ($ VSub_Name '$OPTION'))} spids: [1467] ) ] spids: [1467] ) ] spids: [16777215 1463] ) ] spids: [16777215 1474] ) (C {(unset)} {(search_results_list)}) (C {(unset)} {(search_results_whiptail)}) (SimpleCommand words: [{(rm)} {(DQ ($ VSub_Name '$fp_search_results'))}] redirects: [ (Redir op: <Redir_AndGreat '&>'> fd: 16777215 arg_word: {(/dev/null)} ) ] ) ] spids: [16777215 1244] ) ] else_action: [ (C {(whiptail)} {(--title)} {(DQ ('No results'))} {(--msgbox)} {(DQ ('No previous backups were found in /mnt/*'))} {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(10)} {(60)} ) ] spids: [1504 1534] ) ] spids: [1163 1164 1538 16777215] ) (case_arm pat_list: [{(Manual)}] action: [(C {(Input_User_Directory)})] spids: [1542 1543 1551 16777215] ) (case_arm pat_list: [{(List)}] action: [ (C {(/DietPi/dietpi/dietpi-drive_manager)} {(1)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FP_TARGET_BACKUP) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(cat)} {(/tmp/dietpi-drive_manager_selmnt)}) ] ) left_token: <Left_CommandSub '$('> spids: [1567 1571] ) ) } spids: [1565] ) ] spids: [1565] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$FP_TARGET_BACKUP'))} {(Lit_Other '=')} {(DQ (/))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FP_TARGET_BACKUP) op: Equal rhs: {(SQ </mnt>)} spids: [1596] ) ] spids: [1596] ) ] spids: [16777215 1592] ) ] spids: [16777215 1603] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FP_TARGET_BACKUP) op: PlusEqual rhs: {(SQ </dietpi-backup>)} spids: [1607] ) ] spids: [1607] ) ] spids: [1555 1556 1614 16777215] ) ] spids: [1153 1159 1618] ) ] spids: [16777215 1149] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TARGETMENUID) op: Equal rhs: {(0)} spids: [1630] ) ] spids: [1630] ) ] spids: [1622 1635] ) (C {(Check_Supported_Directory_Location)}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$TARGET_DIRECTORY_SUPPORTED')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [1648 1657] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FP_TARGET_BACKUP) op: Equal rhs: {(DQ ($ VSub_Name '$current_directory'))} spids: [1664] ) ] spids: [1664] ) ] spids: [16777215 1660] ) ] spids: [16777215 1671] ) ] spids: [1029] ) spids: [1026 1029] ) (FuncDef name: Input_User_Directory body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OPTION) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(whiptail)} {(--inputbox)} { (DQ ('Please enter the filepath to your directory. ') (Lit_Other '\\') ('neg: /mnt/dietpi-backup') (Lit_Other '\\') ('n - Must be located inside /mnt/* ') (Lit_Other '\\') ('n - Must be symlink compatible filesystem (ext2/3/4)') ) } {(10)} {(70)} {(DQ ($ VSub_Name '$FP_TARGET_BACKUP'))} {(--title)} {(DQ ('Manual backup directory'))} {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} ] redirects: [ (Redir op: <Redir_GreatAnd '3>&'> fd: 3 arg_word: {(1)} ) (Redir op: <Redir_GreatAnd '1>&'> fd: 1 arg_word: {(2)} ) (Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(3)} ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [1687 1730] ) } spids: [1686] ) ] spids: [1686] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CHOICE) op: Equal rhs: {($ VSub_QMark '$?')} spids: [1733] ) ] spids: [1733] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$CHOICE')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [1739 1748] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FP_TARGET_BACKUP) op: Equal rhs: {(DQ ($ VSub_Name '$OPTION'))} spids: [1755] ) ] spids: [1755] ) ] spids: [16777215 1751] ) ] spids: [16777215 1762] ) ] spids: [1682] ) spids: [1679 1682] ) (FuncDef name: Error_Filesystem_Not_Supported body: (BraceGroup children: [ (C {(G_DIETPI-NOTIFY)} {(1)} {(DQ ('Filesystem not supported in ') ($ VSub_Name '$FP_TARGET_BACKUP'))} ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithWord w:{($ VSub_Name '$G_USER_INPUTS')}) spids: [1802 1807] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(whiptail)} {(--title)} {(DQ (Error))} {(--msgbox)} { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (' Has a filesystem of: ') ($ VSub_Name '$TARGET_FILESYSTEM_TYPE') (', and is not supported.') (Lit_Other '\\') (n) (Lit_Other '\\') ('nThe filesystem must be EXT2/3/4 for symlink compatibility.') ) } {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(11)} {(70)} ) ] spids: [16777215 1810] ) ] spids: [16777215 1847] ) ] spids: [1785] ) spids: [1782 1785] ) (FuncDef name: Error_Not_Mnt_Directory body: (BraceGroup children: [ (C {(G_DIETPI-NOTIFY)} {(1)} { (DQ ('Target directory is not inside /mnt (') ($ VSub_Name '$FP_TARGET_BACKUP') (')')) } ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithWord w:{($ VSub_Name '$G_USER_INPUTS')}) spids: [1876 1881] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(whiptail)} {(--title)} {(DQ ('Directory not supported'))} {(--msgbox)} { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (Lit_Other '\\') (n) (Lit_Other '\\') ('nYour current location is not supported.') (Lit_Other '\\') ('nThe location must be inside the /mnt/* directory.') (Lit_Other '\\') ('n - eg: /mnt/dietpi-backup') ) } {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(11)} {(70)} ) ] spids: [16777215 1884] ) ] spids: [16777215 1922] ) ] spids: [1858] ) spids: [1855 1858] ) (FuncDef name: Error_DietpiUserdata_Directory body: (BraceGroup children: [ (C {(G_DIETPI-NOTIFY)} {(1)} { (DQ ('Target directory can not be contained within DietPi user data location (') ($ VSub_Name '$FP_TARGET_BACKUP') (')') ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithWord w:{($ VSub_Name '$G_USER_INPUTS')}) spids: [1951 1956] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(whiptail)} {(--title)} {(DQ ('Directory not supported'))} {(--msgbox)} { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (Lit_Other '\\') (n) (Lit_Other '\\') ('nYour current location is not supported.') (Lit_Other '\\') ('nTarget directory can not be contained within DietPi user data location (') ($ VSub_Name '$G_FP_DIETPI_USERDATA') (')') ) } {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(13)} {(70)} ) ] spids: [16777215 1959] ) ] spids: [16777215 1997] ) ] spids: [1933] ) spids: [1930 1933] ) (FuncDef name: Error_Rsync_Already_Running body: (BraceGroup children: [ (C {(G_DIETPI-NOTIFY)} {(1)} {(DQ ('Another Rsync process is already running.'))}) (SimpleCommand words: [ {(echo)} {(-e)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' failed: ') (CommandSubPart command_list: (CommandList children: [(C {(date)} {(Lit_Other '+') (DQ ('%d-%m-%Y_%H%M'))})] ) left_token: <Left_CommandSub '$('> spids: [2029 2036] ) ('. Rsync is already running.') ) } ] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_SYSTEM') ) } ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithWord w:{($ VSub_Name '$G_USER_INPUTS')}) spids: [2056 2061] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(whiptail)} {(--title)} {(DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' Error'))} {(--msgbox)} {(DQ ('A ') ($ VSub_Name '$RSYNC_MODE_TEXT') (' could not be started as rsync is already running.'))} {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(13)} {(60)} ) ] spids: [16777215 2064] ) ] spids: [16777215 2097] ) ] spids: [2008] ) spids: [2005 2008] ) (FuncDef name: Error_Rsync_Failed body: (BraceGroup children: [ (C {(G_DIETPI-NOTIFY)} {(1)} {(DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' failed.'))}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithWord w:{($ VSub_Name '$G_USER_INPUTS')}) spids: [2129 2134] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(whiptail)} {(--title)} {(DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' failed'))} {(--msgbox)} { (DQ ('Your ') ($ VSub_Name '$RSYNC_MODE_TEXT') (' has failed. Please see the Log file for more information:') (Lit_Other '\\') (n) (Lit_Other '\\') (n) ($ VSub_Name '$LOGFILE') ) } {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(12)} {(60)} ) ] spids: [16777215 2137] ) ] spids: [16777215 2175] ) ] spids: [2108] ) spids: [2105 2108] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RSYNC_MODE_TEXT) op:Equal rhs:{(0)} spids:[2195])] spids: [2195] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:BACKUP_MODE) op:Equal rhs:{(1)} spids:[2199])] spids: [2199] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:LOGFILE) op: Equal rhs: {(SQ </var/log/dietpi-backup.log>)} spids: [2211] ) ] spids: [2211] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FP_SOURCE_SYSTEM) op:Equal rhs:{(SQ </>)} spids:[2222])] spids: [2222] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FP_TARGET_BACKUP) op: Equal rhs: {(SQ </mnt/dietpi-backup>)} spids: [2228] ) ] spids: [2228] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:G_FP_DIETPI_USERDATA_ACTUAL) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(readlink)} {(-f)} {(/mnt/dietpi_userdata)})] ) left_token: <Left_CommandSub '$('> spids: [2236 2242] ) ) } spids: [2234] ) ] spids: [2234] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BACKUP_STATS_FILENAME_SYSTEM) op: Equal rhs: {(SQ <.dietpi-backup_system_stats>)} spids: [2251] ) ] spids: [2251] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BACKUP_STATS_FILENAME_USERDATA) op: Equal rhs: {(SQ <.dietpi-backup_userdata_stats>)} spids: [2257] ) ] spids: [2257] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FP_FILTER_INCLUDE_EXCLUDE_SYSTEM_BACKUP) op: Equal rhs: {(SQ </tmp/.dietpi-backup_filter_inc_exc>)} spids: [2268] ) ] spids: [2268] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FP_EXCLUDE_USER) op: Equal rhs: {(SQ </DietPi/dietpi/.dietpi-backup_exclude>)} spids: [2274] ) ] spids: [2274] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FP_INCLUDE_USER) op: Equal rhs: {(SQ </DietPi/dietpi/.dietpi-backup_include>)} spids: [2280] ) ] spids: [2280] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:TARGET_FILESYSTEM_TYPE) op:Equal rhs:{(0)} spids:[2291])] spids: [2291] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TARGET_DIRECTORY_SUPPORTED) op: Equal rhs: {(0)} spids: [2295] ) ] spids: [2295] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:aSUPPORTED_FILESYSTEMS) op: Equal rhs: { (ArrayLiteralPart words: [{(SQ <ext4>)} {(SQ <ext3>)} {(SQ <ext2>)} {(SQ <nfs>)} {(SQ <nfs4>)} {(SQ <btrfs>)}] ) } spids: [2299] ) ] spids: [2299] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RSYNC_RUN_OPTIONS_SYSTEM_BACKUP) op: Equal rhs: { (DQ ('-alHpvP --delete --log-file=') ($ VSub_Name '$LOGFILE') (' --include-from=') ($ VSub_Name '$FP_FILTER_INCLUDE_EXCLUDE_SYSTEM_BACKUP') ) } spids: [2341] ) ] spids: [2341] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RSYNC_RUN_OPTIONS_USERDATA_BACKUP) op: Equal rhs: {(DQ ('-alHpvP --delete --log-file=') ($ VSub_Name '$LOGFILE'))} spids: [2350] ) ] spids: [2350] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:BACKUP_RESTORE_FAILED) op:Equal rhs:{(0)} spids:[2362])] spids: [2362] ) (FuncDef name: Print_Date body: (BraceGroup children: [ (C {(echo)} {(-e)} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(date)} {(Lit_Other '+') (DQ ('%d-%m-%Y %H:%M'))})] ) left_token: <Left_CommandSub '$('> spids: [2383 2390] ) ) } ) ] spids: [2374] ) spids: [2371 2374] ) (FuncDef name: Create_Filter_Include_Exclude body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(_EOF_)} here_end_span_id: 2426 stdin_parts: [('#INCLUDE\n') ('#Global - Folders\n') ('#+ /example/\n')] ) (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$FP_FILTER_INCLUDE_EXCLUDE_SYSTEM_BACKUP'))} ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Name '$FP_INCLUDE_USER'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(echo)} {(-e)} {(DQ (Lit_Other '\\') ('n#User include file'))}] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$FP_FILTER_INCLUDE_EXCLUDE_SYSTEM_BACKUP'))} ) ] ) (WhileUntil keyword: <KW_While while> cond: [(C {(read)} {(-r)} {(line)})] body: (DoGroup children: [ (SimpleCommand words: [{(echo)} {(-e)} {(DQ ('+ ') ($ VSub_Name '$line'))}] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$FP_FILTER_INCLUDE_EXCLUDE_SYSTEM_BACKUP'))} ) ] ) ] spids: [2476 2497] ) redirects: [ (Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$FP_INCLUDE_USER'))} ) ] ) ] spids: [16777215 2446] ) ] spids: [16777215 2507] ) (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(_EOF_)} here_end_span_id: 2569 stdin_parts: [ ('\n') ('#EXCLUDE\n') ('#Global - Folders\n') ('- ') ($ VSub_Name '$FP_TARGET_BACKUP') ('/\n') ('- /mnt/\n') ('- /media/\n') ('- /dev/\n') ('- /proc/\n') ('- /sys/\n') ('- /tmp/\n') ('- /run/\n') ('\n') ('#Apt package cache (.deb)\n') ('- /var/cache/apt/archives/\n') ('\n') ('#Manpages / Docs\n') ('- /usr/share/man/\n') ('- /usr/share/doc/\n') ('\n') ('#Global - Files\n') ('- ') ($ VSub_Name '$LOGFILE') ('\n') ('- ') ($ VSub_Name '$FP_DIETPIBACKUP_SETTINGS') ('\n') ('- ') ($ VSub_Name '$BACKUP_STATS_FILENAME_SYSTEM') ('\n') ('- ') ($ VSub_Name '$BACKUP_STATS_FILENAME_USERDATA') ('\n') ('- /var/swap\n') ('- fake-hwclock.data\n') ('- *.tmp\n') ('\n') ('#MS Windows specific\n') ('- Thumbs.db\n') ('- desktop.ini\n') ] ) (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$FP_FILTER_INCLUDE_EXCLUDE_SYSTEM_BACKUP'))} ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Name '$FP_EXCLUDE_USER'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(echo)} {(-e)} {(DQ (Lit_Other '\\') ('n#User exclude file'))}] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$FP_FILTER_INCLUDE_EXCLUDE_SYSTEM_BACKUP'))} ) ] ) (WhileUntil keyword: <KW_While while> cond: [(C {(read)} {(-r)} {(line)})] body: (DoGroup children: [ (SimpleCommand words: [{(echo)} {(-e)} {(DQ ('- ') ($ VSub_Name '$line'))}] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$FP_FILTER_INCLUDE_EXCLUDE_SYSTEM_BACKUP'))} ) ] ) ] spids: [2618 2639] ) redirects: [ (Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$FP_EXCLUDE_USER'))} ) ] ) ] spids: [16777215 2589] ) ] spids: [16777215 2649] ) (C {(cp)} {(DQ ($ VSub_Name '$FP_FILTER_INCLUDE_EXCLUDE_SYSTEM_BACKUP'))} {(/tmp/.dietpi-backup_inc_exc_list)} ) ] spids: [2402] ) spids: [2399 2402] ) (FuncDef name: Services_Stop body: (BraceGroup children:[(C {(/DietPi/dietpi/dietpi-services)} {(stop)})] spids:[2674]) spids: [2671 2674] ) (FuncDef name: Services_Start body: (BraceGroup children:[(C {(/DietPi/dietpi/dietpi-services)} {(start)})] spids:[2689]) spids: [2686 2689] ) (FuncDef name: Run_Backup body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RSYNC_MODE_TEXT) op: Equal rhs: {(DQ (Backup))} spids: [2708] ) ] spids: [2708] ) (C {(G_DIETPI-NOTIFY)} {(3)} {(DietPi-Backup)} {(DQ ($ VSub_Name '$RSYNC_MODE_TEXT'))}) (C {(Check_Supported_Directory_Location)}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$TARGET_DIRECTORY_SUPPORTED')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [2741 2750] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$FP_TARGET_BACKUP'))}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-d)} {(DQ ($ VSub_Name '$FP_TARGET_BACKUP'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithWord w:{($ VSub_Name '$G_USER_INPUTS')}) spids: [2796 2801] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(whiptail)} {(--title)} {(DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' failed.'))} {(--msgbox)} {(DQ ('Unable to create ') ($ VSub_Name '$FP_TARGET_BACKUP'))} {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(10)} {(60)} ) ] spids: [16777215 2804] ) ] spids: [16777215 2836] ) ] spids: [16777215 2790] ) (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(ps)} {(aux)}) (C {(grep)} {(-ci)} {(-m1)} {(DQ ('[r]sync'))}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [2848 2864] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [2846 2871] ) terminator: <Op_Semi ';'> ) ] action: [(C {(Error_Rsync_Already_Running)})] spids: [2844 2874] ) ] else_action: [ (SimpleCommand words: [ {(echo)} {(-e)} { (DQ ('DietPi-Backup Log File. ') (CommandSubPart command_list: (CommandList children: [(C {(date)} {(Lit_Other '+') (DQ ('%d-%m-%Y_%H%M'))})] ) left_token: <Left_CommandSub '$('> spids: [2897 2904] ) (Lit_Other '\\') (n) (Lit_Other '\\') (n) ) } ] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$LOGFILE'))} ) ] ) (C {(Create_Filter_Include_Exclude)}) (C {(Services_Stop)}) (C {(G_DIETPI-NOTIFY)} {(2)} {(DQ ('Backing up to: ') ($ VSub_Name '$FP_TARGET_BACKUP'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BACKUP_RESTORE_FAILED) op: Equal rhs: {(0)} spids: [2942] ) ] spids: [2942] ) (WhileUntil keyword: <KW_While while> cond: [(C {(true)})] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RSYNC_MODE_TEXT) op: Equal rhs: {(SQ <'Backup (system)'>)} spids: [2960] ) ] spids: [2960] ) (C {(rsync)} {($ VSub_Name '$RSYNC_RUN_OPTIONS_SYSTEM_BACKUP')} {(DQ ($ VSub_Name '$FP_SOURCE_SYSTEM'))} {(DQ ($ VSub_Name '$FP_TARGET_BACKUP')) (/dietpi-backup_system/)} ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_QMark '$?')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [2983 2992] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(G_DIETPI-NOTIFY)} {(0)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' Completed.') (Lit_Other '\\') (n) ) } ) (SimpleCommand words: [ {(echo)} {(-e)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' Completed : ') (CommandSubPart command_list: (CommandList children: [(C {(Print_Date)})] ) left_token: <Left_CommandSub '$('> spids: [3019 3021] ) ) } ] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_SYSTEM') ) } ) ] ) ] spids: [16777215 2995] ) ] else_action: [ (C {(G_DIETPI-NOTIFY)} {(1)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' FAILED.') (Lit_Other '\\') (n) ) } ) (SimpleCommand words: [ {(echo)} {(-e)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' FAILED : ') (CommandSubPart command_list: (CommandList children: [(C {(Print_Date)})] ) left_token: <Left_CommandSub '$('> spids: [3057 3059] ) ) } ] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_SYSTEM') ) } ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BACKUP_RESTORE_FAILED) op: Equal rhs: {(1)} spids: [3071] ) ] spids: [3071] ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [3034 3079] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RSYNC_MODE_TEXT) op: Equal rhs: {(SQ <'Backup (user data)'>)} spids: [3087] ) ] spids: [3087] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$BACKUP_MODE')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [3096 3105] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(rsync)} {($ VSub_Name '$RSYNC_RUN_OPTIONS_USERDATA_BACKUP')} {(DQ ($ VSub_Name '$G_FP_DIETPI_USERDATA_ACTUAL')) (/)} {(DQ ($ VSub_Name '$FP_TARGET_BACKUP')) (/dietpi-backup_userdata/) } ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_QMark '$?')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [3129 3138] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(G_DIETPI-NOTIFY)} {(0)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' Completed.') (Lit_Other '\\') (n) ) } ) (SimpleCommand words: [ {(echo)} {(-e)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' Completed : ') (CommandSubPart command_list: (CommandList children: [(C {(Print_Date)})] ) left_token: <Left_CommandSub '$('> spids: [3165 3167] ) ) } ] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_USERDATA' ) ) } ) ] ) ] spids: [16777215 3141] ) ] else_action: [ (C {(G_DIETPI-NOTIFY)} {(1)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' FAILED.') (Lit_Other '\\') (n) ) } ) (SimpleCommand words: [ {(echo)} {(-e)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' FAILED : ') (CommandSubPart command_list: (CommandList children: [(C {(Print_Date)})] ) left_token: <Left_CommandSub '$('> spids: [3203 3205] ) ) } ] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_USERDATA' ) ) } ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BACKUP_RESTORE_FAILED) op: Equal rhs: {(1)} spids: [3217] ) ] spids: [3217] ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [3180 3225] ) ] spids: [16777215 3108] ) ] spids: [16777215 3229] ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [2952 3241] ) ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithWord w:{($ VSub_Name '$BACKUP_RESTORE_FAILED')}) spids: [3247 3252] ) terminator: <Op_Semi ';'> ) ] action: [(C {(Error_Rsync_Failed)})] spids: [16777215 3255] ) ] else_action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithWord w:{($ VSub_Name '$G_USER_INPUTS')}) spids: [3269 3274] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RSYNC_MODE_TEXT) op: Equal rhs: {(SQ <Backup>)} spids: [3281] ) ] spids: [3281] ) (C {(whiptail)} {(--title)} {(DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' completed'))} {(--msgbox)} { (DQ ('Your ') ($ VSub_Name '$RSYNC_MODE_TEXT') (' was saved to:') (Lit_Other '\\') (n) ($ VSub_Name '$FP_TARGET_BACKUP') (Lit_Other '\\') (n) (Lit_Other '\\') ('nLog file: ') ($ VSub_Name '$LOGFILE') ) } {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(11)} {(60)} ) ] spids: [16777215 3277] ) ] spids: [16777215 3324] ) ] spids: [3263 3328] ) (C {(Services_Start)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TARGETMENUID) op: Equal rhs: {(0)} spids: [3340] ) ] spids: [3340] ) ] spids: [2882 3345] ) ] spids: [16777215 2753] ) ] spids: [16777215 3348] ) ] spids: [2704] ) spids: [2701 2704] ) (FuncDef name: Run_Restore body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RSYNC_MODE_TEXT) op: Equal rhs: {(DQ (Restore))} spids: [3363] ) ] spids: [3363] ) (C {(G_DIETPI-NOTIFY)} {(3)} {(DietPi-Backup)} {(DQ ($ VSub_Name '$RSYNC_MODE_TEXT'))}) (C {(Check_Supported_Directory_Location)}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$TARGET_DIRECTORY_SUPPORTED')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [3396 3405] ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_SYSTEM') ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(G_DIETPI-NOTIFY)} {(2)} {(DQ ('No Backup was found in ') ($ VSub_Name '$FP_TARGET_BACKUP'))} ) (C {(G_DIETPI-NOTIFY)} {(1)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' Failed.') (Lit_Other '\\') (n)) } ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithWord w:{($ VSub_Name '$G_USER_INPUTS')}) spids: [3461 3466] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(whiptail)} {(--title)} {(DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' failed'))} {(--msgbox)} { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_SYSTEM') (' does not exist') (Lit_Other '\\') (n) (Lit_Other '\\') ('nHave you created a backup?') ) } {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(11)} {(70)} ) ] spids: [16777215 3469] ) ] spids: [16777215 3507] ) ] spids: [16777215 3433] ) (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(ps)} {(aux)}) (C {(grep)} {(-ci)} {(-m1)} {(DQ ('[r]sync'))}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [3519 3535] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [3517 3542] ) terminator: <Op_Semi ';'> ) ] action: [(C {(Error_Rsync_Already_Running)})] spids: [3515 3545] ) ] else_action: [ (C {(Create_Filter_Include_Exclude)}) (C {(Services_Stop)}) (C {(G_DIETPI-NOTIFY)} {(2)} {(DQ ('Restoring from: ') ($ VSub_Name '$FP_TARGET_BACKUP'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BACKUP_RESTORE_FAILED) op: Equal rhs: {(0)} spids: [3584] ) ] spids: [3584] ) (WhileUntil keyword: <KW_While while> cond: [(C {(true)})] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RSYNC_MODE_TEXT) op: Equal rhs: {(SQ <'Restore (system)'>)} spids: [3602] ) ] spids: [3602] ) (C {(rsync)} {($ VSub_Name '$RSYNC_RUN_OPTIONS_SYSTEM_BACKUP')} {(DQ ($ VSub_Name '$FP_TARGET_BACKUP')) (/dietpi-backup_system/)} {(DQ ($ VSub_Name '$FP_SOURCE_SYSTEM'))} ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_QMark '$?')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [3625 3634] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(G_DIETPI-NOTIFY)} {(0)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' Completed.') (Lit_Other '\\') (n) ) } ) (SimpleCommand words: [ {(echo)} {(-e)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' Completed : ') (CommandSubPart command_list: (CommandList children: [(C {(Print_Date)})] ) left_token: <Left_CommandSub '$('> spids: [3660 3662] ) ) } ] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_SYSTEM') ) } ) ] ) ] spids: [16777215 3637] ) ] else_action: [ (C {(G_DIETPI-NOTIFY)} {(1)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' FAILED.') (Lit_Other '\\') (n) ) } ) (SimpleCommand words: [ {(echo)} {(-e)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' FAILED : ') (CommandSubPart command_list: (CommandList children: [(C {(Print_Date)})] ) left_token: <Left_CommandSub '$('> spids: [3698 3700] ) ) } ] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_SYSTEM') ) } ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BACKUP_RESTORE_FAILED) op: Equal rhs: {(1)} spids: [3712] ) ] spids: [3712] ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [3675 3720] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RSYNC_MODE_TEXT) op: Equal rhs: {(SQ <'Restore (user data)'>)} spids: [3728] ) ] spids: [3728] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$BACKUP_MODE')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [3737 3746] ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-f)} { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_USERDATA' ) ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(rsync)} { ($ VSub_Name '$RSYNC_RUN_OPTIONS_USERDATA_BACKUP') } {(DQ ($ VSub_Name '$FP_TARGET_BACKUP')) (/dietpi-backup_userdata/)} {(DQ ($ VSub_Name '$G_FP_DIETPI_USERDATA_ACTUAL')) (/) } ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w: {($ VSub_QMark '$?')} ) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [3793 3802] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(G_DIETPI-NOTIFY)} {(0)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' Completed.') (Lit_Other '\\') (n) ) } ) (SimpleCommand words: [ {(echo)} {(-e)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' Completed : ') (CommandSubPart command_list: (CommandList children: [(C {(Print_Date)})] ) left_token: <Left_CommandSub '$('> spids: [3828 3830] ) ) } ] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_USERDATA') ) } ) ] ) ] spids: [16777215 3805] ) ] else_action: [ (C {(G_DIETPI-NOTIFY)} {(1)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' FAILED.') (Lit_Other '\\') (n) ) } ) (SimpleCommand words: [ {(echo)} {(-e)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' FAILED : ') (CommandSubPart command_list: (CommandList children: [(C {(Print_Date)})] ) left_token: <Left_CommandSub '$('> spids: [3866 3868] ) ) } ] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: { (DQ ($ VSub_Name '$FP_TARGET_BACKUP') (/) ($ VSub_Name '$BACKUP_STATS_FILENAME_USERDATA') ) } ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BACKUP_RESTORE_FAILED) op: Equal rhs: {(1)} spids: [3880] ) ] spids: [3880] ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [3843 3888] ) ] spids: [16777215 3772] ) ] else_action: [ (C {(G_DIETPI-NOTIFY)} {(2)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (': No backup exists, skipping...') (Lit_Other '\\') (n) ) } ) ] spids: [3892 3909] ) ] spids: [16777215 3749] ) ] spids: [16777215 3913] ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [3594 3925] ) ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithWord w:{($ VSub_Name '$BACKUP_RESTORE_FAILED')}) spids: [3931 3936] ) terminator: <Op_Semi ';'> ) ] action: [(C {(Error_Rsync_Failed)})] spids: [16777215 3939] ) ] else_action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithWord w:{($ VSub_Name '$G_USER_INPUTS')}) spids: [3953 3958] ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RSYNC_MODE_TEXT) op: Equal rhs: {(SQ <Restore>)} spids: [3965] ) ] spids: [3965] ) (C {(whiptail)} {(--title)} {(DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' completed'))} {(--msgbox)} { (DQ ($ VSub_Name '$RSYNC_MODE_TEXT') (' completed from:') (Lit_Other '\\') (n) ($ VSub_Name '$FP_TARGET_BACKUP') (Lit_Other '\\') (n) (Lit_Other '\\') ('nLog file: ') ($ VSub_Name '$LOGFILE') (Lit_Other '\\') (n) (Lit_Other '\\') ('nA Reboot is required.') ) } {(--backtitle)} {(DQ ($ VSub_Name '$WHIP_BACKTITLE'))} {(13)} {(60)} ) ] spids: [16777215 3961] ) ] spids: [16777215 4011] ) ] spids: [3947 4015] ) (C {(Services_Start)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TARGETMENUID) op: Equal rhs: {(0)} spids: [4027] ) ] spids: [4027] ) ] spids: [3557 4032] ) ] spids: [16777215 3408] ) ] spids: [16777215 4036] ) ] spids: [3359] ) spids: [3356 3359] ) (FuncDef name: Check_Install_PreReqs body: (BraceGroup children:[(C {(G_AG_CHECK_INSTALL_PREREQ)} {(rsync)})] spids:[4047]) spids: [4044 4047] ) (FuncDef name: Check_Supported_Directory_Location body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TARGET_DIRECTORY_SUPPORTED) op: Equal rhs: {(0)} spids: [4068] ) ] spids: [4068] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DPipe] children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$FP_TARGET_BACKUP'))} right: {(DQ ($ VSub_Name '$G_FP_DIETPI_USERDATA')) (Lit_Other '*')} ) ) (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$FP_TARGET_BACKUP'))} right: {(DQ ($ VSub_Name '$G_FP_DIETPI_USERDATA_ACTUAL')) (Lit_Other '*') } ) ) ] ) terminator: <Op_Semi ';'> ) ] action: [(C {(Error_DietpiUserdata_Directory)})] spids: [16777215 4113] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$FP_TARGET_BACKUP'))} right: {(DQ (/mnt/)) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:directory_generated) op: Equal rhs: {(0)} spids: [4153] ) ] spids: [4151] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-d)} {(DQ ($ VSub_Name '$FP_TARGET_BACKUP'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$FP_TARGET_BACKUP'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:directory_generated) op: Equal rhs: {(1)} spids: [4185] ) ] spids: [4185] ) ] spids: [16777215 4172] ) ] spids: [16777215 4190] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TARGET_FILESYSTEM_TYPE) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(df)} {(-T)} {($ VSub_Name '$FP_TARGET_BACKUP')}) (C {(sed)} {(-n)} {(SQ <2p>)}) (C {(awk)} {(SQ <'{print $2}'>)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [4196 4221] ) ) } spids: [4194] ) ] spids: [4194] ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 0)}) ) cond: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:i) right: (ArithWord w: { (BracedVarSub token: <VSub_Name aSUPPORTED_FILESYSTEMS> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [4235 4241] ) } ) ) update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i)) body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$TARGET_FILESYSTEM_TYPE'))} {(Lit_Other '=')} { (DQ (BracedVarSub token: <VSub_Name aSUPPORTED_FILESYSTEMS> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$i')}) ) spids: [4265 4270] ) ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TARGET_DIRECTORY_SUPPORTED) op: Equal rhs: {(1)} spids: [4280] ) ] spids: [4280] ) (ControlFlow token: <ControlFlow_Break break> ) ] spids: [16777215 4276] ) ] spids: [16777215 4288] ) ] spids: [4250 4292] ) ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$directory_generated')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [4302 4311] ) terminator: <Op_Semi ';'> ) ] action: [(C {(rm)} {(-R)} {(DQ ($ VSub_Name '$FP_TARGET_BACKUP'))})] spids: [16777215 4314] ) ] spids: [16777215 4328] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$TARGET_DIRECTORY_SUPPORTED')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [4338 4347] ) terminator: <Op_Semi ';'> ) ] action: [(C {(Error_Filesystem_Not_Supported)})] spids: [16777215 4350] ) ] spids: [16777215 4358] ) ] spids: [4125 4143] ) ] else_action: [(C {(Error_Not_Mnt_Directory)})] spids: [4366 4374] ) ] spids: [4064] ) spids: [4061 4064] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FP_DIETPIBACKUP_SETTINGS) op: Equal rhs: {(DQ (/DietPi/dietpi/.dietpi-backup_settings))} spids: [4398] ) ] spids: [4398] ) (FuncDef name: Write_Settings_File body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(_EOF_)} here_end_span_id: 4431 stdin_parts: [ ('FP_TARGET_BACKUP=') ($ VSub_Name '$FP_TARGET_BACKUP') ('\n') ('BACKUP_MODE=') ($ VSub_Name '$BACKUP_MODE') ('\n') ] ) (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$FP_DIETPIBACKUP_SETTINGS'))} ) ] ) ] spids: [4408] ) spids: [4405 4408] ) (FuncDef name: Read_Settings_File body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Name '$FP_DIETPIBACKUP_SETTINGS'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(.)} {(DQ ($ VSub_Name '$FP_DIETPIBACKUP_SETTINGS'))})] spids: [16777215 4458] ) ] spids: [16777215 4470] ) ] spids: [4441] ) spids: [4438 4441] ) (C {(Check_Install_PreReqs)}) (C {(Read_Settings_File)}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Number '$2'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FP_TARGET_BACKUP) op: Equal rhs: {($ VSub_Number '$2')} spids: [4528] ) ] spids: [4528] ) ] spids: [16777215 4524] ) ] spids: [16777215 4533] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$INPUT')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [4547 4556] ) terminator: <Op_Semi ';'> ) ] action: [(C {(Run_Backup)})] spids: [16777215 4559] ) (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$INPUT')}) right: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)})) ) spids: [4573 4583] ) terminator: <Op_Semi ';'> ) ] action: [(C {(Run_Restore)})] spids: [4571 4586] ) (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$INPUT')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [4604 4613] ) terminator: <Op_Semi ';'> ) ] action: [ (WhileUntil keyword: <KW_While while> cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Great left: (ArithWord w:{($ VSub_Name '$TARGETMENUID')}) right: (ArithUnary op_id:Node_UnaryMinus child:(ArithWord w:{(Lit_Digits 1)})) ) spids: [4622 4632] ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (C {(clear)}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$TARGETMENUID')}) right: (ArithWord w:{(Lit_Digits 0)}) ) spids: [4645 4654] ) terminator: <Op_Semi ';'> ) ] action: [(C {(Menu_Main)})] spids: [16777215 4657] ) (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DEqual left: (ArithWord w:{($ VSub_Name '$TARGETMENUID')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [4667 4676] ) terminator: <Op_Semi ';'> ) ] action: [(C {(Menu_Set_Directory)})] spids: [4665 4679] ) ] spids: [16777215 4687] ) ] spids: [4635 4691] ) ) (C {(Write_Settings_File)}) ] spids: [4602 4616] ) ] spids: [16777215 4702] ) (SimpleCommand words: [{(rm)} {(DQ ($ VSub_Name '$FP_FILTER_INCLUDE_EXCLUDE_SYSTEM_BACKUP'))}] redirects: [(Redir op:<Redir_AndGreat '&>'> fd:16777215 arg_word:{(/dev/null)})] ) (C {(unset)} {(aSUPPORTED_FILESYSTEMS)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] spids: [3] )