OrangeBOX: Peranti Penyimpanan Sandaran Selamat Berasaskan OrangePI: 5 Langkah
OrangeBOX: Peranti Penyimpanan Sandaran Selamat Berasaskan OrangePI: 5 Langkah
Anonim
OrangeBOX: Peranti Penyimpanan Sandaran Selamat Berasaskan OrangePI
OrangeBOX: Peranti Penyimpanan Sandaran Selamat Berasaskan OrangePI
OrangeBOX: Peranti Penyimpanan Sandaran Selamat Berasaskan OrangePI
OrangeBOX: Peranti Penyimpanan Sandaran Selamat Berasaskan OrangePI

OrangeBOX adalah kotak sandaran storan jarak jauh all-in-one untuk mana-mana pelayan.

Pelayan anda boleh dijangkiti, rosak, dihapuskan dan semua data anda masih selamat di OrangeBOX dan yang tidak mahu misi yang mustahil seperti peranti sandaran apa yang baru anda pasangkan dan melihat petunjuk kemajuan tanpa melakukan apa-apa lagi (harap sihir asap tidak akan keluar pada akhir:)).

OrangeBOX adalah projek pertama saya yang kebanyakannya merupakan perisian, bukan penggodaman perkakasan. Ini pada dasarnya adalah NAS yang dibina khas dengan terpasang LCD.

Langkah 1: Bahagian Perkakasan

Bahagian Perkakasan
Bahagian Perkakasan
Bahagian Perkakasan
Bahagian Perkakasan
Bahagian Perkakasan
Bahagian Perkakasan

Orange PI zero adalah komputer papan tunggal sumber terbuka. Ia boleh menjalankan Android 4.4, Ubuntu, Debian. Ia menggunakan AllWinner H2 SoC, dan memiliki 256MB / 512MB DDR3 SDRAM (versi 256MB adalah versi Standard. Orange Pi Zero adalah untuk sesiapa sahaja yang ingin mula membuat dengan teknologi - bukan hanya menggunakannya. Ini adalah alat yang mudah, menyeronokkan dan berguna yang anda gunakan boleh digunakan untuk mula menguasai dunia di sekitar anda (https://www.orangepi.org/orangepizero/). Oleh itu, tepat untuk kita mari kita teruskan:)

  • Kotak logam / plastik / kayu (Saya telah menggunakan kotak cd-rw luaran Yamaha lama)
  • Orange PI Zero atau lebih baik (pinout GPIO mungkin berubah jika anda menggunakan model lain)
  • Skrin LCD 2x20 RGB
  • Mana-mana pemacu usb SFF 3.5 / LFF 2.55
  • Sata -> penyesuai usb. Perlu diingat bahawa sementara OrangePI tidak mengenakan had atas pada kapasiti pemacu maksimum namun banyak jambatan USB-ke-SATA (maksimum 2TB). PI Zero oren yang saya gunakan hanya mempunyai satu port USB 2.0 dengan kadar pemindahan berkesan maksimum 28 MB / s. Saya telah memilih USB3.0 (disiapkan untuk peningkatan masa depan) -> Jambatan SATA (jenama tidak akan disebutkan) dan ia melebihi hadnya, jadi lebih baik memilih jambatan yang terbukti menyokong pemacu yang lebih besar seperti jambatan berasaskan cip JMicron JMS567. Lakukan kajian anda sendiri sebelum membeli satu. Saya boleh hidup dengan had kelajuan dan cakera keras dengan menggunakan pemacu sata 2TB dalam projek ini (jika anda memasukkan pemacu yang lebih besar, ia akan dikenali tetapi OS hanya akan melihat 2TB pertama dari itu sehingga kapasiti selebihnya akan hilang).
  • 12V 2.5 A atau penyesuai amp yang lebih tinggi. Hitungkan kira-kira 500mA penggunaan normal untuk OPI Zero dan puncak 1.5A untuk pemacu LFF SATA standard. Berlebihan tidak akan menyakitkan. Dalam persediaan saya, Yamaha psu (apa yang dapat memberikan arus lebih dari cukup pada kedua-dua rel 12 + 5V) sayangnya meletup: (kerana menyusun suis utama ke GND sebentar jadi saya terpaksa melekat pada adaptor biasa, di sekurang-kurangnya ia menjadikan kotak itu beberapa gram lebih ringan.
  • Buck converter DC-DC 12V-> 5V. Saya menggunakan mini buck yang boleh disesuaikan seperti IronForge, berfungsi dengan sempurna.

Pilihan

Sekiranya anda sanggup membelanjakan + 10 $ maka anda boleh mendapatkan Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) yang merupakan faktor bentuk yang serupa dan menjadikan anda Gbe dan SATA3. Untuk ini pustaka pendawaian Libra PI boleh digunakan: https://github.com/OrangePiLibra/WiringPi tetapi kerana pin GPIO berbeza, ia adalah di luar ruang lingkup penulisan ini.

Anda juga boleh melakukan ini dengan Orange PI Plus2 baru yang mempunyai penyambung SATA dan anda boleh melangkau penggunaan penukar sata-> usb bersama-sama dengan hadnya. Sekiranya anda merancang untuk menggunakan FreeBSD atau BSD lain, siri Orange PI mungkin bukan pilihan terbaik kerana sokongan perkakasannya terhad (contohnya anda perlu menggunakan USB stick untuk boot). Untuk BSD adalah nasihat terbaik untuk menggunakan Raspberry PI. Baik kod C untuk LCD dan semua skrip shell boleh dibawa ke sistem UNIX lain.

Langkah 2: Reka Bentuk Perkakasan

Reka Bentuk Perkakasan
Reka Bentuk Perkakasan
Reka Bentuk Perkakasan
Reka Bentuk Perkakasan
Reka Bentuk Perkakasan
Reka Bentuk Perkakasan

Kotak Yamaha cukup untuk menyimpan semua ini, ia tidak akan mempunyai cukup ruang untuk PC Orange PI atau papan faktor bentuk Raspi biasa.

Ethernet dibawa keluar dengan alat pemanjang di bahagian belakang kotak. Ingat bahawa Orange PI sifar hanya mempunyai antara muka Ethernet 100mbit / s jika anda mahu lebih cepat, anda perlu menggunakan papan lain seperti model Asus Tinkerboard / RPI3B + / Lain-lain Orange PI.

PIN Keliru yang salah adalah satu-satunya kesalahan yang dapat anda buat dalam projek ini, oleh itu perlu menerapkan beberapa prinsip asas:

1, Sentiasa cuba menggunakan kabel berwarna yang sama dari TAMAT hingga TAMAT. Saya sendiri melakukan "kesilapan" yang sama dalam beberapa projek yang saya tidak melakukannya, hanya kerana saya tidak mempunyai kabel lelaki-lelaki / lelaki-wanita / wanita-wanita yang cukup lama dan saya memasang 2 bersama untuk meneruskan litar. Sekiranya anda tidak mendokumentasikan kerja anda dengan betul, ini boleh menyebabkan sakit kepala bertahun-tahun kemudian di mana anda perlu melakukan pembaikan, tingkatkan.

2, Sapukan sedikit hotglue pada penyambung. Sekiranya menggunakan kabel gaya arduino-starter kit ini mm / mf / ff yang tidak berkualiti tinggi, biasanya adalah biasa (terutamanya jika anda bergerak / mengangkut peranti) konektornya terlepas. Sekiranya anda tahu ia akan menjadi peranti penggunaan jangka panjang (mungkin digunakan sehingga ia pecah?!) Maka lebih baik menggunakan sedikit hotglue pada bahagian penyambung OrangePI dan LCD untuk memastikannya tetap bersama. Ini boleh dicairkan / dicakar dengan mudah di kemudian hari jika diperlukan.

3, Pendawaian sifar OrangePI Berita buruk adalah bahawa pinout Orange PI TIDAK sama dengan Raspberry PI 0/1/2/3 dan bahkan terdapat perbezaan antara model Orange PI lain. Cara terbaik untuk pergi adalah mendapatkan perpustakaan pendawaian (versi Orange PI Zero). Imejnya mungkin agak membingungkan tetapi ini adalah yang terbaik yang dapat saya temui. Yang satu adalah cermin 180 darjah yang lain. Walaupun imej bukan grafik CLI mungkin lebih sukar untuk difahami, ia adalah gambar yang paling lurus ke hadapan.

Anda selalu boleh membezakan 2 hujung soket dengan menganggap satu hujung sebagai hujung POSITIF dengan (+ 3.3 / + 5V) dan yang lain sebagai hujung NEGATIF (satu GND) -> ini adalah hujung penyambung yang menghadap ke port ETHERNET.

Dari jadual Wiring PI Zero, anda hanya memerlukan satu lajur yang akan dilupakan oleh wPI yang lain seperti mereka tidak akan berada di sana.

Oleh itu, sebagai contoh untuk menyambungkan LCD_E 15 (iaitu wPI 15!) Dan LCD_RS 16 (iaitu wPI 16!) Hitung pin dari hujung penyambung POSITIF (mudah dilakukan dengan pen atau pemutar skru kecil). Secara fizikalnya akan turun 4 pin dan 5 pin.

4, Kumpulan. Sekiranya ada kemungkinan meletakkan pin terpakai di sebelah satu sama lain (mengelompokkannya) selalu memilihnya, itu menjadikannya saling berpegang walaupun tanpa hotglue dan juga dalam projek lain apabila anda mempunyai 2x 4x 6x molex connectors anda boleh hanya memanfaatkan pin yang berada di sebelah satu sama lain. Berikut yang terbaik yang boleh anda lakukan ialah kumpulan 2-3-an (sesuai ketika menggunakan kabel pelompat yang selamat dari PC lama).

Pin yang digunakan untuk sambungan Skrin LCD OrangePI:

// GUNAKAN NOMBOR PIN WIRINGPI

#define LCD_E 15 // Dayakan Pin #define LCD_RS 16 // Daftar pilih pin #define LCD_D4 5 // Pin data 4 #define LCD_D5 6 // Pin data 5 #define LCD_D6 10 // Pin data 6 #define LCD_D7 11 // Pin data 7

Pin yang digunakan untuk kawalan lampu latar RGB

$ G tulis 1 0

$ G tulis 4 1 $ G tulis 7 1

Orange PI zero wPI pin 1, 4, 7. Satu-satunya keajaiban yang dapat dilakukan oleh LCD ini berbanding dengan standard fix blue atau fix backlight LCD di mana anda mempunyai katod tunggal yang perlu diturunkan ke GND yang mempunyai 3 untuk 3 warna. Merah, hijau dan biru. Dengan mengubah kombinasi mana yang dihidupkan, anda boleh mencampurkan warna yang berbeza dari warna asas ini tetapi hanya hujung yang tinggi tanpa warna kerana anda tidak dapat mengawal kecerahan warna (ia hidup atau mati).

Pencampuran warna aditif: menambah warna merah ke hijau menghasilkan kuning; menambah warna merah ke biru menghasilkan magenta; menambahkan hijau ke biru hasil sian; menambahkan ketiga-tiga warna utama bersama-sama menghasilkan putih.

Langkah 3: Sistem Operasi

Sistem operasi
Sistem operasi

Kerangka OrangeBOX naik dan linen Armbian (berdasarkan Debian Stretch) 4.14.18-sunxi dengan persekitaran firewall yang selamat, menyambung ke VPN dan menunggu arahan sandaran dari pelayan.

Prinsip reka bentuk:

Penyulitan cakera berasaskan Luks penuh (peranti itu sendiri tidak mengandungi kunci untuk membuka pemacu sandaran. Ia akan disalin sementara dari pelayan jauh ke ram / dev / shm, pemacu dibuka dan kunci dipadamkan. Setelah sandaran selesai pemacu ditutup dan OrangeBox mati secara automatik dalam 1 minit.)

-Semua perintah dan kunci dihantar dari pelayan jauh (peranti itu sendiri hanya mengandungi sertifikat vpn) ia tidak mempunyai akses APAPUN ke pelayan jauh walaupun ssh dari peranti ini diletupkan

-Sistem fail tempatan tidak disulitkan untuk dapat boot tetapi tidak mengandungi apa-apa yang berguna dan kerana pautan atas VPN sangat terhad di hujung yang lain walaupun dengan kehilangan sepenuhnya peranti, penyerang tidak dapat melakukan apa-apa

Muat turun Armbian Stretch dari

Jalankan sistem dan jalankan:

apt-get kemas kini && apt-get peningkatan

apt-get install sysvinit-core sysvinit-utils

Edit / etc / inittab, semua konsol boleh dilumpuhkan kerana kotak akan digunakan sebagai tanpa kepala. Komen bahagian berikut:

# 1: 2345: respawn: / sbin / getty 38400 tty1

# 2: 23: respawn: / sbin / getty 38400 tty2 # 3: 23: respawn: / sbin / getty 38400 tty3 # 4: 23: respawn: / sbin / getty 38400 tty4 # 5: 23: respawn: / sbin / getty 38400 tty5 # 6: 23: respawn: / sbin / getty 38400 tty6

Nyalakan semula kotak anda dan keluarkan systemd agar mempunyai sistem bebas bloatware sumber terbuka yang sebenar.

apt-get remove --purge --auto-remove systemd

Pasang beberapa pakej

apt-get install cryptsetup vim htop rsync screen gcc make git

Pasang perpustakaan wiringpi

cd / usr / src

git klon https://github.com/xpertsavenue/WiringOP-Zero.git cd WiringOP-Zero chmod + x./build./build

Buat pengguna oren untuk paparan lcd

kumpulanad -g 1000 oren

useradd -m -d / home / orange -s / bin / bash -u 1000 -g oren oren

Pengawas yang tidak mengawasi anda

apt-get pasang pengawas

Melihat / etc / default / watchdog # Mulakan pengawas pada waktu boot? 0 atau 1 run_watchdog = 1 # Mulakan wd_keepalive setelah menghentikan pengawas? 0 atau 1 run_wd_keepalive = 1 # Muatkan modul sebelum memulakan pengawas pengawas_module = "none" # Nyatakan pilihan pengawas tambahan di sini (lihat halaman utama).

Melihat /etc/watchdog.conf

# Sekurang-kurangnya aktifkan ini

max-load-1 = 24 max-load-5 = 18 max-load-15 = 12

/etc/init.d/watchdog bermula

Terdapat sekurang-kurangnya 1 utas kernel dan 1 proses:

punca 42 0.0 0.0 0 0? Saya <10:50 0:00 [pengawas] root 14613 0.0 0.2 1432 1080? SLs 13:31 0:00 / usr / sbin / pengawas

Ujian:

Pastikan anda menghentikan semuanya dan lakukan penyegerakan && sync && sync untuk menulis data selebihnya ke cakera. Kemudian sebagai masalah akar:

gema 1> / dev / pengawas

Selepas beberapa saat, mesin harus dihidupkan semula.

Seperti yang dinyatakan dalam manual:

o Adakah jadual proses penuh?

o Adakah memori percuma mencukupi? o Adakah memori yang dapat diperuntukkan cukup? o Adakah beberapa fail boleh diakses? o Adakah beberapa fail berubah dalam selang waktu yang ditentukan? o Adakah rata-rata beban kerja terlalu tinggi? o Adakah limpahan jadual fail berlaku? o Adakah proses masih berjalan? Proses ditentukan oleh fail pid. o Adakah beberapa alamat IP menjawab ping? o Adakah antara muka rangkaian menerima lalu lintas? o Adakah suhu terlalu tinggi? (Data suhu tidak selalu tersedia.) O Jalankan perintah yang ditentukan pengguna untuk melakukan ujian sewenang-wenangnya. o Jalankan satu atau lebih arahan ujian / pembaikan yang terdapat di /etc/watchdog.d. Perintah ini dipanggil dengan ujian argumen atau pembaikan. Sekiranya salah satu daripada pemeriksaan ini gagal, pengawas akan menyebabkan penutupan. Sekiranya ada ujian ini kecuali binari yang ditentukan pengguna bertahan lebih dari satu minit, mesin juga akan dihidupkan semula.

Pengawas ini mungkin berfungsi dengan baik pada seni bina x86 biasa tetapi pada papan berasaskan ARM seperti Raspberry PIs, Orange PIs, saya gagal berkali-kali. Sistem ini boleh masuk ke keadaan hang walaupun pengawas tergantung. Mari kita konfigurasinya pula, mungkin ia akan bertambah baik dengan peningkatan yang pantas selama ini:(

Langkah 4: Reka Bentuk Perisian

Reka Bentuk Perisian
Reka Bentuk Perisian

Proses sandaran itu sendiri berasaskan rsync (alat sandaran terbaik yang pernah dicipta) data ditolak dari SERVER-> OrangeBOX.

Mengekstrak data dari rsync adalah satu-satunya bahagian yang mencabar dari projek ini kerana mempunyai bar kemajuan mengenai cadangan yang dicetak pada LCD.

Terdapat 3 cara yang mungkin untuk mengira kemajuan sandaran:

1, Menggunakan formula seperti https://wintelguy.com/transfertimecalc.pl untuk menentukan jangka masa pemindahan yang boleh diambil

Masa Pemindahan (d: h: m: s): 0: 02: 44: 00

Sebagai perbandingan: Anggaran masa untuk memindahkan fail 123 GB melalui pautan rangkaian yang berbeza (d: h: m: s): Talian T1 / DS1 (1.544 Mbps) - 7: 09: 01: 46 Ethernet (10 Mbps) - 1:03: 20:00 Ethernet Cepat (100 Mbps) - 0: 02: 44: 00 Gigabit Ethernet (1000 Mbps) - 0: 00: 16: 24 10 Gigabit Ethernet (10 Gbps) - 0: 00: 01: 38

Sekiranya rsync selesai, ia menandakan skrip untuk menghentikan pengiraan. Kaedah ini hanyalah perkiraan dan tidak boleh dipercayai, juga kelajuan pautan tidak tetap, ia dapat melambatkan, mempercepat lagi. Ini hanyalah pengiraan teori.

2, Melakukan pemeriksaan ukuran pada direktori untuk menentukan berapa banyak data yang telah kita selaraskan. Boleh menjadi sangat perlahan dengan beratus-ratus GB fail kecil (walaupun du -s di Linux melakukan cache jika anda menjalankannya semula)

Host A -> Data pelayan yang akan disandarkan Data dir: 235GB

Host B -> Data pelanggan kotak oren yang kita miliki sekarang Data dir: 112GB

Delta adalah 123 GB.

3, Jika sistem fail didedikasikan seperti dalam kes kami / dev / mapper / sandaran adalah kami dapat memanfaatkan keseluruhan petunjuk penggunaan sistem fail untuk menentukan bagaimana cadangan kami maju dan ini benar-benar cepat. Dalam kes ini, kita tidak perlu membuat paip rsync di mana sahaja, jalankan rsync kering, tunggu sehingga selesai, hitung delta dalam bait dan periksa semula ini dengan ruang kosong apa yang kita ada pada pemacu sandaran dan voila yang kita dapat sekarang buat graf bar yang bagus. Ini adalah kaedah yang saya pilih dan inilah skrip saya untuknya:

#! / bin / bash

# Kalkulator Kemajuan Cadangan untuk OrangeBOX oleh NLD # Versi: 0.2 (2018/03/05) # # Jalankan sebagai pengguna yang tidak istimewa dari cron # * * * * * /home/orange/backup_progress.sh &> / dev / null # # Skrip ini hanya bertanggungjawab untuk memaparkan data pada LCD, ia berkomunikasi # dengan program utama secara tidak langsung melalui fail kedudukan dan kunci. BACKUP_DRIVE = "/ dev / mapper / backup" VFILE = "$ HOME / start.pos" # penggunaan cakera di awal sandaran TFILE = "$ HOME / trans.size" # ukuran pemindahan prakiraan keseluruhan BFILE = "$ HOME / backup.lck "# menentukan keadaan mula data penunjuk SHUTDOWN = "1" # Jika 1 ia akan memulakan skrip lain yang mematikan kotak pada akhir sandaran BACKUP_CURRENT = "0" # Harus diinisialisasi tetapi akan dikira DRIVE_SIZE = "" # Ukuran pemacu dalam bait (sekunder semak) Fungsi LCD = "sudo / bin / lcd" is_mount () {grep -q "$ 1" / proc / mounts status = $? } fungsi merah () {sudo / bin / lcdcolor red} fungsi hijau () {sudo / bin / lcdcolor green} fungsi biru () {sudo / bin / lcdcolor blue} # Hapus keadaan (ditetapkan pada boot oleh bootup_display.sh). Tidak ada cadangan yang sedang berjalan, JANGAN mengacaukan LCD status #. Hanya memaparkan kemajuan sekiranya terdapat cadangan berterusan => Tanpa fail permulaan DAN Tanpa fail sirip = berhenti jika [! -f $ BFILE] && [! -f $ FFILE]; kemudian keluar 1 fi # Sekiranya cadangan selesai skrip ini akan memaparkannya dan keluarkan kunci # agar tidak dapat dijalankan lagi sehingga permulaan berikutnya. jika [-f $ FFILE]; kemudian hijau $ LCD "Backup" "** Selesai **" echo "Backup Selesai" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # Backup selesai dibersihkan jika [$ SHUTDOWN == "1"]; kemudian gema "Mengeksekusi skrip penutupan …" # untuk membatalkannya namun ia tidak akan membuang fail backup.lck sehingga akan masuk ke sini # berulang-ulang kali dan mengevaluasi syaratnya. is_mount $ BACKUP_DRIVE jika [$ status -ne 0]; maka $ LCD merah "ERR: Pemacu sandaran" "tidak dipasang!" echo "Pemacu sandaran tidak dipasang" keluar 1 fi jika [! -s $ TFILE]; kemudian $ LCD merah "ERR: transfile" "kosong" echo "Fail pengiraan saiz pengangkutan kosong." keluar 1 fi BACKUP_OVERALL = $ (head -1 $ TFILE | tr -d '\ n') if [-z $ BACKUP_OVERALL]; kemudian $ LCD merah "ERR: Ukuran bacaan semula" "dari pelayan tidak sah" echo "Sandaran keseluruhan ukuran bacaan tidak sah 1" keluar 1 fi jika!

Walaupun kodnya mudah di sini adalah beberapa penerangan tentang apa yang dilakukannya:

1, Sekiranya BFILE atau FFILE tidak ada (yang merupakan keadaan setelah permulaan yang jelas) yang menunjukkan bahawa tidak ada proses sandaran jadi JANGAN buat apa-apa hanya berhenti. Dengan cara ini anda dapat membuat grafik maklumat baik yang anda mahukan mengenai boot seperti nama host, ip, uptime dan lain-lain dan ia tidak akan rosak.

2, Mari kita pergi ke bahagian is_mount $ BACKUP_DRIVE. Sekadar peringatan, satu-satunya cara kami sampai di sini ialah sandaran dimulakan sehingga BFILE ada. Sekarang kodnya melakukan pelbagai pemeriksaan ralat seperti pemacu sandaran dipasang ?, adakah ukuran keseluruhan yang hendak kita sandarkan melebihi pemacu? atau kesalahan lain. Ingat bahawa ini adalah program DISPLAY sahaja walaupun ukurannya melebihi cadangan, ia tidak akan menggugurkan apa-apa.

3, OK semua ralat memeriksa masa dihapus untuk mengira graf peratusan. Mula-mula skrip mengambil "snapshot" ruang yang digunakan dalam bait pada sistem fail sandaran sekarang dan menyimpannya dalam VFILE. Apa tujuannya: skrip bash tidak bernegara, ia kehilangan data antara pelaksanaan, jadi jika anda ingin "mengingat" beberapa data dari pelaksanaan sebelumnya, anda perlu menyimpannya di suatu tempat. Dalam kes kami, ini hanyalah fail teks ringkas. Untuk menjadikannya mudah, katakanlah START_POS kami adalah 1GB (data yang kami ada), yang ingin kami sandarkan ialah + 2GB dan keseluruhan kapasiti pemacu adalah 10GB.

4, Lain kali apabila skrip menjalankan VFILE ada dan ini akan dibaca kembali (jadi kita tahu apa kedudukan permulaan sekiranya pemacu tidak kosong) untuk mengira BACKUP_CURRENT yang pada dasarnya merupakan delta ruang yang digunakan sekarang pada pemacu sandaran tolak kedudukan permulaan apa yang telah kita simpan dalam VFILE pada pusingan terakhir (sekali lagi ini adalah data yang kita miliki pada pemacu ketika sandaran dimulakan). Skrip secara dalaman berfungsi dengan bait tetapi untuk mempermudahnya setelah setengah jam kami menyandarkan data 500MB maka rumusnya akan menjadi BACKUP_CURRENT = 1.5GB - 1GB (keadaan awal) => yang memberi kami kembali data sebenar 500 MB, iaitu apa yang kita sandarkan setakat ini. Anda dapat melihat bahawa tanpa menjejaki data asal pada permulaan sandaran, pengiraan ukuran ini akan gagal kerana akan melihat bahawa ruang yang digunakan sekarang adalah 1.5GB tanpa mengetahui bahawa 1 pertunjukan data ada di cakera selama ini datang dari sandaran sebelumnya sehingga akan menganggap bahawa pelayan telah mengirimi kami data 1.5GB dan bukannya 500MB.

5, BACKUP_OVERALL akan dibaca, data ini dikira oleh pelayan ketika melakukan rsync kering awal (jadi ini adalah sumber data luaran yang mengandungi jumlah bait apa yang akan disandarkan dari Server-> OrangeBOX). Nilai ini akan diperiksa terhadap keseluruhan ruang PERCUMA pada cakera pada masa ini dan jika melebihi itu maka mesej kesalahan akan dipaparkan pada lcd dan skrip menghentikan pelaksanaannya. Ingat sekali lagi bahawa semua skrip ini hanya dipaparkan, ia tidak mengganggu proses sandaran. Sekiranya anda membersihkan fail pada cakera atau jumlah fail berubah dari jauh dan oleh itu BACKUP_OVERALL berubah pada satu ketika ia akan diteruskan.

6, Akhirnya kita selesai dengan pemeriksaan tahap kedua sudah tiba masanya untuk memaparkan sesuatu. Skrip kedua-duanya memaparkan data di konsol dan di lcd menggunakan aplikasi C sederhana. Latar belakang ditukar ke BIRU menunjukkan bahawa cadangan akhirnya bermula dan kemajuan dikira dengan formula berikut PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Ini adalah pengiraan peratusan asas yang kami ambil jumlah semasa, dalam contoh kami 0.5GB * 100 / 2GB = 25%.

7, Angka-angka juga ditukar dari bait ke bait Mega / Giga dan skrin secara automatik dipaparkan dalam MB jika lebih rendah dari 1GB.

8, Satu perkara yang tersisa untuk memetakan ini adalah 25% pada LCD 20 lajur. Contohnya ialah 25 * 20/100 = 5 dalam contoh kita. Pada masa ini penyegaran dengan program LCD dilaksanakan bahawa setiap kali anda memanggil program itu, ia akan menggambarkan semula keseluruhan skrin. Jadi dalam kes ini, ia akan menjalankan loop selama 5 kali untuk menarik 5 tanda hash # di skrin ini akan muncul sebagai kerlipan jelek pada setiap putaran jadi saya menuliskan data bar kemajuan yang dikira ke LFILE1 dan 2, yang dalam hal ini setelah 5 pusingan akan mengandungi ##### dan ini dibaca semula dan dipaparkan di LCD. Anda mungkin meletakkan LFILE1 dan 2 pada ramdisk juga untuk menyimpan sdcard dari operasi tulis tambahan, itu tidak menimbulkan masalah bagi saya, skrip berjalan sekali dalam setiap minit dari cron.

9, Apabila sandaran selesai skrip lain dari pelayan yang menjalankan rsync akan menyentuh FFILE (Selesai Fail). Pada loop seterusnya backup_progress.sh kemudian akan menunjukkan bahawa sandaran selesai dan secara opsional memanggil skrip lain untuk mematikan OrangeBOX. Ini akan menghapus fail kuncinya pada saat ini menjadikan pelaksanaan lebih mustahil jadi walaupun anda tidak mengaktifkan penutupan pada saat berikutnya apabila skrip ini dijalankan, ia akan berhenti serta merta kerana BFILE tidak ada dan FFILE tidak ada di sana. Oleh itu, ia akan memaparkan mesej yang disiapkan sandaran selama-lamanya kecuali sandaran dimulakan semula.

Skrip sandaran jauh (orange-remote.sh):

Anda perlu menghasilkan kunci ssh untuk sandaran dan kunci untuk penyulitan luks untuk pemacu. Apabila anda menjalankan sandaran jauh secara manual untuk pertama kalinya, ia akan menyimpan cap jari hos kotak oren ke fail hos (dari titik ini ia dapat dijalankan secara automatik oleh cron).

DISK = "/ dev / disk / by-id /…"

Untuk mengetahui pengecam cakera keras anda, jalankan uuid, blkid atau cari direktori / dev / disk / direktori yang sesuai.

Direktori termasuk tidak termasuk dapat disiapkan jika anda tidak mahu menyandarkan semuanya. Ini adalah proses yang cukup menjengkelkan kerana untuk rsync jika anda ingin mengecualikan satu sub-direktori yang jauh di dalam struktur yang harus anda lakukan:

+ / a

+ / a / b + / a / b / c + / a / b / c / d - / a / b / c / d / e + / dir2

Oleh kerana skrip ini menjalankan perintah pada OrangeBOX dari jauh, ia tidak mengawasi pemboleh ubah kembali dari sisi itu, oleh itu saya menggunakan beberapa muslihat pintar seperti akan mengeluarkan mesej membuka pemacu jarak jauh ke /tmp/contmsg.txt, kemudian mengurai untuk melihat apakah ia berjaya, jika tidak maka ia mengubah binari rsync menjadi tidak dapat dilaksanakan sehingga rsync tidak akan cuba memuat naik data ke rootfs OrangePIs yang mengisi SDcard. Juga merupakan amalan yang baik untuk menetapkan bit yang tidak berubah pada chattr + i / mnt / sandaran untuk menjadikannya mustahil.

Prakiraan ukuran berlaku secara tempatan di Server oleh itu fail ini harus dihantar ke OrangeBOX pada langkah seterusnya.

Sandaran utama dimulakan sebagai gelung untuk ((i = 0; i <100; i ++)); lakukan kerana sekiranya sambungan internet Kabel DSL / Kabel berkualiti rendah rsync sering putus, habis masa. Sekiranya berjaya diselesaikan maka gelung akan pecah tanpa mencuba lebih banyak lelaran. Ini berfungsi dengan sempurna dengan sistem operasi yang baik, namun jika atas sebab tertentu kotak jarak jauh adalah tingkap dan ada akses yang ditolak seperti biasa di NTUSER. DAT maka rsync akan mengembalikan kod ralat dan gelung ini akan dijalankan 100 kali dan kemudian masih gagal.

Langkah 5: Senarai Penutupan & ToDo

Senarai Penutupan & ToDo
Senarai Penutupan & ToDo
Senarai Penutupan & ToDo
Senarai Penutupan & ToDo

Instruktif saya menunjukkan sekali lagi bagaimana anda boleh membuat sesuatu yang lebih baik, lebih mudah disesuaikan dari komputer $ 10 anda sendiri yang mengalahkan Buffalo dengan peranti NAS yang dikunci miliknya sendiri, partisi dalaman yang pelik, linux sibuk yang dilumpuhkan dengan alat segel, dikendalikan oleh perisian tingkap mereka, firmware tertutup, dokumentasi dan sokongan yang buruk dan tidak kira berapa banyak wang yang akan anda belanjakan, anda tidak akan pernah mendapat petunjuk kemajuan yang menunjukkan sandaran anda apatah lagi betapa hebatnya penampilan OrangeBox (saya bahkan menggunakan kabel CAT5 oren dengannya: D).

Dengan komputer mini menjadi semakin kuat sambil mengekalkan garis harga <100 $ yang sama, kita dapat menggunakannya untuk lebih banyak tugas. Oleh kerana port Gbe Ethernet cukup biasa pada masa ini dalam 1-2 tahun, memori pada papan ini akan meningkat secara mendadak dan ia juga boleh digunakan untuk sistem sandaran berasaskan ZFS.

-Penunjuk kemajuan bijirin halus oleh program C (lihat WasserStation salah satu projek saya yang lain). Sekarang hanya # hashmark # watak yang digunakan dalam mod watak dengan lcdPuts (lcd, line1), ini dapat diperbaiki walaupun menggunakan LCD karakter untuk membahagikan 1 lajur kepada 5 bahagian dan program C utama hanya dapat mengambil bilangan bulat seperti 25 dan menarik keluar bar kemajuan dengan betul atau lebih baik dengan menggunakan LCD grafik

-Kemungkinan memiliki hdd yang dapat ditanggalkan untuk membuat sandaran baru dan baru dan memindahkannya ke lokasi yang berbeza (jika kotak mengesan pemacu kosong, maka ia harus memformatnya secara automatik dengan kunci penyulitan setelah ia diterima).

-Jika anda ingin mencetak casing anda sendiri dengan makerbot, OrangeNAS mungkin menarik untuk anda:

Disyorkan: