package Ġcom . c ree pers an . bing image . entr ance Ċ Ċ import Ġcom . c ree pers an . bing image . config . Config Utils Ċ import Ġcom . c ree pers an . bing image . lib . database . bean . B ing Image Database Bean Ċ import Ġcom . c ree pers an . bing image . lib . database . factory . Database Factory Ċ import Ġcom . c ree pers an . bing image . lib . file . FileUtils Ċ import Ġcom . c ree pers an . bing image . lib . json . Json Utils Ċ import Ġcom . c ree pers an . bing image . log . Log Factory Ċ import Ġcom . c ree pers an . bing image . utils . Compress Utils Ċ import Ġcom . c ree pers an . bing image . utils . Type Convert Utils Ċ import Ġjava . io . File Ċ import Ġjava . sql . Driver Manager Ċ import Ġjava . sql . ResultSet Ċ import Ġjava . util .* Ċ Ċ class ĠBackup Node js B ing Image Application : ĠBase Entr ance Ġ{ ĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Backup Node js B ing Image Application " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġscanner Ġby Ġlazy Ġ{ ĠScanner ( System .` in `) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun ( params : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" æŃ£åľ¨ ä»İ ĠNode js Ġ çīĪæľ¬ Ġ å¿ħ åºĶ å£ ģ çº ¸ Ġä¸Ń å¤ĩ ä»½ æķ°æį® ...") ĊĊĠĠĠĠĠĠĠ Ġ// ĠåĪĿå§ĭåĮĸ ĊĠĠĠĠĠĠĠ ĠJson Utils . init () ĊĠĠĠĠĠĠĠ ĠFileUtils . init () ĊĠĠĠĠĠĠĠ ĠConfig Utils . init () ĊĠĠĠĠĠĠĠ ĠDatabase Factory . init () ĊĊĠĠĠĠĠĠĠ Ġ// Ġä»İ è¾ĵåħ¥ ä¸Ń èİ·åıĸ æķ°æį® ĊĠĠĠĠĠĠĠ Ġprint (" è¯·è¾ĵåħ¥ bing - image Ġ æķ°æį®åºĵ åĲįç§° ï¼ļ ") ĊĠĠĠĠĠĠĠ Ġval Ġnode Database Name Ġ= Ġscanner . nextLine () ĊĠĠĠĠĠĠĠ Ġprint (" è¯·è¾ĵåħ¥ bing - image ĠMySQL æķ°æį®åºĵ åľ°åĿĢ ï¼ļ ") ĊĠĠĠĠĠĠĠ Ġval Ġnode Database Address Ġ= Ġscanner . nextLine () ĊĠĠĠĠĠĠĠ Ġprint (" è¯·è¾ĵåħ¥ bing - image ĠMySQL æķ°æį®åºĵ ç«¯åı£ ï¼ļ ") ĊĠĠĠĠĠĠĠ Ġval Ġnode Database Port Ġ= Ġscanner . nextLine () ĊĠĠĠĠĠĠĠ Ġprint (" è¯·è¾ĵåħ¥ bing - image ĠMySQL æķ°æį®åºĵ çĻ»å½ķ ä½¿çĶ¨çļĦ çĶ¨æĪ·åĲį ï¼ļ ") ĊĠĠĠĠĠĠĠ Ġval Ġnode Database UserName Ġ= Ġscanner . nextLine () ĊĠĠĠĠĠĠĠ Ġprint (" è¯·è¾ĵåħ¥ bing - image ĠMySQL æķ°æį®åºĵ çĻ»å½ķ ä½¿çĶ¨çļĦ å¯Ĩçłģ ï¼ļ ") ĊĠĠĠĠĠĠĠ Ġval Ġnode Database Password Ġ= Ġscanner . nextLine () ĊĊĊĠĠĠĠĠĠĠ Ġval Ġbackup Info String Ġ= Ġ" backup _${ Type Convert Utils . timestamp To Backup File Post fix ( System . currentTimeMillis ()) }" ĊĊĠĠĠĠĠĠĠ Ġprintln (" æŃ£åľ¨ åĪĿå§ĭåĮĸ å¤ĩ ä»½ æĸĩä»¶å¤¹ ...") ĊĠĠĠĠĠĠĠ Ġval Ġbackup Root Folder : ĠFile ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackup Root Folder Ġ= ĠFile ("${ FileUtils . tmp Folder . absolute Path }/ $ backup Info String ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . init Folder ( backup Root Folder , Ġ" å¤ĩ ä»½ ä¸´ æĹ¶ çĽ®å½ķ æł¹ çĽ®å½ķ ") ĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" å¤ĩ ä»½ å¤±è´¥ ï¼ļ ${ e . message }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ å¤ĩ ä»½ æĸĩä»¶å¤¹ çļĦ åĩĨå¤ĩ ĊĠĠĠĠĠĠĠ Ġval Ġbackup Data Folder Ġ= ĠFile ("${ backup Root Folder . absolute Path }/ data ") ĊĠĠĠĠĠĠĠ ĠFileUtils . init Folder ( backup Data Folder , Ġ" å¤ĩ ä»½ ä¸´ æĹ¶ çĽ®å½ķ æķ°æį® çĽ®å½ķ ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġ è¿ŀæİ¥ MySQL æķ°æį®åºĵ çļĦ åĩĨå¤ĩ ĊĠĠĠĠĠĠĠ ĠClass . forName (" com . mysql . cj . jdbc . Driver ") ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= ĠDriver Manager . getConnection (" jdbc : mysql ://${ node Database Address }:${ node Database Port }/ ", Ġnode Database UserName , Ġnode Database Password ); ĊĠĠĠĠĠĠĠ Ġval Ġstatement Ġ= Ġconnection . createStatement () ĊĠĠĠĠĠĠĠ Ġstatement . execute (" use Ġ$ node Database Name ") ĊĠĠĠĠĠĠĠ Ġval ĠresultSet Ġ= Ġstatement . executeQuery (" select Ġ* Ġfrom ĠB ing Image Ġorder Ġby Ġ_ id Ġdesc Ġ") ĊĠĠĠĠĠĠĠ Ġwhile Ġ( resultSet . next ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbean Ġ= ĠB ing Image Database Bean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ id Ġ= ĠresultSet . get OrDefault ("_ id ", Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyear Ġ= ĠresultSet . get OrDefault (" year ", Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmonth Ġ= ĠresultSet . get OrDefault (" month ", Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Ġ= ĠresultSet . get OrDefault (" day ", Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcopyright Ġ= ĠresultSet . get OrDefault (" copyright ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= ĠresultSet . get OrDefault (" path ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠresultSet . get OrDefault (" title ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= ĠresultSet . get OrDefault (" location ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Ġ= ĠresultSet . get OrDefault (" author ", Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Ġ= ĠresultSet . get OrDefault (" json ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJson Utils . toString ( bean ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . save Text ToFile ("${ backup Data Folder . absolute Path }/${ bean ._ id }. json ", Ġjson ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprintln (" æŃ£åľ¨ å¤ĩ ä»½ åĽ¾çīĩ ...") ĊĠĠĠĠĠĠĠ Ġval Ġbackup B ing Image Folder Ġ= ĠFile ("${ backup Root Folder . absolute Path }/ bing _ image ") ĊĠĠĠĠĠĠĠ ĠFileUtils . init Folder ( backup B ing Image Folder , Ġ" å¤ĩ ä»½ ä¸´ æĹ¶ çĽ®å½ķ å£ ģ çº ¸ çĽ®å½ķ ") ĊĠĠĠĠĠĠĠ Ġprintln (" çĶ±äºİ åħ¼ å®¹ éĹ®é¢ĺ ï¼Į æļĤ ä¸į æĶ¯æĮģ èĩªåĬ¨ å¤ĩ ä»½ åĽ¾çīĩ ãĢĤ è¯· æīĭåĬ¨ å¤įåĪ¶ å¯¹åºĶçļĦ åĽ¾çīĩ æĸĩä»¶å¤¹ èĩ³ å¯¹åºĶ çĽ®å½ķ ä¸Ń ") ĊĊĠĠĠĠĠĠĠ Ġprintln (" æŃ£åľ¨ å¤ĩ ä»½ éħįç½® ...") ĊĠĠĠĠĠĠĠ Ġval Ġbackup Config Folder Ġ= ĠFile ("${ backup Root Folder . absolute Path }/ config ") ĊĠĠĠĠĠĠĠ ĠFileUtils . init Folder ( backup Config Folder , Ġ" å¤ĩ ä»½ ä¸´ æĹ¶ çĽ®å½ķ éħįç½® çĽ®å½ķ ") ĊĠĠĠĠĠĠĠ Ġprintln (" çĶ±äºİ åħ¼ å®¹ éĹ®é¢ĺ ï¼Į Node JS çīĪæľ¬ éħįç½®æĸĩä»¶ æļĤ ä¸į æĶ¯æĮģ è¿ ģ ç§» ï¼Į è¯· éĩįæĸ° è¿Ľè¡Į éħįç½® ") ĊĊĠĠĠĠĠĠĠ Ġprintln (" æŃ£åľ¨ çĶŁæĪĲ å¤ĩ ä»½ æĸĩä»¶ ...") ĊĠĠĠĠĠĠĠ ĠCompress Utils . zip ( backup Root Folder , ĠFile ("${ FileUtils . backup Folder . absolute Path }/ $ backup Info String . bak ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > ĠResultSet . get OrDefault ( key : ĠString , Ġdefault : ĠT ): ĠT { ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen ( T :: class ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInt :: class Ġ-> Ġthis . getInt ( key ) Ġas ? ĠT Ġ?: Ġdefault ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString :: class Ġ-> Ġthis . getString ( key ) Ġas ? ĠT Ġ?: Ġdefault ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog Factory . log ( TAG , Ġ" ä»İ Node JS å¿ħ åºĶ å£ ģ çº ¸ çļĦ æķ°æį®åºĵ ä¸Ń åıĸ åĩº çļĦæķ°æį® ç±»åŀĭ åĮ¹éħį å¤±è´¥ Ġkey =$ key ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdefault ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ