सबसे पहले, एक स्वीकारोक्ति: नहीं, मेरे पास बैकअप नहीं होना चाहिए।
दूसरा, स्थिति:
मेरे पास डेल एक्सपीएस 9550 एक ठोस राज्य डिस्क है जिसमें फेडोरा 25 चल रहा है ।
मैं एक फाइल पर काम कर रहा था और इसे बचाने की कोशिश की जब मुझे बताया गया कि मैं एक रीड-ओनली फाइल सिस्टम को बचाने की कोशिश कर रहा हूं । पता चला कि मेरा फाइल-सिस्टम अब केवल पढ़ा गया है और सभी जगह i / o त्रुटियां हैं ।
मैं कुछ फ़ाइलों को एक खुले वेब ब्राउज़र के माध्यम से खुद को ईमेल करके सहेजने में सक्षम था, लेकिन यह दुर्घटनाग्रस्त हो गया और मैं इसे स्थानांतरित करने में असमर्थ हूं। लेकिन मेरे पास अभी भी एक संपादक की रुचि की फाइलें हैं। मैं फ़ाइलों को कहीं भी सहेजने के लिए प्रतीत नहीं कर सकता, लेकिन मैं उनकी सामग्री की प्रतिलिपि बना सकता हूं। यदि केवल मुझे फ़ाइल सामग्री को बाहर निकालने का एक तरीका मिल सकता है, तो मैं खुद को महीनों के काम से बचा सकता हूं।
लेकिन कुछ भयानक सीमाएं हैं। मैंने एक यूएसबी ड्राइव डालने का प्रयास किया, लेकिन कोई भी डिवाइस इसे प्रदर्शित नहीं करता है, और mount
कमांड एक सेगफॉल्ट के साथ मर जाता है। मैं दूसरे कंप्यूटर पर ssh करने का प्रयास कर सकता हूं, लेकिन मुझे "बस त्रुटि" मिलती है और यह मर जाता है। ping
, dmesg
, ifconfig
, इन से कोई कार्य नहीं। लेकिन मैं क्या ज़रूरत है vim
और less
और ls
और नए अंडे कर सकते हैं bash
उदाहरणों।
नहीं lynx
, नहीं firefox
, नहीं google-chrome
। कोई डीवीडी ड्राइव नहीं है।
मूल रूप से ऐसा लगता है कि मेरा एसएसडी मर गया है। या शायद पूरा मदरबोर्ड। मेरे पास अभी भी स्मृति में महान मूल्य के दस्तावेज हैं, मेरे पास एक आईपी पता और नेटवर्क कनेक्शन है, मैं कुछ यादृच्छिक कमांड चला सकता हूं और उस पथ पर 3500 अधिक है जो मैं कोशिश कर सकता था।
cat
और gcc
काम करने लगते हैं। मैं / tmp में फ़ाइलों को लिख सकता हूँ। मेरे पास एक चल रहा ipython
उदाहरण है जो अभी भी काम करता है।
इसलिए ... मैंने अब तक जो भी कोशिश की है वह विफल रही है। लेकिन मुझे लगता है कि अभी भी एक हजार संभावनाएं हैं। मैं क्या विचार कर रहा हूँ? मैं अपने मरने वाले कंप्यूटर से संभवतः इन फ़ाइलों को कैसे प्राप्त कर सकता हूं?
वहां कोई रास्ता अवश्य होना चाहिए।
अद्यतन : नया सामान:
- मैंने अपनी मूर्खता के कारण अपना नेटवर्क कनेक्शन खो दिया।
- मैंने एक पायथन स्क्रिप्ट लिखी जिसे प्रतिस्थापित करना था
cp
औरcp -r
- जब तक मुझे
/dev
एसडी कार्ड, या यूएसबी ड्राइव के लिए एक प्रविष्टि बनाने का कोई रास्ता नहीं मिल जाता है , तब तक डेटा प्राप्त करने के लिए मेरा सबसे अच्छा दांव स्क्रीन और संभवतः स्पीकर / ऑडियो केबल लगता है। - मैं फ़ाइलों और आउटपुट को पढ़ने की कोशिश करने के लिए एक स्क्रिप्ट लिख रहा हूं जो कि पठनीय हैं।
सुझाव अभी भी बहुत स्वागत है!
अद्यतन 2 : नया सामान:
- मरने वाले कंप्यूटर पर मैंने एक पायथन स्क्रिप्ट लिखी जो बिट द्वारा एक बिट को पढ़ेगी और स्क्रीन को एक रंग या किसी अन्य पर फ्लैश करके उन बिट्स को व्यक्त करने की कोशिश करेगी। अभी यह दो-बिट कोड करने की कोशिश कर रहा है जहां लाल, हरा, नीला और सफेद सभी दो-बिट जोड़ी का प्रतिनिधित्व करते हैं। हालांकि, यह अच्छी तरह से काम नहीं कर रहा है, इसलिए मैं सिर्फ दो रंगों पर स्विच कर सकता हूं और एक बार में एक बिट कर सकता हूं।
- मेरे अन्य लैपटॉप पर (भरोसेमंद पुराने थिंकपैड जो मैंने इस गर्म नए एक्सपीएस के लिए छोड़ दिया था) मैंने एक स्क्रिप्ट लिखी थी जो ओपनसीवी पायथन लाइब्रेरी का उपयोग करके वेबकैम से पढ़ती है। विचार यह है कि यह दूसरे कंप्यूटर द्वारा भेजे गए कोड को डिकोड करता है। परेशानी यह है कि कैमरे से फ्रेमरेट कुछ-कुछ 15 फ्रेम प्रति सेकंड की तरह है, जिसका मतलब है कि अगर मैं एक संपूर्ण था, तो त्रुटिहीन मेरी अधिकतम डेटा दर 30 बिट प्रति सेकंड, यानी 225 बाइट प्रति सेकंड होगी। वह प्रति दिन 324k है।
- मरने वाले एक्सपीएस पर मैं
tar
वांछित फ़ाइलों को एक एकल संग्रह में पैक करने के लिए उपयोग कर सकता हूं , जो 1.7 एमबी है। दुर्भाग्य से,gzip
,bzip2
,xz
,lzop
और जो कुछ भी संपीड़न उपयोगिताओं उपलब्ध नहीं हैं। लेकिन पायथन केzlib
मॉड्यूल का उपयोग करके मैं इस फ़ाइल को 820KB तक संकुचित कर सकता हूं। उस आकार को देखते हुए, मैं शायद इस बात को एक दो दिनों में भेज सकता हूं। - चूँकि यह हस्तांतरण विधि बहुत त्रुटि प्रवण होगी, इसलिए मैं डेटा को प्रसारित करते समय कुछ त्रुटि सुधार जोड़ने के लिए XPS पर हैमिंग कोड लागू करने जा रहा हूं।
- संभवत: जटिलताएं होंगी क्योंकि ऐसा होता है, लेकिन कम से कम यह किसी भी तरह से इस डेटा को प्राप्त करने के लिए संभव है!
- चूंकि यह अभी भी डेटा भेजने का एक बहुत अच्छा तरीका है, इसलिए मैंने USB सीरियल ड्राइवरों में अधिक देखा। मॉड्यूल मैं कोशिश की है लोड करने के लिए (
usb-serial-simple
,usb-debug
,safe-serial
) मैं ओ त्रुटियों देना /। मुझे नहीं लगता कि यह कर्नेल के लिए बनाया गया है, या तो, क्योंकि कोई / dev / ttyUSB * डिवाइस मौजूद नहीं हैं।
इस प्रकार अब तक सभी के सुझावों के लिए धन्यवाद --- मुझे पता है कि यह भी एक अच्छी तरह से परिभाषित सवाल नहीं है क्योंकि आप लोग पहले से नहीं जानते हैं कि कौन से कार्यक्रम / फाइलें पढ़ी जा सकती हैं या नहीं। अभी भी इस वीडियो दृष्टिकोण से बेहतर सुझावों के लिए खुला है!
अद्यतन 3 : सबसे नया सामान
- मुझे एक PS3 आई वेबकेम मिला और, अपने स्वत: लाभ और एक्सपोज़र को अक्षम करने के बाद, मैं सफलतापूर्वक XPS के डेटा को पढ़ रहा हूं, भले ही एक त्रुटि 1 बाइट प्रति सेकंड पर। यह एक बड़ी सफलता है --- पहला डेटा एक्सफ़िलिएटेड! लेकिन किसी भी प्रकार के उचित समय में मेरे 820KB को प्राप्त करने के लिए दर बहुत धीमी है, और त्रुटि दर बहुत अधिक है।
- समस्या यह है कि टर्मिनल पर लिखना बहुत धीमा है। स्क्रीन अपडेट तात्कालिक, थैंक्स (मुझे लगता है) जैसे
urxvt
कि टर्मिनल एमुलेटर की सुस्ती के लिए कुछ भी नहीं है जो मेरे पास हैं। - मुझे पता चला कि मेरे पास एक्सपीएस पर एक जंग संकलक तक पहुंच है। मैंने यह देखने के लिए कि क्या टर्मिनल रिफ्रेश स्पीड में सुधार होगा, यह देखने के लिए रस्ट का उपयोग करके ट्रांसमिशन स्क्रिप्ट को फिर से लिखा, लेकिन इससे कोई मदद नहीं मिली।
- क्योंकि मैं फ्रेमरेट को बढ़ाने में सक्षम होने की संभावना नहीं हूं, इसलिए मुझे यह बढ़ाने की कोशिश करनी होगी कि मुझे प्रति फ्रेम कितना डेटा मिलता है। मेरा वर्तमान दृष्टिकोण कुछ इस तरह है:
दायां आधा अभी भी एक घड़ी संकेत है, जो नए फ्रेम के आगमन को चिह्नित करने के लिए चमकता है। लेकिन बाईं ओर अब एक ग्रिड है जहां प्रत्येक सेल को कोने में एक लाल वर्ग द्वारा चिह्नित किया जाता है, और फिर लाल वर्ग से दाएं और नीचे हरे रंग की सेल को थोड़ा इंगित करने के लिए फ्लैश और ऑफ किया जाता है। लाल वर्गों को कंप्यूटर को प्राप्त करने देना चाहिए जहां कोशिकाएं स्थित हैं। मुझे इस तरह से अभी तक कोई डेटा नहीं मिला है, लेकिन यह वही है जो मैं काम कर रहा हूं।
- किसी ने सुझाव दिया कि मैं इन तदर्थ रंग पैटर्न के बजाय क्यूआर कोड लिखने में देखता हूं। मैं उस पर भी गौर करने जा रहा हूं, और शायद इस ग्रिड दृष्टिकोण के बजाय इसे लागू करूंगा। त्रुटि सुधार एक अच्छी जीत होगी, साथ ही साथ मानक पुस्तकालयों को डिकोड करने के लिए उपयोग करने में सक्षम होना चाहिए।
- मुझे पता चला कि मेरे पास लिबासाउंड (एएलएसए साउंड लाइब्रेरी) तक पहुंच है, लेकिन इससे जुड़ी हेडर फ़ाइलों (
alsa/asoundlib.h
या जो भी हो) के लिए नहीं। अगर किसी को पता है कि हेडर के बिना साझा लाइब्रेरी का उपयोग कैसे किया जा सकता है, या मुझे ऑडियो आउटपुट देने के लिए सिर्फ सही हेडर लिखने में मदद कर सकता है, तो मेरे पास फ़ाइलों को प्राप्त करने का एक ऑडियो-आधारित तरीका हो सकता है। - वैकल्पिक रूप से, अगर कोई मुझे libusb तक पहुंच के बिना USB उपकरणों में हेरफेर करने में मदद कर सकता है तो शायद मैं उसके साथ कुछ कर सकता हूं?
आगे बढ़ते हुए!
अद्यतन 4 : ऑडियो आउटपुट का उत्पादन!
उपयोगकर्ता फ्रांसेस्को नोफेरी ने पिछले अद्यतन में उल्लिखित एएलएसए पुस्तकालय का उपयोग करने में मेरी मदद करते हुए कुछ महान कार्य किए हैं। सी कंपाइलर में एक समस्या थी, लेकिन रस्ट कंपाइलर का उपयोग करके मैं एफएफआई को सीधे कॉल करने में सक्षम था libasound
। मैंने अब ऑडियो पर अपने डेटा का एक गुच्छा खेला है और यह मेरे कानों को संगीत जैसा लगता है! अभी भी एक वास्तविक संचार चैनल स्थापित करने की आवश्यकता है, लेकिन मुझे बहुत उम्मीद है। इस बिंदु पर मेरा काम मूल रूप से एक मॉडेम को लागू करना है, इसलिए यदि किसी के पास अच्छे तरीकों के लिए कोई मार्गदर्शन है जो कि मैं सभी कानों के लिए कर रहा हूं। आदर्श रूप से मॉडुलन जो हाथ से कार्यान्वित करना आसान है और जिसके लिए एक मौजूदा पुस्तकालय है जिसका मैं उपयोग कर सकता हूं। चूंकि यह सीधे एक ऑडियो केबल पर जा सकता है और फोन नेटवर्क के माध्यम से नहीं, सैद्धांतिक रूप से हम 56kbps या जो भी मानक दिन में वापस आ गया था, उससे बहुत बेहतर कर सकते हैं, लेकिन व्यवहार में कौन जानता है कि हमें क्या मिलेगा।
यहाँ और यहाँ पर / r / techsupportmacgyver पर और / r / जंग में इतने उत्कृष्ट सुझावों में योगदान देने वाले सभी का धन्यवाद । इस "मॉडेम" को जल्द ही लागू किया जाएगा और फिर मैं इसे एक उपसंहार के साथ समाप्त करूंगा। मुझे लगता है कि मैं भविष्य में उपयोग करने के लिए अन्य हताश लोगों के लिए कहीं और अपना कोड डाल सकता हूं --- शायद यह भी अजीब एक्सफिलिएशन टूल्स का भंडार है जो हाथ से मरने वाली मशीन में टाइप करना आसान है? हम देखेंगे क्या होता है।
अद्यतन 5 : यह मुझे ALSA और मेरे सस्ते StarTech USB ऑडियो कैप्चर डिवाइस (प्राप्त लैपटॉप पर कोई बिल्ट लाइन नहीं) के साथ लंबे समय तक कुश्ती में लगा, और कई झूठे मेरे स्वयं के ट्रांसमिशन प्रोटोकॉल को रोल करने की कोशिश करने लगे, लेकिन अंत में कुछ की सलाह के तहत हैम रेडियो उत्साही मेरे दोस्त मैंने150 बॉड पर चलनेवाले आरटीटीवाई लाइन प्रोटोकॉल को लागू किया, जो व्यवहार में मुझे प्रति सेकंड लगभग 10 बाइट्स देता है। यह सुपर फास्ट नहीं है, लेकिन यह काफी विश्वसनीय है। और मैं बहुत करीब से अपने 820KB फ़ाइल को स्थानांतरित कर रहा हूं, CRC32 चेकसम का उपयोग करके सत्यापित किया गया (पायथन से crc32 कार्यक्षमता का उपयोग करके)zlib
मॉड्यूल, जिसकी मुझे एक्सेस है)। इसलिए मैं जीत की घोषणा कर रहा हूं, और एक बार फिर धन्यवाद देना चाहता हूं! मैं कुछ और समय बिताने के लिए आगे की फाइलों को खोजूंगा जो पठनीय हैं और जिन्हें मैं स्थानांतरित कर सकता हूं, लेकिन नींव जगह में है। यह आप सभी के साथ काम करने में मजेदार रहा है!
अंतिम अद्यतन :
मरने वाली मशीन पर:
$ tar cf ./files
$ ./checksum.py ./files.tar 9999999
Part 1 checksum: -1459633665
$ ./zlib_compress.py ./files.tar
$ ./checksum.py ./files.tar.z 9999999
Part 1 checksum: -378365928
$ ./transmit_rust/target/debug/transmit ./files.tar.z
Transmitting files.tar.gz over audio using RTTY
Period size: 2048
Sample rate: 44100
Samples per bit: 294
Sending start signal.
Transmitting data.
nread: 2048
nread: 2048
...
nread: 2048
nread: 208
Transmission complete. Sending hold signal.
बचाव मशीन पर:
$ minimodem --rx -8 --rx-one -R 44100 -S 915 -M 1085 --startbits 3
--stopbits 2 --alsa=1 150 -q > ./files.tar.z
$ ./checksum.py ./files.tar.z
Part 1 checksum: -378365928
$ ./zlib_decompress.py ./files.tar.z
$ ./checksum.py ./files.tar
Part 1 checksum: -1459633665
:-)
python -m SimpleHTTPServer
। अब आप पोर्ट 8000 में http सर्वर के माध्यम से फाइल शेयर कर रहे हैं । उसी नेटवर्क में अन्य डिवाइस में एक ब्राउज़र खोलें और निम्नलिखित टाइप करें: और आप जो कुछ भी कर सकते हैं उसे डाउनलोड करना शुरू करें। http://<IP address>:8000