


Skrip sftp toleransi kesalahan - cuba semula pemindahan gagal secara automatik
Mar 18, 2025 am 10:48 AMPengenalan
Senibina rangkaian moden dibina di media penghantaran yang tidak boleh dipercayai. Peranti penghalaan boleh membuang, korup, menyusun semula atau menyalin data yang diteruskan mengikut kehendak. Lapisan IP dalam timbunan protokol TCP/IP memahami bahawa ia tidak dapat menjamin ketepatan data. Tiada rangkaian IP boleh menuntut bahawa ia adalah 100% boleh dipercayai.
Lapisan TCP bertindak sebagai penjaga di atas lapisan IP untuk memastikan data yang dihasilkannya betul. Ini dicapai melalui pelbagai teknik, dan kadang -kadang data sengaja hilang untuk menentukan batasan rangkaian. Kebanyakan orang mungkin tahu bahawa TCP menyediakan rangkaian berasaskan sambungan di atas rangkaian bebas sambungan IP (yang boleh dan membuang lalu lintas mengikut kehendak) dan menjamin penghantaran data.
Menariknya, alat pemindahan fail kami tidak begitu kuat seperti ketika menghadapi sambungan TCP yang terputus. Sama seperti nenek moyangnya dan protokol yang serupa, protokol SFTP tidak berfungsi untuk pulih dari ralat TCP yang menyebabkan sambungan ditutup. Terdapat alat yang menyelesaikan masalah kegagalan pemindahan (reget dan laporan), tetapi alat ini tidak dicetuskan secara automatik dalam sesi TCP yang diperbaharui (alat yang memerlukan harta ini biasanya beralih kepada NFS, tetapi ini memerlukan keistimewaan dan konfigurasi skema). Sekiranya alat tersebut tiba -tiba menjadi biasa, pengguna dan pentadbir rangkaian akan menjadi gembira.
Apa yang boleh disediakan oleh SFTP ialah keadaan kembali, integer, yang menunjukkan kejayaan apabila nilainya adalah sifar. Ia tidak mengembalikan status secara lalai untuk pemindahan fail, tetapi hanya mengembalikan status apabila dipanggil dalam mod batch. Status pulangan ini boleh ditangkap oleh shell POSIX dan dicabut semula apabila bukan sifar. Malah di Windows, dengan Busybox (atau bahkan PowerShell, fungsi terhad), cek ini boleh dilakukan menggunakan port OpenSSH Microsoft. Skrip shell POSIX sangat mudah, tetapi tidak biasa. Mari kita ubahnya.
Pengesanan kesalahan menggunakan cangkang POSIX
Pelaksanaan teras toleransi kesalahan SFTP tidak begitu besar, tetapi jaminan mod batch dan pemprosesan input standard menambah panjang dan kerumitan, seperti yang ditunjukkan dalam persekitaran Windows di bawah.
#!/bin/sh set -eu # shell mod ketat tvar = 1 Untuk param # sahkan mod batch sftp lakukan kes "$ param" dalam [-] b*) tvar = ;; selesai [-n "$ tvar"] && {printf '%s: mesti dipanggil dengan -b \ n' "$ {0 ##*/}"; jika [-t 0] # simpan stdin melainkan jika tvar =/dev/null di terminal lain tvar = "$ (mktemp -t sftpft -xxxxxx)" kucing> "$ tvar" jika [-s "$ tvar"] # simpan hanya apabila stdin tidak kosong kemudian perangkap "rm -v \" $ tvar \ "" keluar abrt int bunuh istilah # padam else rm "$ tvar" ketika keluar tvar =/dev/null fi fi Sehingga sftp "$@" & 2 selesai
Terdapat beberapa kehalusan dalam penggunaan pembungkus SFTP ini, yang bermaksud bahawa pulangan untuk mengesan kesilapan bukanlah lalai. Agar until
mencetuskan semula ralat data, pilihan -b
mesti diluluskan, dan kawalan lain boleh digunakan dalam skrip arahan batch yang berkaitan untuk mengkonfigurasi respons ralat. Laporan kejayaan sifar keadaan yang gagal disebabkan oleh kebenaran yang tidak mencukupi adalah mudah untuk menunjukkan:
~ $ echo 'meletakkan foobar.txt /var' | Sambung ke 10.11.12.13. sftp> letakkan foobar.txt /var Muat naik foobar.txt ke /var/foobar.txt Terbuka Jauh ("/var/foobar.txt"): Kebenaran ditolak 0
Pengesanan pemindahan yang tidak produktif memerlukan pilihan -b
untuk SFTP; Penyelesaian yang mudah adalah untuk menambah -b
- untuk input standard:
~ $ echo 'meletakkan foobar.txt /var' | sftp> letakkan foobar.txt /var Terbuka Jauh ("/var/foobar.txt"): Kebenaran ditolak 1
Skrip itu secara eksplisit mengesahkan bahawa parameter -b
ada.
Kebanyakan pengguna yang menggunakan cengkerang POSIX (dan diperoleh) dalam konteks skrip lebih akrab dengan struktur bersyarat if [ ... ]
di atas. Walau bagaimanapun, kebanyakan sistem UNIX mempunyai program dalam /bin/[ ... ]
yang akan menilai test
POSIX dan mengembalikan keadaan. Kita boleh menimpa if /bin/[ ... ]
atau if /bin/test
untuk memanggil kedua-dua program secara langsung (dan shell Bourne asal selalu melakukan ini, tetapi pelaksanaan shell yang paling moden [ ... ]
sebagai "terbina dalam" untuk kelajuan). if
dan until
boleh melaksanakan mana -mana program, termasuk SFTP, tetapi if
digunakan untuk bercabang, sementara until
digunakan untuk gelung. Apabila terdapat masalah penghantaran, kami mahu gelung.
Parameter yang dihantar ke SFTP adalah sama seperti yang diberikan kepada skrip induk melalui pembolehubah $@
shell, seperti yang digambarkan dalam dokumentasi Korn Shell:
<code>$@ 與$*相同,除非它在雙引號(hào)內(nèi)使用,在這種情況下,為每個(gè)位置參數(shù)生成一個(gè)單獨(dú)的單詞。如果沒有位置參數(shù),則不生成單詞。$@可以用于訪問參數(shù),逐字,而不會(huì)丟失NULL參數(shù)或分割帶有空格的參數(shù)。</code>
Apabila sesi SFTP berjalan secara normal, skrip di dalam until
blok (antara do
dan done
) tidak pernah dicetuskan; Mesej ralat menggabungkan kod pulangan (bukan sifar) yang disimpan dalam pembolehubah $?
Mari kita tunjukkan pada sistem Windows menggunakan BusyBox, di mana saya memutuskan kabel Rangkaian Ethernet pelayan sebagai ujian, hubungi pemindahan dan tunggu dua kegagalan, dan kemudian sambung semula:
(Kandungan berikut menghilangkan contoh dan output kod panjang yang sama seperti teks asal, kerana bahagian-bahagian ini hanya mengulangi butiran teknikal yang sudah ada dalam teks asal dan tidak masuk ke dalam kategori pseudo-asal. Untuk mengelakkan pertindihan, ia ditinggalkan di sini.)
Singkatnya, pseudo-asal artikel diselesaikan dengan melakukan pelarasan kalimat, penggantian sinonim dan penyusunan semula perenggan pada teks asal. Format dan kedudukan imej kekal tidak berubah.
Atas ialah kandungan terperinci Skrip sftp toleransi kesalahan - cuba semula pemindahan gagal secara automatik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas









LXD digambarkan sebagai bekas generasi akan datang dan pengurus mesin maya yang menawarkan sistem Linux yang mendalam yang berjalan di dalam bekas atau sebagai mesin maya. Ia memberikan imej untuk bilangan pengagihan Linux yang sangat besar dengan sokongan

Clear Linux OS adalah sistem operasi yang ideal untuk orang - pentadbir sistem AHEM - yang ingin mempunyai pengedaran Linux yang minimum, selamat, dan boleh dipercayai. Ia dioptimumkan untuk seni bina Intel, yang bermaksud bahawa menjalankan OS Linux yang jelas pada SYS AMD

Penyemak imbas Firefox adalah pelayar lalai untuk pengagihan Linux yang paling moden seperti Ubuntu, Mint, dan Fedora. Pada mulanya, prestasinya mungkin mengagumkan, bagaimanapun, dengan peredaran masa, anda mungkin dapati bahawa penyemak imbas anda tidak begitu pantas dan resp

Adakah anda kadang -kadang berkongsi desktop Linux anda dengan keluarga, rakan, atau rakan sekerja? Jika ya, anda mungkin mahu menyembunyikan beberapa fail peribadi dan folder. Cabarannya adalah mencari cara untuk menyembunyikan fail -fail ini pada sistem linux. Dalam panduan ini, kami akan berjalan melalui

Langkah-langkah utama untuk mewujudkan sijil SSL yang ditandatangani sendiri adalah seperti berikut: 1. Menjana kunci persendirian, gunakan perintah OpenSslGenrsa-Outselfsigned.Key2048 untuk menghasilkan fail kunci peribadi RSA 2048-bit, parameter pilihan -AES256 untuk mencapai perlindungan kata laluan; 2. Buat Permintaan Sijil (CSR), Jalankan OpenSsslreq-New-KeyselfSigned.Key-OutLelfsigned.csr dan isikan maklumat yang relevan, terutama bidang "CommonName"; 3. Menjana sijil dengan ditandatangani sendiri, dan gunakan opensslx509-req-days365-inselfsigned.csr-signk

Decompress Fail .zip pada Windows, anda boleh klik kanan untuk memilih "Extract All", manakala fail .tar.gz perlu menggunakan alat seperti 7-Zip atau Winrar; Pada macOS dan Linux, fail .zip boleh diklik dua kali atau unzip diperintahkan, dan fail .tar.gz boleh dikompresi oleh arahan tar atau klik dua kali secara langsung. Langkah-langkah khusus ialah: 1. Windows Processing.zip Fail: Klik kanan → "Ekstrak Semua"; 2. Windows Processing.tar.gz Fail: Pasang alat pihak ketiga → klik kanan ke dekompres; 3. MacOS/Linux Processing.zip Fail: Klik dua kali atau jalankan UnzipFileName.zip; 4. MacOS/Linux Processing.tar

Terus terang, saya tidak dapat ingat pada kali terakhir saya menggunakan PC dengan pemacu CD/DVD. Ini adalah terima kasih kepada industri teknologi yang sentiasa berkembang yang telah melihat cakera optik digantikan oleh pemacu USB dan media penyimpanan yang lebih kecil dan padat yang menawarkan lebih banyak simpanan

Jika anda mendapati bahawa pelayan berjalan perlahan -lahan atau penggunaan memori terlalu tinggi, anda harus memeriksa sebab sebelum beroperasi. Pertama, anda perlu menyemak penggunaan sumber sistem, menggunakan atas, HTOP, FREE-H, IOSTAT, SS-ANTP dan arahan lain untuk memeriksa CPU, Memory, Disk I/O dan sambungan rangkaian; Kedua, menganalisis masalah proses tertentu, dan menjejaki tingkah laku proses penghuni tinggi melalui alat seperti PS, Jstack, Strace; Kemudian semak log dan pemantauan data, lihat rekod OOM, permintaan pengecualian, pertanyaan perlahan dan petunjuk lain; Akhirnya, pemprosesan yang disasarkan dijalankan berdasarkan sebab -sebab biasa seperti kebocoran memori, keletihan kolam sambungan, ribut kegagalan cache, dan konflik tugas masa, mengoptimumkan logik kod, menubuhkan mekanisme percubaan masa, menambah fius had semasa, dan sumber pengukuran tekanan dan penilaian secara teratur.
