ProHoster > Pūnaewele > Nā Administration > Hoʻihoʻi hou i ka ʻikepili mai nā papa XtraDB me ka ʻole o kahi faila me ka hoʻohana ʻana i ka loiloi byte-by-byte o ka faila ibd
Hoʻihoʻi hou i ka ʻikepili mai nā papa XtraDB me ka ʻole o kahi faila me ka hoʻohana ʻana i ka loiloi byte-by-byte o ka faila ibd
prehistory
No laila ua hoʻouka ʻia ke kikowaena e kahi virus ransomware, ʻo ia hoʻi, e kahi "pōʻino laki," i waiho ʻia i nā faila .ibd (faila ʻikepili maka o nā papa innodb) ʻaʻole i hoʻopā ʻia, akā i ka manawa like i hoʻopili ʻia i nā faila .fpm ( nā waihona waihona). Ma keia hihia, hiki ke maheleia .idb i:
pili i ka hoihoi hou ʻana ma o nā mea hana maʻamau a me nā alakaʻi. No ia mau hihia, aia kahi maikaʻi lilo;
nā papa i hoʻopili ʻia. ʻO ka hapa nui he mau papa nui kēia, kahi (e like me kaʻu i hoʻomaopopo ai) ʻaʻole lawa ka RAM o ka poʻe hoʻouka no ka hoʻopili piha ʻana;
ʻAe, nā papa i hoʻopili piha ʻia ʻaʻole hiki ke hoʻihoʻi ʻia.
Hiki ke hoʻoholo i ke koho e pili ana i nā papa ma ka wehe wale ʻana iā ia i loko o nā mea hoʻoponopono kikokikona ma lalo o ka hoʻopili ʻana i makemake ʻia (i koʻu hihia ʻo ia ʻo UTF8) a me ka nānā wale ʻana i ka faila no ka hele ʻana o nā kahua kikokikona, no ka laʻana:
Eia kekahi, i ka hoʻomaka ʻana o ka faila hiki iā ʻoe ke nānā i kahi helu nui o 0 bytes, a me nā virus e hoʻohana ana i ka block encryption algorithm (ka mea maʻamau) e hoʻopilikia pinepine iā lākou.
I koʻu hihia, haʻalele nā mea hoʻouka i kahi kaula 4-byte (1, 0, 0, 0) ma ka hopena o kēlā me kēia faila i hoʻopili ʻia, i maʻalahi i ka hana. No ka ʻimi ʻana i nā faila i ʻike ʻole ʻia, ua lawa ka palapala:
def opened(path):
files = os.listdir(path)
for f in files:
if os.path.isfile(path + f):
yield path + f
for full_path in opened("C:somepath"):
file = open(full_path, "rb")
last_string = ""
for line in file:
last_string = line
file.close()
if (last_string[len(last_string) -4:len(last_string)]) != (1, 0, 0, 0):
print(full_path)
No laila, ua ʻike ʻia ka loaʻa ʻana o nā faila no ka ʻano mua. ʻO ka lua e pili ana i ka hana lima, akā ua lawa ka mea i loaʻa. E maikaʻi nā mea a pau, akā pono ʻoe e ʻike pololei loa ke kukulu ana a (ʻoiaʻiʻo) ua kū mai kahi hihia e pono iaʻu e hana me kahi papaʻaina e hoʻololi pinepine. ʻAʻohe mea i hoʻomanaʻo inā ua hoʻololi ʻia ke ʻano kahua a i ʻole he kolamu hou.
ʻAʻole hiki ke kōkua ʻo Wilds City i kēlā hihia, ʻo ia ke kumu i kākau ʻia ai kēia ʻatikala.
E hele i ke kiko
Aia kahi papa ʻaina mai 3 mahina aku nei ʻaʻole i kūlike me ka mea o kēia manawa (hoʻokahi paha kahua, a ʻoi aku paha). Hoʻolālā papa:
CREATE TABLE `table_1` (
`id` INT (11),
`date` DATETIME ,
`description` TEXT ,
`id_point` INT (11),
`id_user` INT (11),
`date_start` DATETIME ,
`date_finish` DATETIME ,
`photo` INT (1),
`id_client` INT (11),
`status` INT (1),
`lead__time` TIME ,
`sendstatus` TINYINT (4)
);
i kēia hihia, pono ʻoe e wehe:
id_point int(11);
id_user int(11);
date_start DATETIME;
date_finish KA LAWA.
No ka hoʻihoʻi hou ʻana, hoʻohana ʻia kahi loiloi byte-by-byte o ka faila .ibd, a ukali ʻia me ka hoʻololi ʻana iā lākou i kahi palapala hiki ke heluhelu ʻia. No ka loaʻa ʻana o ka mea e pono ai mākou, pono mākou e kālailai i nā ʻano ʻikepili e like me ka int a me ka datatime, e wehewehe ka ʻatikala iā lākou wale nō, akā i kekahi manawa e kuhikuhi pū mākou i nā ʻano ʻikepili ʻē aʻe, hiki ke kōkua i nā hanana like ʻole.
Pilikia 1: nā māla me nā ʻano DATETIME a me TEXT he mau waiwai NULL, a ua lele wale ʻia lākou i ka faila, no kēia mea, ʻaʻole hiki ke hoʻoholo i ke ʻano e hoʻihoʻi i koʻu hihia. Ma nā kolamu hou, he null ka waiwai paʻamau, a hiki ke nalowale kekahi hapa o ke kālepa ma muli o ka hoʻonohonoho innodb_flush_log_at_trx_commit = 0, no laila e hoʻohana ʻia ka manawa hou e hoʻoholo ai i ke ʻano.
Pilikia 2: pono e noʻonoʻo ʻia nā lālani i holoi ʻia ma DELETE i loko o ka faila ibd, akā me ka ALTER TABLE ʻaʻole e hoʻonui ʻia ko lākou ʻano. ʻO ka hopena, hiki ke ʻokoʻa ke ʻano o ka ʻikepili mai ka hoʻomaka ʻana o ka faila a i kona hopena. Inā hoʻohana pinepine ʻoe i ka OPTIMIZE TABLE, a laila ʻaʻole paha ʻoe e hālāwai me ia pilikia.
E hoʻolohe, pili ka mana DBMS i ke ʻano o ka mālama ʻana i ka ʻikepili, a ʻaʻole pono kēia hiʻohiʻona no nā mana nui ʻē aʻe. I koʻu hihia, ua hoʻohana ʻia ka puka makani o mariadb 10.1.24. Eia kekahi, ʻoiai ma ka mariadb e hana pū ʻoe me nā papa InnoDB, ʻoiaʻiʻo lākou XtraDB, ka mea i kāpae i ka hoʻohana ʻana o ke ʻano me InnoDB mysql.
ʻIke waihona
I ka python, ʻano ʻikepili bytes() hōʻike i ka ʻikepili Unicode ma kahi o kahi pūʻulu helu maʻamau. ʻOiai hiki iā ʻoe ke nānā i ka faila ma kēia ʻano, no ka maʻalahi hiki iā ʻoe ke hoʻololi i nā byte i ke ʻano helu ma ka hoʻololi ʻana i ka array byte i kahi ʻano maʻamau (papa inoa (example_byte_array)). I kēlā me kēia hihia, kūpono nā ʻano ʻelua no ka nānā ʻana.
Ma hope o ka nānā ʻana i nā faila ibd, hiki iā ʻoe ke ʻike i kēia:
Eia kekahi, inā ʻoe e puʻunaue i ka faila me kēia mau huaʻōlelo, e loaʻa iā ʻoe ka hapa nui o nā poloka o ka ʻikepili. E hoʻohana mākou i ka infimum ma ke ʻano he mahele.
table = table.split("infimum".encode())
He ʻike hoihoi: no nā papa me ka liʻiliʻi o ka ʻikepili, ma waena o ka infimum a me ka supremum aia kahi kuhikuhi i ka helu o nā lālani ma ka poloka.
— papa hoao me ka lalani 1
- papa hoʻāʻo me 2 lālani
Hiki ke hoʻokuʻu ʻia ka papa ʻaina laina [0]. Ma hope o ka nānā ʻana, ʻaʻole hiki iaʻu ke ʻike i ka ʻikepili papaʻaina maka. ʻO ka mea nui, hoʻohana ʻia kēia poloka e mālama i nā kuhikuhi a me nā kī.
E hoʻomaka ana me ka papaʻaina[1] a me ka unuhi ʻana i ka papa helu, hiki iā ʻoe ke ʻike i kekahi mau hiʻohiʻona, ʻo ia hoʻi:
ʻO kēia nā waiwai int i mālama ʻia i kahi kaula. Hōʻike ka byte mua inā he maikaʻi a maikaʻi ʻole paha ka helu. I koʻu hihia, maikaʻi nā helu a pau. Mai nā 3 bytes i koe, hiki iā ʻoe ke hoʻoholo i ka helu me ka hoʻohana ʻana i kēia hana. Palapala:
def find_int(val: str): # example '128, 1, 2, 3'
val = [int(v) for v in val.split(", ")]
result_int = val[1]*256**2 + val[2]*256*1 + val[3]
return result_int
No kekahi laʻana, 128, 0, 0, 1 = 1ole 128, 0, 75, 108 = 19308.
Loaʻa i ka papaʻaina kahi kī nui me ka hoʻonui ʻakomi, a hiki ke loaʻa ma aneʻi
Ma ka hoʻohālikelike ʻana i ka ʻikepili mai nā papa hoʻāʻo, ua hōʻike ʻia ʻo ka mea DATETIME he 5 bytes a hoʻomaka me 153 (e hōʻike ana paha i nā manawa makahiki). No ka mea ʻo ka DATTIME ʻo '1000-01-01' a i '9999-12-31', manaʻo wau e ʻokoʻa paha ka helu o nā bytes, akā i koʻu hihia, hāʻule ka ʻikepili i ka manawa mai 2016 a 2019, no laila e manaʻo mākou. ua lawa ia 5 bytes.
No ka hoʻoholo ʻana i ka manawa me ke kekona ʻole, ua kākau ʻia kēia mau hana. Palapala:
Manaʻo wau inā e hoʻolilo ʻoe i ka manawa nui, hiki ke hoʻoponopono ʻia kēia kuhi hewa.
A laila, he hana e hoʻihoʻi i kahi mea datetime mai kahi kaula. Palapala:
def find_data_time(val:str):
val = [int(v) for v in val.split(", ")]
day = day_(val[2])
hour = hour_(val[2], val[3])
minutes = min_(val[3], val[4])
year, month = year_month(val[1], val[2])
return datetime(year, month, day, hour, minutes)
Hoʻokele ʻia e ʻike i nā waiwai hoʻomau pinepine mai int, int, datetime, datetime , me he mea lā eia kāu mea e pono ai. Eia kekahi, ʻaʻole e hana hou ʻia kēlā ʻano kaʻina i ʻelua mau laina.
Ke hoʻohana nei i kahi ʻōlelo maʻamau, ʻike mākou i ka ʻikepili pono:
E ʻoluʻolu e ʻimi i ka hoʻohana ʻana i kēia ʻōlelo, ʻaʻole hiki ke hoʻoholo i nā waiwai NULL i nā kahua i koi ʻia, akā i koʻu hihia ʻaʻole ia he koʻikoʻi. A laila hele mākou i ka mea i loaʻa iā mākou ma kahi loop. Palapala:
result = []
for val in fined:
pre_result = []
bd_int = re.findall(r"128, d*, d*, d*", val)
bd_date= re.findall(r"(153, 1[6,5,4,3]d, d*, d*, d*)", val)
for it in bd_int:
pre_result.append(find_int(bd_int[it]))
for bd in bd_date:
pre_result.append(find_data_time(bd))
result.append(pre_result)
ʻOiaʻiʻo, ʻo ia wale nō, ʻo ka ʻikepili mai ka hopena hopena ka ʻikepili a mākou e pono ai. ###PS.###
Hoʻomaopopo wau ʻaʻole kūpono kēia ʻano no nā mea a pau, akā ʻo ka pahuhopu nui o ka ʻatikala ʻo ia ka wikiwiki i ka hana ma mua o ka hoʻoponopono ʻana i kāu mau pilikia āpau. Manaʻo wau ʻo ka hopena kūpono loa ʻo ka hoʻomaka ʻana i ke aʻo ʻana i ke code kumu iā ʻoe iho mariadb, akā ma muli o ka liʻiliʻi o ka manawa, ʻoi aku ka wikiwiki o ke ʻano o kēia manawa.
I kekahi mau hihia, ma hope o ka nānā ʻana i ka faile, hiki iā ʻoe ke hoʻoholo i ke ʻano pili a hoʻihoʻi iā ia me ka hoʻohana ʻana i kekahi o nā ala maʻamau mai nā loulou i luna. E ʻoi aku ka pololei o kēia a me ka liʻiliʻi o nā pilikia.