Pertama, pengakuan: tidak, aku tidak't melakukan backup saya harus memiliki. Kedua, situasi: Saya punya Dell XPS 9550 dengan solid state disk berjalan Fedora 25.
Saya bekerja pada sebuah file dan mencoba untuk menyimpannya ketika saya diberitahu saya mencoba untuk menyimpan ke read-only filesystem. Ternyata saya filesystem hanya-baca sekarang dan ada i/o error semua tempat.
Saya mampu untuk menyimpan beberapa file dengan email mereka untuk diri sendiri melalui buka web browser, tapi yang jatuh dan I'm mampu untuk peluncuran itu. Tapi aku masih punya file bunga terbuka di editor. Saya dapat't tampaknya menyimpan file di mana saja, tapi saya dapat menyalin isinya. Jika saja aku bisa menemukan cara untuk membawa isi file, saya bisa menyelamatkan diri bulan bekerja.
Tapi ada beberapa yang mengerikan keterbatasan. Aku berusaha untuk memasukkan drive USB, tetapi tidak ada perangkat muncul untuk mewakili itu, dan gunung
perintah meninggal dengan segfault. Saya dapat mencoba untuk ssh ke komputer lain, tapi saya mendapatkan "bus kesalahan" dan itu yang mati. ping
, dmesg
, ifconfig
, tidak satupun dari mereka bekerja. Tapi aku punya vim
dan kurang
dan ls
dan dapat menelurkan baru bash
kasus.
Tidak ada lynx
, tidak ada firefox
, tidak ada google chrome
. Ada's tidak ada DVD drive.
Pada dasarnya tampaknya saya SSD telah meninggal. Atau mungkin seluruh motherboard. Saya memiliki dokumen-dokumen yang bernilai besar masih dalam memori, saya mendapat IP address dan koneksi jaringan, saya dapat menjalankan beberapa random perintah dan memiliki 3500 lebih di jalan yang aku bisa mencoba.
kucing
dan gcc
tampaknya untuk bekerja. Saya dapat menulis ke file di /tmp. Saya telah berjalan ipython
contoh yang tampaknya masih bekerja.
Jadi... apa yang saya'sudah mencoba sejauh ini telah gagal. Tapi aku merasa seperti masih ada seribu kemungkinan. Apa aku tidak mengingat? Bagaimana saya bisa mendapatkan file-file dari saya sekarat komputer?
Harus ada cara.
UPDATE: barang Baru:
cp
dan cp -r
/dev
masuk kartu SD, atau USB drive, kemudian saya taruhan terbaik untuk mendapatkan data tampaknya menjadi layar dan mungkin speaker/audio kabel. tar
untuk paket file yang diinginkan ke dalam satu arsip, 1,7 MB. Sayangnya, gzip
, bzip2
, xz
, lzop
dan apapun kompresi utilitas yang tersedia. TAPI menggunakan Python's zlib
modul yang saya dapat memampatkan file ini ke 820KB. Mengingat itu, aku mungkin bisa mendapatkan hal ini dikirim dalam beberapa hari. usb-serial-sederhana
, usb-debug
, aman-serial
) memberikan i/o error. Saya don't pikir itu's dibangun di kernel, baik, karena tidak ada /dev/ttyUSB* perangkat hadir.
Terima kasih untuk semua orang's saran sejauh---aku tahu ini isn't bahkan pertanyaan yang terdefinisi dengan baik karena kalian don't tahu di muka yang program/file yang bisa dibaca atau tidak. Masih terbuka untuk saran yang lebih baik dari video ini pendekatan!
UPDATE 3: hal-hal Terbaru urxvt
terminal emulator yang saya memiliki akses ke.alsa/asoundlib.h
atau apa pun). Jika ada yang tahu bagaimana memanfaatkan ruang perpustakaan tanpa header, atau bisa membantu saya menulis yang tepat header untuk membiarkan saya menghasilkan output audio, kemudian saya bisa memiliki sebuah audio berbasis cara mendapatkan file. libasound
. I've sekarang dimainkan sekelompok data saya di atas audio dan itu terdengar seperti musik di telinga saya! Masih perlu untuk mendapatkan saluran komunikasi yang mapan, tapi aku'm merasa sangat berharap. Pada saat ini pekerjaan saya adalah pada dasarnya untuk melaksanakan modem, jadi jika ada yang punya panduan tentang cara-cara yang baik untuk melakukan itu saya'm all ears. Idealnya modulasi yang's mudah untuk menerapkan dengan tangan dan demodulasi yang ada's perpustakaan yang ada dapat saya gunakan. Karena ini dapat pergi langsung melalui kabel audio dan bukan melalui jaringan telepon, theoretically kita dapat melakukan jauh lebih baik dari 56kbps atau apapun yang standar adalah kembali pada hari, tapi dalam praktek yang tahu apa yang kita'll mendapatkan.
Terima kasih untuk semua orang mengikuti bersama di sini dan di /r/techsupportmacgyver dan di /r/karat memberikan kontribusi begitu banyak saran yang sangat baik. Akan mendapatkan "modem" dilaksanakan segera dan kemudian saya'll menyelesaikan ini dengan sebuah epilog. Saya pikir saya mungkin menempatkan kode saya di suatu tempat untuk putus asa orang-orang untuk membuat penggunaan di masa depan---bahkan mungkin repositori aneh exfiltration alat-alat yang mudah untuk mengetik menjadi mati mesin dengan tangan? Kami'll melihat apa yang terjadi.
UPDATE 5: butuh waktu yang lama bergulat dengan ALSA dan murah saya StarTech USB audio capture perangkat (tidak ada builtin baris dalam menerima laptop), dan banyak palsu mulai mencoba untuk roll saya sendiri protokol transmisi, tapi akhirnya berdasarkan saran dari beberapa radio Ham antusias teman-teman saya aku dilaksanakan RTTY line protocol berjalan di 150 baud, yang dalam prakteknya memberikan saya mungkin sekitar 10 byte per detik. It's tidak super cepat tapi itu's cukup handal. Dan saya'm sangat hampir selesai transfer saya 820KB file, diverifikasi menggunakan CRC32 checksum (menggunakan crc32 fungsi dari Python's zlib
modul, yang saya memiliki akses untuk). Jadi saya'm menyatakan kemenangan, dan ingin memberikan saya terima kasih sekali lagi! I'll menghabiskan lebih banyak waktu mencari lagi file-file yang dapat dibaca dan yang aku bisa jemput, tapi dasar di tempat. It's menyenangkan bekerja dengan anda semua!
FINAL UPDATE:
Pada mati mesin: $ 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.
Pada penyelamatan mesin:
$ 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
:-)
berikut ini's contoh libasound program dengan cukup definisi untuk mendapatkan dasar 2-channel 44.1 k wav output akan tanpa header.
EDIT: I'm benar-benar tidak yakin jika lurus ke atas dumping data wav yang akan bekerja, seperti suara saat merekam bisa dengan mudah merusak, tapi anda mungkin bisa melakukan sesuatu seperti sebuah gelombang sinus dari bit pada frekuensi tinggi yang lebih handal
EDIT2: jika aplay hadir dan bekerja anda juga dapat menggunakan itu dan hanya menulis sebuah program yang output audio baku dan pipa itu ke aplay atau apa saja yang bisa memainkan audio
EDIT3: modifikasi itu untuk tidak menggunakan header di semua
jika -lasound doesn't kompilasi, add-L/path/mana/libasound/berada/terletak
/*
gcc alsa_noheader.c -lasound
cat stuff.wav | ./a.out
*/
typedef unsigned int uint;
typedef unsigned long ulon;
int printf(char*, ...);
void* malloc(long);
long read(int fd, void* buf, ulon count);
int snd_pcm_open(void**, char*, int, int);
ulon snd_pcm_hw_params_sizeof();
int snd_pcm_hw_params_any(void*, void*);
int snd_pcm_hw_params_set_access(void*, void*, int);
int snd_pcm_hw_params_set_format(void*, void*, int);
int snd_pcm_hw_params_set_channels(void*, void*, uint);
int snd_pcm_hw_params_set_rate_near(void*, void*, uint*, int*);
int snd_pcm_hw_params(void*, void*);
int snd_pcm_hw_params_get_period_size(void*, ulon*, int*);
long snd_pcm_writei(void*, void*, uint);
int snd_pcm_prepare(void*);
int snd_pcm_drain(void*);
int snd_pcm_close(void*);
int main(int argc, char* argv[])
{
void* pcm;
void* params;
int rate;
int nchannels;
ulon frames;
void* buf;
int bufsize;
long nread;
snd_pcm_open(&pcm, "default", 0, 0);
params = malloc(snd_pcm_hw_params_sizeof());
snd_pcm_hw_params_any(pcm, params);
/* 3 = rw_interleaved */
snd_pcm_hw_params_set_access(pcm, params, 3);
/* 2 = 16-bit signed little endian */
snd_pcm_hw_params_set_format(pcm, params, 2);
/* 2 channels */
nchannels = 2;
snd_pcm_hw_params_set_channels(pcm, params, nchannels);
/* sample rate */
rate = 44100;
snd_pcm_hw_params_set_rate_near(pcm, params, &rate, 0);
snd_pcm_hw_params(pcm, params);
snd_pcm_hw_params_get_period_size(params, &frames, 0);
bufsize = frames * nchannels * 2;
buf = malloc(bufsize);
/* read file from stdin */
while (nread = read(0, buf, bufsize) > 0)
{
if (snd_pcm_writei(pcm, buf, frames) == -29)
{
printf("W: underrun\n");
snd_pcm_prepare(pcm);
}
}
snd_pcm_drain(pcm);
snd_pcm_close(pcm);
return 0;
}
Bagaimana anda hex-menyandikan data dan output halaman per halaman ke terminal?
Anda dapat menambahkan awalan dengan offset dalam biner sehingga anda dapat dengan mudah beregenerasi halaman (untuk koreksi manual?)
Kemudian pada komputer yang berbeda menggunakan beberapa software OCR untuk memindai halaman.
80x25 terminal akan menghasilkan 1000 byte per halaman (minus beberapa ruang untuk awalan). Jadi di kira-kira 1000 halaman anda bisa mendapatkan data anda. Bahkan di salah satu halaman per detik, yang's kurang dari 20 menit.
Hex pengkodean lebih mudah untuk menulis dan juga menyediakan bahan baku berupa koreksi kesalahan (hanya ada 16 berlaku simbol-simbol).
anda dapat mengatur koneksi jaringan? ssh mungkin sedikit terlalu banyak, tetapi jika anda dapat menggunakan netcat pada 2 mesin anda mungkin bisa untuk transfer data. satu dalam mengirimkan mode, satu dalam mode mendengarkan. Jika semua yang perlu anda lakukan adalah mentransfer teks maka ini 'bisa' menjadi solusi..
edit: nggak apa-apa, hanya membaca bahwa anda kehilangan koneksi jaringan anda dan juga..
Kode QR pendekatan bisa menjadi baik. Anda bisa muat sebanyak yang anda bisa pada layar, dan menyegarkan mereka sesegera terminal memungkinkan anda. Kemudian merekam XPS' layar dengan kamera (sebagai lawan menggunakan webcam), dan hanya bekerja pada mengartikan video anda've diselamatkan. Mungkin akan membantu untuk menggunakan slow motion capture bahkan.
Anda may dapat email sendiri dari commandline, termasuk mengirim file.
Sesuatu seperti:
$ mail -s "Hello World" [email protected] < /tmp/urgentFileToSave.txt
harus bekerja.
Beberapa contoh lebih lanjut: http://www.binarytides.com/linux-mail-command-examples/
Anda bisa menghapus SSD dari mesin anda dan dd
/photorec
/etc pada mesin bekerja lain.
Berikut ini's Dell service manual untuk 9550 - lihat bagian untuk "Menghapus solid-state drive". Setelah anda menghapus drive, anda bisa mendapatkan eksternal M. 2 USB kandang dan melampirkan disk ke komputer lain untuk memulihkan data anda.
Long shot, tapi beberapa distro telah ham radio protokol yang dibangun di. Satu yang umum adalah fldigi. Mencoba yang fldigi.
Jika anda memiliki ini atau yang lain, mereka mengkonversi teks ke audio, biasanya menggunakan beberapa variasi dari phase-shift keying. Output pergi ke speaker/headphone, dan diterima oleh yang stabil komputer di ruangan yang sama, listing pada mikrofon. (Ini menghilangkan ham radio yang mengirimkan dan menerima audio melalui gelombang udara).