Ini adalah perintah vdmfec yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa stasiun kerja online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
vdmfec - Blokir ECC untuk file
RINGKASAN
vdmfec [-v] [-d] [-b Ukuran blok] [-N N] [-k K] [berkas]
vdm_encode [-v] [-b Ukuran blok] [-N N] [-k K] [berkas]
vdm_decode [-v] [-b Ukuran blok] [-N N] [-k K] [berkas]
DESKRIPSI
vdmfec membaca aliran input dan menambahkan blok koreksi kesalahan sehingga besar berturut-turut
bagian dari aliran output mungkin rusak, dan data dipulihkan. Sebagai contoh,
disket biasanya kehilangan seluruh sektor sekaligus, atau kelompok sektor terkait, atau bahkan
seluruh trek. Data yang ditulis ke disket dengan program ini dapat dipulihkan bahkan dengan
banyak kesalahan membaca.
Algoritma yang digunakan adalah kode Forward Error Correction (FEC) berbasis Vandermonde (VDM)
matriks di GF(2^8) karena Luigi Rizzo. Mengingat parameter FEC K dan N, dengan N lebih besar
dari K, N blok ditulis untuk setiap K blok input sedemikian rupa sehingga setiap blok K adalah
cukup untuk merekonstruksi data. Artinya, hingga N - K blok dari setiap kelompok N
blok dapat hilang tanpa kehilangan data.
Jumlah overhead dalam aliran keluaran mudah disesuaikan dengan memvariasikan K.N dan
blockize mengontrol jumlah total data yang ditulis. Tergantung pada jenis kesalahan Anda
harapkan, pengaturan yang berbeda mungkin lebih atau kurang berguna. Misalnya, Anda mungkin tidak berharap untuk
memiliki dua atau tiga sektor buruk di setiap trek (jika Anda melakukannya, saatnya untuk mengganti
disket!), tetapi Anda mungkin mengharapkan tiga sektor buruk pada dua atau tiga trek yang berdekatan
(kesalahan disket cenderung mengelompok).
PILIHAN
-v Cetak pesan informatif tentang proses encoding atau decoding ke stderr,
termasuk faktor ekspansi. Menggunakan -vv untuk mendapatkan informasi tentang setiap blok yang ada
membaca atau menulis.
-d Decode input daripada encoding. Menggunakan opsi ini setara dengan
memanggil program sebagai vdm_decode.
-b Ukuran blok
Atur ukuran blok FEC ke ukuran blok byte. Blocksize mungkin memiliki 'k' atau 'K'
ditambahkan, dalam hal ini ukuran blok diatur ke ukuran blok * 1024 byte. Ini
biasanya harus kelipatan dari blok media keluaran atau ukuran sektor (misalnya, 512,
1024, 18K, dll.), dan harus setidaknya 26 byte dalam versi 1. Default 1024.
-n N -k K
Atur parameter FEC N dan K. N harus lebih besar dari 2 dan kurang dari atau sama dengan
256. K harus lebih besar dari 0 dan lebih kecil dari N. Default N=18, K=14.
Perhatikan bahwa parameter N, K, dan ukuran blok TIDAK ditulis ke output! Kamu harus
tentukan sama parameter saat Anda menjalankan dekoder. (Sebenarnya, decoder mampu
secara eksplisit mendeteksi nilai K yang tidak valid, tetapi ukuran blok atau nilai N yang salah akan
mengakibatkan blok buruk dan kegagalan decode.)
Dekoder mampu membaca dari media yang tidak dapat dicari seperti pipa, namun, buffer
underruns tidak terdeteksi dan akan mengakibatkan kegagalan. Juga, ketika membaca dari pipa,
seluruh file harus dibaca. Membaca dari aliran yang dapat dicari bisa lebih cepat karena hanya K
blok yang baik dari N perlu dibaca.
Encoder menyimpan chunk dan block id yang digunakan untuk mendeteksi blok yang tidak sesuai pesanan, tetapi
kesalahan tersebut (yang terkadang dapat terjadi karena kerusakan sistem file) tidak diperbaiki.
Satu-satunya jenis kesalahan yang dapat diperbaiki adalah in tempat korupsi data. Di dalam
khususnya, blok yang hilang (seperti dari paket yang hilang) mengakibatkan kegagalan dekode, bahkan ketika K
blok yang baik tersedia. Program ini terutama ditujukan untuk memulihkan data yang hilang karena
membaca kesalahan pada media tetap seperti disket; beberapa program dan perpustakaan lainnya adalah
tersedia yang menggunakan FEC untuk menangani kesalahan lain (biasanya paket jaringan).
CONTOH
Pertimbangkan disket dengan 80 track, 2 head, dan 18 sektor 512-byte per track (standar
disket 1.44 MB).
bzip2 < file | vdmfec > /dev/fd0
menggunakan parameter default -b1k -n18 -k14, menyimpan hingga ~1.1MB input terkompresi
data, menulis satu (dua sisi) trek (18K) pada satu waktu, dan memungkinkan 4 cluster buruk (8
sektor) per trek.
vdmfec -d /dev/fd0 | bunzip2 > file
memulihkan file asli.
vdm_encode -b18k -n80 -k70 file.img > /dev/fd0
menulis seluruh disket, menyimpan hingga ~1.23MB data, dan memungkinkan banyak kesalahan pada 10
trek dua sisi yang berbeda.
vdm_decode -b18k -n80 -k70 /dev/fd0 > file.img
memulihkan data dan membaca tidak kurang dari 70 lagu. Perhatikan bahwa vdm_decode keluar dengan a
status tidak nol pada kegagalan, sehingga konstruksi seperti
vdm_decode /dev/fd0 > moo && tar -xvf moo
yang mungkin.
dd if=/dev/tape ibs=1024 conv=noerror,sinkronisasi | \
vdm_decode > file
Ini mungkin diperlukan untuk memulihkan data dari beberapa media yang tidak dapat dicari. Anda tentu saja bisa
cukup tulis output yang disandikan ke file normal, seperti pada
tar -cf - dir | gzip | vdm_encode -v > dir.tgz.vdm
PELAPORAN BUG
Laporkan bug ke Tom Holroyd[email dilindungi]>.
Gunakan vdmfec online menggunakan layanan onworks.net
