Ini adalah perintah safecat yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
safecat - menulis data ke file dengan aman
RINGKASAN
selamat suhu tujuan
PENGANTAR
selamat adalah program yang mengimplementasikan Profesor Daniel Bernstein's maildir algoritma untuk
salinan stdin aman ke file dalam direktori tertentu. Dengan selamat, pengguna ditawarkan
dua jaminan. Pertama, jika selamat mengembalikan status keluar yang berhasil, maka semua data adalah
dijamin akan disimpan di direktori tujuan. Kedua, jika file ada di
direktori tujuan, ditempatkan di sana oleh selamat, maka file tersebut dijamin
lengkap.
Saat menyimpan data dengan selamat, pengguna menentukan direktori tujuan, tetapi bukan file
nama. Nama file dipilih oleh selamat untuk memastikan bahwa tidak ada tabrakan nama file yang terjadi,
walaupun banyak selamat proses dan program lain yang mengimplementasikan maildir algoritma adalah
menulis ke direktori secara bersamaan. Jika nama file tertentu diinginkan, maka
pengguna harus mengganti nama file setelah selamat selesai. Secara umum, saat mengumpulkan data dengan
selamat, satu proses terpisah harus menangani penamaan, pengumpulan, dan penghapusan ini
file. Contoh proses tersebut adalah daemon, cron job, dan pembaca email.
KEANDALAN MASALAH
Mesin mungkin macet saat data sedang ditulis ke disk. Untuk banyak program, termasuk
banyak agen pengiriman surat, ini berarti data akan terpotong secara diam-diam. Menggunakan
Profesor Bernstein maildir algoritma, setiap file dijamin lengkap atau tidak ada.
Banyak orang atau program dapat menulis data ke direktori "spool" umum. Sistem seperti mh-
surat menyimpan file menggunakan nama numerik dalam direktori. Penulisan file yang tidak hati-hati dapat
menghasilkan tabrakan, di mana satu penulisan berhasil dan yang lainnya tampaknya berhasil tetapi
gagal. Strategi umum untuk mengatasi masalah ini melibatkan pembuatan file kunci atau lainnya
mekanisme sinkronisasi, tetapi mekanisme tersebut dapat mengalami kegagalan. Siapapun yang memiliki
menghapus $HOME/.netscape/lock untuk memulai netscape dapat membuktikan hal ini. NS maildir
algoritma kebal terhadap masalah ini karena tidak menggunakan kunci sama sekali.
THE maildir ALGORITMA
Seperti dijelaskan dalam maildir(5) selamat berlaku maildir algoritma dengan menulis data dalam enam
Langkah. Pertama, itu status()s dua direktori suhu dan tujuan, dan keluar kecuali keduanya
direktori ada dan dapat ditulis. Kedua, itu status()s nama suhu/waktu.pid.host,
dimana waktu adalah jumlah detik sejak awal 1970 GMT, pid adalah programnya
ID proses, dan tuan rumah adalah nama tuan rumah. Ketiga, jika stat () mengembalikan apa pun selain
ENOENT, program tidur selama dua detik, diperbarui waktu, dan mencoba stat () lagi,
terbatas beberapa kali. Keempat, program menciptakan suhu/waktu.pid.host. Kelima,
program NFS-menulis pesan ke file. Keenam, program tautan()s file ke
arah tujuan/waktu.pid.host. Pada saat itu data telah berhasil ditulis.
Selain itu, selamat memulai penghitung waktu 24 jam sebelum membuat suhu/waktu.pid.host, dan
membatalkan penulisan jika penghitung waktu kedaluwarsa. Setelah kesalahan, batas waktu, atau penyelesaian normal, selamat
mencoba untuk batalkan tautan() suhu/waktu.pid.host.
EXIT STATUS
Status keluar dari 0 (berhasil) menyiratkan bahwa semua data telah dikomit dengan aman ke disk. A
status keluar bukan nol harus dianggap berarti kegagalan, meskipun ada di luar
kesempatan itu selamat menulis data dengan sukses, tetapi tidak berpikir begitu.
Perhatikan lagi bahwa jika sebuah file muncul di direktori tujuan, maka dijamin untuk
lengkap.
If selamat selesai dengan sukses, maka akan mencetak nama file yang baru dibuat
(tanpa jalurnya) ke output standar.
DISARANKAN APLIKASI
Penggunaan yang menarik untuk selamat berlimpah, jelas, tetapi sebuah kata mungkin untuk menyarankan apa
mereka.
Jika Anda menjalankan Linux dan menggunakan qmail alih-alih sendmail, Anda harus mempertimbangkan untuk mengonversi
kotak masuk ke maildir untuk keandalannya yang unggul. Jika direktori home Anda sudah terpasang NFS,
qmail memaksa Anda untuk menggunakan maildir.
Jika Anda menulis aplikasi CGI untuk mengumpulkan data melalui World Wide Web, Anda mungkin menemukan
selamat berguna. Aplikasi web mengalami dua masalah utama. Penampilan mereka
menderita dari setiap penghentian atau kemacetan di internet; mereka tidak mampu untuk memperkenalkan
masalah kinerja mereka sendiri. Selain itu, aplikasi web tidak boleh meninggalkan
server dan database dalam keadaan tidak konsisten. Namun, ini mungkin terjadi jika skrip CGI
langsung mengobrak-abrik beberapa basis data - terutama jika basis data kelebihan beban atau lambat. Apa
terjadi ketika pengguna bosan dan mengklik "Berhenti" atau "Kembali"? Mungkin aktivitas database
selesai. Mungkin skrip CGI terbunuh, meninggalkan DB dalam keadaan tidak konsisten.
Pertimbangkan strategi berikut. Buat skrip CGI Anda membuang permintaannya ke spool
direktori menggunakan selamat. Segera kembalikan tanda terima ke browser. Sekarang browsernya
memiliki jaminan lengkap bahwa kiriman mereka diterima, dan kinerja yang dirasakan
aplikasi web Anda optimal.
Sementara itu, daemon spooler memperhatikan permintaan baru, mengambilnya dan memperbarui
basis data. Browser dapat diinformasikan bahwa permintaan mereka akan dipenuhi dalam X menit.
Hasilnya adalah kinerja yang optimal meskipun internet berubah-ubah. Selain itu, pengguna dapat
ditawarkan hampir 100% keandalan.
CONTOH
Untuk meyakinkan sendmail untuk menggunakan maildir untuk pengiriman pesan, tambahkan baris berikut ke
.teruskan file:
|AMAN BERANDA/Surat/tmp BERANDA/Surat/baru || keluar 75 #NAMA PENGGUNA
dimana AMAN adalah jalur lengkap selamat program HOME adalah jalan lengkap menuju
direktori home Anda, dan USERNAME adalah nama login Anda. Membuat perubahan ini kemungkinan akan membuahkan hasil
mati; banyak kampus dan perusahaan memasang direktori home pengguna dengan NFS. Menggunakan maildir untuk
kirim ke folder kotak masuk Anda membantu memastikan bahwa email Anda tidak akan hilang karena beberapa NFS
kesalahan. Tentu saja, jika Anda seorang Administrator Sistem, Anda harus mempertimbangkan untuk beralih ke
qmail.
Untuk menjalankan program dan menangkap outputnya dengan aman ke beberapa direktori, Anda dapat menggunakan shell
skrip seperti berikut.
#!/ bin / bash
MYPROGRAM=cat # Program yang ingin Anda jalankan
TEMPDIR=/ Tmp # Nama direktori sementara
DESTDIR=$HOME/work/data # Direktori untuk menyimpan informasi
try() { $* 2>/dev/null || gema TIDAK 1>&2 }
set `( try $MYPROGRAM | try safecat $TEMPDIR $DESTDIR ) 2>&1`
tes "$?" = "0" || keluar -1
tes "$1" = "TIDAK" && { rm -f $DESTDIR/$2; keluar -1; }
Skrip ini mengilustrasikan kesulitan dalam menulis program yang aman dengan shell. NS
script mengasumsikan bahwa program Anda mungkin menghasilkan beberapa output, tetapi kemudian gagal untuk menyelesaikan.
Tidak ada cara untuk selamat untuk mengetahui apakah program Anda berhasil diselesaikan atau tidak,
karena semantik shell. Akibatnya, safecat mungkin membuat file di
direktori data yang "lengkap" tetapi tidak berguna. Skrip shell menghapus file di
kasus itu.
Secara umum, cara paling aman untuk digunakan selamat berasal dari dalam program C yang memanggil
kucing aman dengan garpu() dan eksekutif(). Proses induk dapat secara sederhana membunuh() itu selamat
proses jika ada masalah yang berkembang, dan secara opsional dapat mencoba lagi. Apakah akan pergi ke ini?
masalah tergantung pada seberapa serius Anda melindungi data Anda. Bagaimanapun, selamat
tidak akan menjadi tautan lemah dalam aliran data Anda.
Gunakan safecat online menggunakan layanan onworks.net