rsync melalui VPN: percubaan semula yang menggunakan semula pemindahan yang rosak
Terowong yang terputus menamatkan sambungan, bukan data. Simpan serpihan dengan --partial-dir, jalankan semula salinan yang sama dan sahkan fail sebelum menerbitkannya.
Muat naik anda terhenti pada empat gigabait daripada arkib dua belas gigabait, dan tabiat yang dipelajari daripada pengurus muat turun berkata tekan sambung semula. rsync tidak akan menyambung semula aliran TCP, kerana aliran itu sudah hilang bersama penghantaran semula terakhir terowong. Apa yang boleh dilakukannya ialah menyimpan bait yang sudah diterima dan menggunakannya sebagai asas untuk percubaan seterusnya, iaitu mekanisme lain dengan set peraturan lain. Bendera yang anda pilih menentukan sama ada penggunaan semula itu berlaku sama sekali.
Percubaan semula membina semula keadaan, ia tidak menyambung semula aliran
Apabila sesi SSH terputus, di hujung jauh hanya tinggal apa yang sempat ditulis ke cakera, dan tiada yang lain. Tiada token sesi untuk disambung semula dan tiada nombor jujukan untuk dimainkan semula. Larian seterusnya membuka sambungan baharu, membaca sumber semula dan bertanya kepada penerima apa yang sudah ada padanya.
Soalan terakhir itulah sebabnya fail separa wajar disimpan. Salinan penerima memberi rsync sesuatu untuk dibandingkan, dan algoritma hanya menghantar perbezaan yang dapat dikenal pastinya. Ia masih pemindahan metadata baharu dan satu laluan baharu ke atas sumber, jadi masa yang dijimatkan berkadar dengan berapa banyak fail itu sepadan, bukan dengan sejauh mana sambungan sebelumnya pergi. Jika penerima tidak menyimpan apa-apa, percubaan seterusnya ialah salinan penuh, berapa banyak gigabait pun yang dipindahkan yang pertama.
Tentukan di mana serpihan yang boleh diguna semula tinggal
Tingkah laku lalai menulis fail separa pada laluan destinasi, yang menjadikan arkib separuh tertulis kelihatan di bawah nama akhir. --partial-dir memindahkannya ke direktori pilihan anda, dan manual menerangkan direktori itu sebagai disimpan untuk digunakan sebagai data oleh pemindahan kemudian. Nama relatif diselesaikan di bawah direktori destinasi, iaitu apa yang anda mahu apabila kedua-dua hujung mungkin mempunyai susun atur berbeza.
rsync -e ssh --partial-dir=.rsync-partial --info=progress2 -- \
large-archive.bin [email protected]:/srv/incoming/
Susunan juga penting di destinasi: direktori separa memerlukan ruang yang cukup untuk serpihan, dan volum memerlukan ruang yang cukup untuk fail siap juga. Mengisi volum sasaran di tengah-tengah pemindahan menghasilkan kegagalan yang kelihatan seperti masalah rangkaian tetapi bukan, dan ia boleh meninggalkan serpihan yang disimpan terpotong. Periksa ruang kosong pada hos penerima sebelum larian bermula, bukan selepas ia gagal. Beberapa saat dengan df -h melalui laluan SSH yang sama ialah ujian pelan yang paling murah mungkin.
Kebenaran ialah kebimbangan yang lebih kecil tetapi nyata. Direktori separa yang boleh ditulis oleh akaun tidak berkaitan membolehkan orang lain menggantikan kandungan yang akan dianggap oleh larian seterusnya anda sebagai sudah diterima. Simpan di bawah pemilikan akaun pemindahan, dan jangan letakkan di tempat perkhidmatan lain menerbitkan.
Jalankan salinan yang sama, bukan yang lebih pintar
Penggunaan semula hanya terpakai apabila sumber dan destinasi masih menerangkan objek yang sama. Laluan sama, nama sama, fail sama. Menamakan semula sumber atau menuding ke direktori destinasi lain memulakan perbandingan baharu terhadap tiada yang berguna.
Jangan tambah --whole-file semasa mengharapkan tingkah laku delta. Pilihan itu memberitahu rsync menyalin seluruh fail tanpa perbandingan checksum bergolek, yang merupakan pilihan wajar pada pautan tempatan pantas dan tepat salah selepas muat naik jarak jauh yang gagal. --inplace juga mengubah cerita: ia menulis terus ke fail destinasi, jadi gangguan meninggalkan fail yang mencampurkan kandungan lama dan baharu tanpa serpihan berasingan untuk berpatah balik.
Bar kemajuan melaporkan kemajuan agregat pemindahan. Ia bukan isyarat penyiapan. Nombor yang mencapai seratus peratus semasa sambungan masih terbuka bermakna data telah ditolak, bukan bahawa penerima telah menamakan semula, menyegerakkan atau menerima apa-apa.
Terima objek hanya selepas ia sepadan
Sahkan status keluar dahulu, kemudian bandingkan hasilnya daripada mempercayai ketiadaan ralat. Semakan saiz menangkap kebanyakan pemindahan terpotong; perbandingan checksum menangkap selebihnya, dan kedua-duanya murah berbanding menjalankan muat naik semula.
Jika arkib diterbitkan oleh proses hiliran, buat proses itu menunggu fail yang diterima. Serpihan tersimpan yang mendarat di direktori yang dipantau di bawah nama akhir akan diambil oleh imbasan seterusnya, dan ralat pengguna akan mengenai input rosak dan bukan pemindahan yang tidak pernah selesai.
Biarkan sumber itu sehingga penerima mengesahkan. Menjana semula arkib antara percubaan mengubah asas perbandingan, dan larian seterusnya sama ada memindahkan hampir semuanya atau menghasilkan fail yang tidak sepadan dengan sumber lama mahupun baharu.
Apabila pautan, bukan bendera, yang menjadi had
Overhed pengepala dan protokol ialah satu kos pemindahan, dan jarang ia yang menentukan berapa lama fail besar diambil. Tingkah laku mula semula lebih penting: kaedah yang bertahan daripada terputus tanpa langkah manual menyampaikan fail yang boleh digunakan lebih awal daripada kaedah lebih pantas yang perlu bermula semula. Storan di kedua-dua hujung dan laluan pengesahan tergolong dalam perbandingan yang sama.
Bandingkan laluan alternatif yang dibenarkan dengan fail yang sama dan destinasi yang sama, dan catat dari mana setiap satu bermula semula selepas gangguan. Satu lajur itu memberitahu anda lebih banyak tentang muat naik dua belas gigabait melalui VPN daripada mana-mana kadar puncak yang diukur dalam ujian singkat.