최근에 네트워크로 연결된 장비에서 데이터를 수집하고 결과를 텍스트 파일로 저장했습니다. 안타깝게도 한 번의 실행 중에 파일 이름을 변경하는 것을 잊어버려서 중요한 파일을 덮어쓰게 되었습니다.
파일을 복구하는 데 많은 시간을 투자할 가치가 있나요? 안타깝게도 그렇습니다. 데이터는 준비하는 데 몇 주가 걸리는 동물 실험의 중요한 부분입니다.
grep 방법을 사용하여 원본 디스크에서 삭제된 파일을 찾을 수 있었습니다. 그러나 내 시스템(btrfs)에는 LZO 압축이 활성화되어 있으므로 파일의 일부만 일반 텍스트로 기록됩니다. 이 데이터의 압축을 풀면 파일을 복구할 수 있습니다.
제가 직면한 문제는 btrfs가 LZOP와 같은 유틸리티가 사용하는 것과는 달리 LZO 압축 파일에 대해 다른 머리글/바닥글을 사용한다는 것입니다(내가 아는 한). 따라서 완전한 파일이 있고 그것이 어떻게 압축되었는지 알고 있더라도 결과를 해독할 수 없습니다.
제가 진행 중인 두 가지 전략은 다음과 같습니다.
1) btrfs 머리글/바닥글을 LZOP가 읽을 수 있는 것으로 수정합니다.
2) btrfs 도구 중 하나를 사용하여 누락되었지만 디스크에서 제거되지 않은 삭제된 파일을 "재발견"합니다. 또는 btrfs에 예상 원시 데이터를 명시적으로 공급하여 btrfs에 파일을 생성할 수 있다면 유용할 것입니다.
두 가지 접근 방식 중 내가 직면한 장애물은 다음과 같습니다. btrfs는 복잡하고 LZO에는 문서가 거의 없습니다. 따라서 이러한 비표준 문제에 대한 해결책을 연구하는 것은 어려운 일이었습니다.
복구해야 할 원본 및 압축 데이터는 다음과 같습니다.
^Q^@^@
^@^@^@^@^@^@^@"^@nerve1_cuff2_run1_phase6_rampA.csvªu^D^@^@^@^@^@^u^D^@^@^@^@^@= ^@^@^@^@^@^@= ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@è^C^@^@d^@^@^@<80><81>^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@<83>'½Z^@^@^@^@ÜÑ<9a>37(½Z^@^@^@^@>Þ?(7(½Z^@^@^@^@>Þ?(<83>'½Z^@^@^@^@ÜÑ<9a>3©u^D^@^@^@^@^@= ^@^@^@^@^@^@^B^@^@^@^@E^E^@^@=^E^@^@^@
^C^A^ATime,Voltage,Current^M
0.0`^@
e+00 -3.62291°^A^K6.74129e-07^M
3,<98>^@^B27144¸^D^D2.86341¹^D6,<98>^@^B19476ø^D^B96474¹^D9*<98>^@^D5.42908¸^D^M1.03390e-06^M
1.2Ì^S^G1 -5.46949ø^D^B78325ù^D5+<98>^@^A2152ø^D^A8254'<99>^@8(<98>^@^D7.35047¸^D^C2.8822l^S^C6^M
2.1*<98>^@^A0896À"^D3.18038³^N2.4*<98>^@^A2904Ä^]^C3.5740`"<95> 7(<98>^@^D9.13875°^N^D5.47206´ (x^E^F1 -9.0993Ä^]^D5.53632ù^D3*4^A^A0773Ü&^C5.5675Ç^]3.6(<98>^@^B1.093<8c>:^F1 -7.3989'Ñ^A9* <98>^@^A1280|&<8c>-^A6748Á"4*^T^F^C1.1296|&^F1 -6.2602Ã"4.5*4^A^A3289l^S<90>^N^B78413ª^X4.)^T^F^B1.293<98>+<98>^^^A2548Ý&5*^T^F^G1.26543e+0<98>^D^A6356xR^A6^M
5*^T^F^C1.4376È^X^C1.1896q^N5x^D)^T^F^C1.4511(<9b>^@924^?M5^M
(÷
1 -v 47h?<90>^A^A1925d^]<98>^D)^T^F^C1.6172'7^A399<98>+<98>^D+^T^F^A6008Ü&^C1.4441x+<98>^D+^W^F594(4^A 45857e-05^M
7,^T^F^A7608`p<8c>^S^A7039'<98>^@+^T^F^B75760¼&^C1.7120É^X7,^T^F^A7577(7^A166Í^S8,^T^F^A9248p\<90>^N^A9370Ù+8,^T^Fx^DÐ5^B1.977<94>W^B5^M
8.+^W^F914<8c><88>µ 8h2<84>^](p^P^F1 -2.0489la<90>^A^A3495h?^B5^M
9.)^T^F^A2.02'¤^C^C2.3412hf<98>^D)^T^F^B2.060øR^C2.3101hf<98>^D)^T^F^B2.216ø+^C2.5738if5d<92>^A0200e*2l^S^A2133À"^C2.5826× 1.0{0e+0º^D02<94>~<8b>^X627<84>k´ paø^D^A3522'7^A902<88><8d><99>^D1h<92>*<98>^@l<88><94> ^A9069×01.1h<92>'<9a>^@67<98> »^D325Ã"1.1x0û^D669èf^B2.751(l^B`^]'§^C651<9c><9b><97> 746<80>p<8d>^S2x0'6^A45<80><97>Ú^D47'A^D2x0û^D814<8c>¯<98>^D^A9919t~´ x0ø^D^A7883Ä^]^B3.031çk1.3p^S'<9b>^@950Äkz^D94Ía1l¼(³^F767ì^S^B4.036÷~1.3*^T^F^A6608x^^^F1 -4.1916'é^G4*^W^F909ð5^C3. 3969'¥^C4(^T^F^C3.0201Äk^C3.6643Ë<8d>1.4(^T^Fu¿9(^H^C^B71043µ~1'Q^U2wó003<81>å1p^A^A7286Ûy1.5(^U^F3a¾7'^H^C|H(4^A(^W^F3.0Üé<84>^]^A0770×~1.5(^T^Fy^D6(Ü^D^A1408'! 6(^T^F^D3.15811¨<8d>^C4. 4145'¥^C6(,^L^B3.108à¾^C4.7772'm^B6(^T^F^C3.0823Ъ^C4.8710'M^G7(^T^F<85>^]2Ä^]^C5.6715'5^A7,^U^F4ôW^B5.728<90>Ñ<9d>M7+^U^F2'$^W
5.71477e-05^M
^Q^@^@ ^@^@^@^@^@^@^@"^@nerve1_cuff2_run1_phase4_rampA.csv¨u^D^@^@^@^@^@©u^D^@^@^@^@^@= ^@^@^@^@^@^@= ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@è^C^@^@d^@^@^@<80><81>^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@I%½Z^@^@^@^@^Y^^þ7ý%½Z^@^@^@^@¾n^8ý%½Z^@^@^@^@¾n^8I%½Z^@^@^@^@^Y^^þ7¨u^D^@^@^@^@^@^@p^@^@^@^@^@^@^B^@^@^@^A^@<80>´ m^@^@^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@p^@^@^@^@^@^@^H^@^@^@^@^@^@^@#^@nerve1_cuff2_run1_phase3_pulseA.csv§u^D^@^@^@^@^@¨u^D^@^@^@^@^@Ém^@^@^@^@^@^@^@p^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@è^C^@^@d^@^@^@<80><81>^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^W$½Z^@^@^@^@Ò<82>Å^LG%½Z^@^@^@^@í3ò&G%½Z^@^@^@^@í3ò&^W$½Z^@^@^@^@Ò<82>Å^L§u^D^@^@^@^@^@= ^@^@^@^@^@^@^B^@^@^@^@"^E^@^@^Z^E^@^@^@
--
나는 이것이 이진 데이터 없이는 그다지 유용하지 않다는 것을 알고 있지만 적어도 내가 보고 있는 것에 대한 아이디어를 제공합니다. 파일이 디스크에서 어디에서 시작하고 끝나는지 확신할 수 없어서 몇 줄을 추가했습니다. 파일의 첫 번째 줄은 다음에 해당합니다: ^C^A^ATime,Voltage,Current^M
.
일반 텍스트 파일은 다음과 같습니다.
^C^A^ATime,Voltage,Current
0.00000e+00 7.05295e-01 -2.87974e-06
2.99999e+00 6.91690e-01 -2.88057e-06
6.00000e+00 6.89945e-01 -2.87807e-06
9.00000e+00 5.05297e-01 -8.11195e-06
1.20000e+01 4.78072e-01 -8.09407e-06
1.50000e+01 4.54195e-01 -8.11017e-06
1.80000e+01 3.06597e-01 -1.34169e-05
2.10000e+01 2.93734e-01 -1.34169e-05
2.40000e+01 2.76573e-01 -1.34177e-05
2.70000e+01 8.67963e-02 -1.88397e-05
3.00000e+01 6.46639e-02 -1.88236e-05
3.30000e+01 8.51750e-02 -1.87974e-05
... (61 lines in total)
내 디스크는 다음 옵션으로 마운트되었습니다.
UUID=XXXX /home btrfs rw,nosuid,nodev,noatime,compress=lzo,ssd,space_cache,autodefrag,subvol=__active/home 0 0
어떤 도움이라도 대단히 감사하겠습니다!
답변1
디스크에서 원시(압축) 데이터를 가져와서 LZOP가 읽을 수 있는 새 헤더를 작성하여 문제를 해결할 수 있었습니다.
LZOP 자체에는 헤더 내용에 관한 문서가 거의 없지만 다른 목적으로 이 기능이 필요한 다른 작성자의 문서를 사용할 수 있습니다. 다른 사람이 이 문제를 겪고 있다면 다음을 참조하세요.https://github.com/MediaMath/go-lzop/blob/master/README.md