อันดับแรกคำสารภาพ: ไม่ฉันไม่ได้สำรองข้อมูลที่ฉันควรมี
ประการที่สองสถานการณ์:
ฉันมี Dell XPS 9550 กับดิสก์สถานะของแข็งทำงานFedora 25
ผมทำงานในไฟล์และพยายามที่จะบันทึกไว้เมื่อฉันได้บอกผมพยายามที่จะบันทึกให้เป็นระบบแฟ้มแบบอ่านอย่างเดียว ปรากฎว่าระบบไฟล์ของฉันเป็นแบบอ่านอย่างเดียวตอนนี้และมีข้อผิดพลาดของ i / oทั่วทุกที่
ฉันสามารถบันทึกไฟล์บางส่วนโดยส่งอีเมลถึงตัวเองผ่านเว็บเบราว์เซอร์ที่เปิดอยู่ แต่นั่นล้มเหลวและฉันไม่สามารถเปิดใช้งานอีกครั้งได้ แต่ฉันยังคงเปิดไฟล์ที่น่าสนใจในตัวแก้ไข ฉันไม่สามารถบันทึกไฟล์ได้ทุกที่ แต่ฉันสามารถคัดลอกเนื้อหาได้ ถ้าเพียง แต่ฉันสามารถหาวิธีกำจัดไฟล์เนื้อหาฉันสามารถช่วยตัวเองให้ทำงานได้หลายเดือน
แต่มีข้อ จำกัด ที่น่ากลัวอยู่บ้าง ฉันพยายามที่จะใส่ไดรฟ์ USB แต่ไม่มีอุปกรณ์ใดที่แสดงถึงและmount
คำสั่งนั้นตายด้วย segfault ฉันสามารถพยายามที่จะ ssh ไปยังคอมพิวเตอร์เครื่องอื่น แต่ฉันได้รับ "ข้อผิดพลาดรถบัส" และมันก็ตาย ping
, dmesg
, ifconfig
ไม่มีของเหล่านี้ทำงาน แต่ฉันมีvim
และless
และls
และสามารถวางไข่bash
กรณีใหม่
ไม่มีlynx
ไม่มีไม่มีfirefox
google-chrome
ไม่มีไดรฟ์ดีวีดี
โดยทั่วไปดูเหมือนว่า SSD ของฉันจะเสียชีวิตแล้ว หรืออาจเป็นทั้งเมนบอร์ด ฉันมีเอกสารที่มีค่ามากยังคงอยู่ในหน่วยความจำฉันมีที่อยู่ IP และการเชื่อมต่อเครือข่ายฉันสามารถเรียกใช้คำสั่งแบบสุ่มไม่กี่คำและมีอีก 3,500 เส้นทางบนเส้นทางที่ฉันสามารถลองได้
cat
และgcc
ดูเหมือนว่าจะทำงาน ฉันสามารถเขียนไปยังไฟล์ใน / tmp ฉันมีipython
อินสแตนซ์ที่ทำงานอยู่ซึ่งดูเหมือนว่าจะยังทำงานอยู่
ดังนั้น ... สิ่งที่ฉันได้พยายามมาแล้วก็ล้มเหลว แต่ฉันรู้สึกว่ายังมีความเป็นไปได้หลายพันรายการ ฉันไม่ได้พิจารณาอะไร ฉันจะลบไฟล์เหล่านี้ออกจากคอมพิวเตอร์ที่กำลังจะตายได้อย่างไร?
จะต้องมีวิธี
อัปเดต : สิ่งใหม่:
- ฉันสูญเสียการเชื่อมต่อเครือข่ายเนื่องจากความโง่ของตัวเอง
- ฉันเขียนสคริปต์ Python เพื่อแทนที่
cp
และcp -r
- ถ้าฉันไม่พบวิธีสร้าง
/dev
รายการสำหรับการ์ด SD หรือไดรฟ์ USB วิธีที่ดีที่สุดของฉันสำหรับการรับข้อมูลดูเหมือนจะเป็นหน้าจอและอาจเป็นลำโพง / สายสัญญาณเสียง - ฉันกำลังเขียนสคริปต์เพื่อลองอ่านไฟล์และส่งออกไฟล์ที่สามารถอ่านได้
ข้อเสนอแนะยังคงยินดีอย่างมาก!
อัปเดต 2 : สิ่งใหม่กว่า:
- ในคอมพิวเตอร์ที่กำลังจะตายฉันเขียนสคริปต์ Python ที่จะอ่านไฟล์ทีละบิตและพยายามถ่ายทอดบิตเหล่านั้นโดยการกระพริบหน้าจอสีเดียวหรืออื่น ตอนนี้มันกำลังพยายามทำโค้ดสองบิตโดยที่สีแดงสีเขียวสีน้ำเงินและสีขาวล้วนเป็นคู่สองบิต อย่างไรก็ตามมันใช้งานไม่ได้ดีดังนั้นฉันอาจเปลี่ยนเป็นสองสีและทำทีละบิต
- ในแล็ปท็อปอื่นของฉัน (Thinkpad รุ่นเก่าที่ไว้ใจได้ที่ฉันยอมแพ้สำหรับ XPS ใหม่ที่ร้อนแรงนี้) ฉันเขียนสคริปต์ที่อ่านจากเว็บแคมโดยใช้ไลบรารี OpenCV Python แนวคิดก็คือให้ถอดรหัสรหัสที่ส่งมาจากคอมพิวเตอร์เครื่องอื่น ปัญหาคืออัตราเฟรมจากกล้องนั้นเท่ากับ 15 เฟรมต่อวินาทีซึ่งหมายความว่าถ้าฉันมีการถ่ายโอนที่สมบูรณ์แบบไม่มีข้อผิดพลาดอัตราข้อมูลสูงสุดของฉันจะเป็น 30 บิตต่อวินาทีเช่น 225 ไบต์ต่อวินาที นั่นคือ 324k ต่อวัน
- ใน XPS ที่กำลังจะตายฉันสามารถใช้
tar
เพื่อแพ็คไฟล์ที่ต้องการลงในไฟล์เก็บถาวรเดียวซึ่งคือ 1.7 MB แต่น่าเสียดายที่gzip
,bzip2
,xz
,lzop
และสิ่งสาธารณูปโภคการบีบอัดจะไม่สามารถใช้ได้ แต่ใช้zlib
โมดูลPython ของฉันสามารถบีบอัดไฟล์นี้ลงไปที่ 820KB ด้วยขนาดดังกล่าวฉันอาจได้รับสิ่งนี้ส่งไปในอีกไม่กี่วัน - เนื่องจากวิธีการถ่ายโอนนี้มีแนวโน้มที่จะเกิดข้อผิดพลาดได้ง่ายมากฉันจะใช้รหัส Hamming บน XPS เพื่อเพิ่มการแก้ไขข้อผิดพลาดเมื่อส่งข้อมูล
- มีแนวโน้มว่าจะเกิดภาวะแทรกซ้อนเพราะนั่นคือสิ่งที่เกิดขึ้น แต่อย่างน้อยก็ดูเหมือนจะเป็นไปได้ที่จะดึงข้อมูลนี้ออกมา!
- เนื่องจากนี่ยังเป็นวิธีที่ค่อนข้างน่าเบื่อในการส่งข้อมูลฉันจึงมองหาไดรเวอร์ USB อนุกรมเพิ่มเติม โมดูลที่ผมได้พยายามที่จะโหลด (
usb-serial-simple
,usb-debug
,safe-serial
) ให้ I / O ผิดพลาด ฉันไม่คิดว่ามันสร้างไว้ในเคอร์เนลด้วยเนื่องจากไม่มีอุปกรณ์ / dev / ttyUSB * อยู่
ขอบคุณสำหรับคำแนะนำของทุกคนจนถึงตอนนี้ --- ฉันรู้ว่านี่ไม่ใช่คำถามที่ชัดเจนเนื่องจากพวกคุณไม่รู้ว่าโปรแกรมหรือไฟล์ใดที่สามารถอ่านได้ล่วงหน้า ยังเปิดรับข้อเสนอแนะที่ดีกว่าวิธีวิดีโอนี้!
ปรับปรุง 3 : สิ่งใหม่ล่าสุด
- ฉันได้เว็บแคม PS3 Eye และหลังจากปิดใช้งานอัตราขยายและการรับแสงอัตโนมัติฉันกำลังอ่านข้อมูลจาก XPS ได้สำเร็จแม้ว่าจะมีข้อผิดพลาด 1 ไบต์ต่อวินาที นี่คือความสำเร็จที่ยิ่งใหญ่ --- ข้อมูลแรกได้ถูกกรอง! แต่อัตราช้าเกินไปที่จะเอา 820KB ออกมาในเวลาที่เหมาะสมและอัตราความผิดพลาดสูงเกินไป
- ปัญหาคือการเขียนไปยังเทอร์มินัลช้าเกินไป การอัปเดตหน้าจอไม่ได้เป็นแบบทันทีทันใดขอบคุณ (ฉันคิดว่า) ความช้าของ
urxvt
เทอร์มินัลอีมูเลเตอร์ที่ฉันสามารถเข้าถึงได้ - ฉันค้นพบว่าฉันมีสิทธิ์เข้าถึงคอมไพเลอร์ Rust บน XPS ฉันเขียนสคริปต์การส่งใหม่โดยใช้ Rust เพื่อดูว่าจะปรับปรุงความเร็วการรีเฟรชเทอร์มินัลหรือไม่ แต่ก็ไม่ได้ช่วยอะไร
- เนื่องจากฉันไม่สามารถเพิ่มจำนวนเฟรมได้ฉันจึงต้องพยายามเพิ่มจำนวนข้อมูลที่ฉันได้รับต่อเฟรม แนวทางปัจจุบันของฉันมีลักษณะดังนี้:
ครึ่งขวายังคงเป็นสัญญาณนาฬิกากะพริบและปิดเพื่อทำเครื่องหมายการมาถึงของเฟรมใหม่ แต่ทางซ้ายตอนนี้เป็นกริดที่แต่ละเซลล์ถูกทำเครื่องหมายด้วยสี่เหลี่ยมสีแดงที่มุมแล้วเซลล์สีเขียวไปทางขวาและลงจากสี่เหลี่ยมสีแดงจะกระพริบเปิดและปิดเพื่อระบุบิต สี่เหลี่ยมสีแดงควรอนุญาตให้คอมพิวเตอร์ที่รับสัญญาณปรับเทียบตำแหน่งของเซลล์ ฉันยังไม่ได้รับข้อมูลใด ๆ ด้วยวิธีนี้ แต่มันเป็นสิ่งที่ฉันกำลังทำงานอยู่
- มีคนแนะนำว่าฉันมองไปที่การเขียนรหัส QR แทนรูปแบบสีเฉพาะกิจเหล่านี้ ฉันจะพิจารณาด้วยเช่นกันและอาจใช้สิ่งนั้นแทนแนวทางกริดนี้ การแก้ไขข้อผิดพลาดจะเป็นชัยชนะที่ดีเช่นเดียวกับความสามารถในการใช้ไลบรารีมาตรฐานในการถอดรหัส
- ฉันได้เรียนรู้ว่าฉันมีสิทธิ์เข้าถึง libasound (ไลบรารีเสียง ALSA) แต่ไม่ใช่ไฟล์ส่วนหัวที่เกี่ยวข้อง (
alsa/asoundlib.h
หรืออะไรก็ตาม) หากใครรู้วิธีการใช้ไลบรารี่ที่ใช้ร่วมกันโดยไม่มีส่วนหัวหรือสามารถช่วยฉันเขียนเฉพาะส่วนหัวด้านขวาเพื่อให้ฉันสร้างเอาต์พุตเสียงแล้วฉันก็จะมีวิธีใช้ไฟล์เสียงในการลบไฟล์ออก - อีกวิธีหนึ่งถ้าใครบางคนสามารถช่วยฉันจัดการอุปกรณ์ USB โดยไม่ต้องเข้าถึง libusb ดังนั้นฉันอาจทำอะไรกับมันได้บ้าง
ก้าวไปข้างหน้า!
อัพเดท 4 : สร้างสัญญาณเสียงออก!
ผู้ใช้ Francesco Noferi ทำงานได้ดีมากช่วยฉันใช้ไลบรารี ALSA ที่กล่าวถึงในการอัพเดทก่อนหน้านี้ คอมไพเลอร์ C มีปัญหา แต่ใช้คอมไพเลอร์สนิมก็สามารถที่จะใช้ FFI libasound
จะเรียกโดยตรงใน ตอนนี้ฉันได้เล่นข้อมูลของฉันผ่านเสียงและดูเหมือนว่าจะฟังเพลงที่หูของฉัน! ยังต้องได้รับการจัดตั้งช่องทางการสื่อสารที่แท้จริง แต่ฉันรู้สึกมีความหวังมาก ณ จุดนี้งานของฉันมีไว้เพื่อใช้โมเด็มดังนั้นหากใครมีคำแนะนำเกี่ยวกับวิธีที่ดีในการทำสิ่งที่ฉันหูทั้งหมด การปรับแบบอุดมคตินั้นใช้งานง่ายด้วยมือและ demodulation ซึ่งมีไลบรารี่ที่ฉันสามารถใช้ได้ ตั้งแต่นี้สามารถไปโดยตรงผ่านสายสัญญาณเสียงและไม่ผ่านเครือข่ายโทรศัพท์ในทางทฤษฎี เราสามารถทำได้ดีกว่า 56kbps หรืออะไรก็ตามที่เป็นมาตรฐานในวันนั้น แต่ในทางปฏิบัติแล้วใครจะรู้ว่าเราจะได้อะไร
ขอขอบคุณทุกคนที่ติดตามที่นี่และที่ / r / techsupportmacgyverและที่ / r / rustมีส่วนร่วมในคำแนะนำที่ยอดเยี่ยมมากมาย จะได้รับ "โมเด็ม" นี้ใช้งานได้ในไม่ช้าจากนั้นฉันจะจบเรื่องนี้ด้วยบทส่งท้าย ฉันคิดว่าฉันอาจวางโค้ดของฉันไว้ที่ไหนสักแห่งสำหรับคนที่สิ้นหวังคนอื่น ๆ เพื่อใช้ประโยชน์ในอนาคต --- อาจเป็นที่เก็บเครื่องมือการกรองแบบแปลก ๆ ที่ง่ายต่อการพิมพ์ลงในเครื่องที่ตายแล้วด้วยมือ? เราจะดูว่าเกิดอะไรขึ้น
UPDATE 5 : มันใช้เวลานานในการต่อสู้กับ ALSA และอุปกรณ์บันทึกเสียง USB StarTech USB ราคาถูกของฉัน (ไม่มีสายเชื่อมต่อในแล็ปท็อปที่รับ) และการเริ่มต้นผิดพลาดหลายครั้งพยายามที่จะม้วนโปรโตคอลการส่งผ่านของตัวเอง เพื่อนผู้ที่ชื่นชอบวิทยุฮามของฉันฉันใช้โปรโตคอล RTTY บรรทัดที่ทำงานที่ 150 baud ซึ่งในทางปฏิบัติให้ฉันประมาณ 10 ไบต์ต่อวินาที มันไม่เร็วมาก แต่น่าเชื่อถือพอสมควร และฉันเกือบจะทำการถ่ายโอนไฟล์ 820KB ของฉันแล้วตรวจสอบโดยใช้การตรวจสอบ CRC32 (ใช้ฟังก์ชั่น crc32 จาก Pythonzlib
โมดูลซึ่งฉันสามารถเข้าถึง) ดังนั้นฉันจึงประกาศชัยชนะและต้องการขอบคุณอีกครั้ง! ฉันจะใช้เวลามากขึ้นในการหาไฟล์เพิ่มเติมที่สามารถอ่านได้และฉันสามารถถ่ายโอนได้ แต่มีการวางรากฐาน มันสนุกมากที่ได้ทำงานกับคุณทุกคน!
การปรับปรุงครั้งสุดท้าย :
บนเครื่องที่กำลังจะตาย:
$ 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
ไปที่ไดเรกทอรีที่คุณมีไฟล์และออกคำสั่ง ตอนนี้คุณมีการแชร์ไฟล์ผ่านเซิร์ฟเวอร์ HTTPในพอร์ต 8000 เปิดเบราว์เซอร์ในอุปกรณ์อื่นในเครือข่ายเดียวกันและพิมพ์สิ่งต่อไปนี้ http://<IP address>:8000
และเริ่มดาวน์โหลดทุกสิ่งที่คุณทำได้