Daftar Isi:

OrangeBOX: Perangkat Penyimpanan Cadangan Aman Berbasis OrangePI: 5 Langkah
OrangeBOX: Perangkat Penyimpanan Cadangan Aman Berbasis OrangePI: 5 Langkah

Video: OrangeBOX: Perangkat Penyimpanan Cadangan Aman Berbasis OrangePI: 5 Langkah

Video: OrangeBOX: Perangkat Penyimpanan Cadangan Aman Berbasis OrangePI: 5 Langkah
Video: SULTAN MEDAN INDRAKENZ NAIK JET PRIBADI KE PULAU PRIBADI!! 2024, Juli
Anonim
OrangeBOX: Perangkat Penyimpanan Cadangan Aman Berbasis OrangePI
OrangeBOX: Perangkat Penyimpanan Cadangan Aman Berbasis OrangePI
OrangeBOX: Perangkat Penyimpanan Cadangan Aman Berbasis OrangePI
OrangeBOX: Perangkat Penyimpanan Cadangan Aman Berbasis OrangePI

OrangeBOX adalah kotak cadangan penyimpanan jarak jauh all-in-one untuk server apa pun.

Server Anda dapat terinfeksi, rusak, dihapus dan semua data Anda masih aman di OrangeBOX dan siapa yang tidak suka misi yang mustahil seperti perangkat cadangan apa yang baru saja Anda colokkan dan lihat indikator kemajuan tanpa melakukan apa-apa lagi (harap keajaiban asap tidak akan keluar di akhir:)).

OrangeBOX adalah proyek pertama saya yang sebagian besar merupakan perangkat lunak, bukan peretasan perangkat keras. Ini pada dasarnya adalah NAS yang dibuat khusus dengan LCD terpasang.

Langkah 1: Bagian Perangkat Keras

Bagian Perangkat Keras
Bagian Perangkat Keras
Bagian Perangkat Keras
Bagian Perangkat Keras
Bagian Perangkat Keras
Bagian Perangkat Keras

Orange PI zero adalah komputer papan tunggal sumber terbuka. Itu dapat menjalankan Android 4.4, Ubuntu, Debian. Ini menggunakan AllWinner H2 SoC, dan memiliki 256MB/512MB DDR3 SDRAM(256MB versi adalah versi Standar. Orange Pi Zero adalah untuk siapa saja yang ingin mulai berkreasi dengan teknologi – tidak hanya menggunakannya. Ini adalah alat yang sederhana, menyenangkan, dan berguna yang Anda dapat digunakan untuk mulai mengambil kendali atas dunia di sekitar Anda (https://www.orangepi.org/orangepizero/). Jadi, untuk kita, mari kita lanjutkan:)

  • Kotak logam/plastik/kayu (Saya telah menggunakan kotak cd-rw eksternal Yamaha yang lama)
  • Oranye PI Nol atau lebih baik (pinout GPIO mungkin berubah jika Anda menggunakan model lain)
  • Layar LCD 2x20 RGB
  • Semua drive usb SFF 3.5/ LFF 2.55
  • Sata -> adaptor usb. Perlu diingat bahwa sementara OrangePI tidak memaksakan batas atas pada kapasitas drive maksimum, namun banyak jembatan USB-ke-SATA melakukannya (maks 2TB). PI Zero oranye yang saya gunakan hanya memiliki satu port USB 2.0 dengan kecepatan transfer efektif maksimum 28 MB/s. Saya telah memilih USB3.0 (disiapkan untuk peningkatan di masa mendatang) -> jembatan SATA (merek tidak akan disebutkan) dan itu membatasi batas sehingga lebih baik memilih jembatan yang terbukti mendukung drive yang lebih besar seperti jembatan berbasis chip JMicron JMS567. Lakukan riset Anda sendiri sebelum membelinya. Saya bisa hidup dengan kecepatan dan batas hard drive dengan menggunakan drive sata 2TB dalam proyek ini (jika Anda memasukkan drive yang lebih besar, itu akan dikenali tetapi OS hanya akan melihat 2TB pertama sehingga sisa kapasitas akan menjadi hilang).
  • 12V 2.5 A atau adaptor amp yang lebih tinggi. Hitung sekitar 500mA penggunaan normal untuk OPI Zero dan puncak 1,5A untuk drive SATA LFF standar. Oversize tidak pernah menyakitkan. Dalam pengaturan saya, psu Yamaha (apa yang bisa memasok lebih dari cukup arus pada kedua rel 12+5V) sayangnya meledak:(karena menyortir sakelar utama ke GND sebentar jadi saya harus merekatkan adaptor biasa, di setidaknya itu membuat kotak beberapa gram lebih ringan.
  • Konverter buck DC-DC 12V->5V. Saya menggunakan uang mini yang dapat disesuaikan yang sama dengan IronForge, bekerja dengan sempurna.

Opsional

Jika Anda bersedia menghabiskan $ 10 maka Anda bisa mendapatkan Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) yang merupakan faktor bentuk serupa dan memberi Anda Gbe dan SATA3. Untuk ini perpustakaan pengkabelan Libra PI dapat digunakan: https://github.com/OrangePiLibra/WiringPi tetapi karena pinout GPIO berbeda, itu di luar cakupan penulisan ini.

Anda juga dapat melakukan build ini dengan Orange PI Plus2 baru yang memiliki konektor SATA dan Anda dapat melewati penggunaan konverter sata->usb bersama-sama dengan keterbatasannya. Jika Anda berencana untuk menggunakan FreeBSD atau BSD lainnya, seri Orange PI mungkin bukan pilihan terbaik karena dukungan perangkat kerasnya terbatas (misalnya Anda perlu menggunakan stik USB untuk boot). Untuk BSD, saran terbaik adalah menggunakan Raspberry PI. Baik kode C untuk LCD dan semua skrip shell portabel untuk sistem UNIX lainnya.

Langkah 2: Desain Perangkat Keras

Desain Perangkat Keras
Desain Perangkat Keras
Desain Perangkat Keras
Desain Perangkat Keras
Desain Perangkat Keras
Desain Perangkat Keras

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

Ethernet dibawa keluar dengan ekstender ke bagian belakang kotak. Ingat bahwa Orange PI zero hanya memiliki antarmuka Ethernet 100mbit/s jika Anda ingin lebih cepat, Anda perlu menggunakan board lain seperti model Asus Tinkerboard/RPI3B+/Other Orange PI.

Salah PIN Keluar adalah satu-satunya kesalahan yang dapat Anda buat dalam proyek ini oleh karena itu perlu menerapkan beberapa prinsip prinsip:

1, Selalu coba gunakan kabel berwarna sama dari END to END. Saya sendiri melakukan "kesalahan" yang sama di beberapa proyek di mana saya tidak melakukannya, hanya karena saya tidak memiliki cukup kabel male-male/male-female/female-female di tangan dan saya menambal 2 bersama-sama hanya untuk melanjutkan sirkuit. Jika Anda tidak mendokumentasikan pekerjaan Anda dengan benar, ini dapat menyebabkan sakit kepala bertahun-tahun kemudian di mana Anda harus melakukan perbaikan, peningkatan.

2, Oleskan lem panas ke konektor. Jika menggunakan kabel mm/mf/ff gaya arduino-starter kit yang bukan kualitas terbaik, cukup umum (terutama jika Anda memindahkan/mengangkut perangkat) bahwa konektor terlepas. Jika Anda tahu itu akan menjadi perangkat penggunaan jangka panjang (mungkin digunakan sampai rusak?!) maka lebih baik untuk menerapkan sedikit lem panas baik di sisi OrangePI dan LCD konektor untuk menyatukannya. Ini dapat dengan mudah meleleh / tergores nanti jika diperlukan.

3, Kabel nol OrangePI Kabar buruknya adalah bahwa pinout Orange PI TIDAK sama dengan Raspberry PI 0/1/2/3 dan bahkan ada perbedaan antara model Orange PI lainnya. Cara terbaik untuk pergi adalah mendapatkan perpustakaan kabel (versi Orange PI Zero). Gambarnya mungkin agak membingungkan tetapi ini adalah yang terbaik yang bisa saya temukan. Salah satunya adalah cermin 180 derajat dari yang lain. Meskipun gambar non grafis CLI mungkin lebih sulit untuk dipahami, ini adalah yang paling lurus ke depan.

Anda selalu dapat membedakan kedua ujung soket dengan mempertimbangkan satu ujung sebagai ujung POSITIF dengan (+3.3/+5V) dan lainnya sebagai ujung NEGATIF (satu GND) -> ini adalah ujung konektor yang menghadap port ETHERNET.

Dari tabel Wiring PI Zero Anda hanya perlu satu kolom, wPI melupakan yang lain seolah-olah mereka tidak akan ada di sana.

Jadi misalnya untuk menghubungkan LCD_E 15 (yaitu wPI 15!) dan LCD_RS 16 (yaitu wPI 16!) hitung pin dari ujung POSITIF konektor (mudah dilakukan dengan pena atau obeng kecil). Itu akan secara fisik turun 4 pin dan 5 pin.

4, Kelompokkan. Jika ada kemungkinan untuk meletakkan pin bekas di samping satu sama lain (mengelompokkannya) selalu pilih itu, itu membuat mereka saling berpegangan bahkan tanpa lem panas dan juga di proyek lain ketika Anda memiliki konektor molex 2x 4x 6x Anda bisa manfaatkan saja pin yang bersebelahan. Di sini yang terbaik yang dapat Anda lakukan adalah kelompok 2-3s (ideal saat menggunakan kabel jumper yang diselamatkan dari PC lama).

Pin yang digunakan untuk koneksi Layar LCD OrangePI:

//GUNAKAN NOMOR PIN WIRINGPI

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

Pin yang digunakan untuk kontrol 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 LCD ini dibandingkan dengan LCD standar fix blue atau fix green backlight di mana Anda memiliki satu katoda yang perlu ditarik ke GND yang memiliki 3 untuk 3 warna. Merah, hijau dan biru. Dengan mengubah kombinasi yang mana yang AKTIF, Anda dapat mencampur warna yang berbeda dari warna dasar ini tetapi hanya ujung atas yang tidak memiliki corak karena Anda tidak dapat mengontrol kecerahan warna (hidup atau mati).

Pencampuran warna aditif: menambahkan merah ke hijau menghasilkan kuning; menambahkan merah ke biru menghasilkan magenta; menambahkan hijau ke biru menghasilkan cyan; menambahkan ketiga warna primer bersama-sama menghasilkan putih.

Langkah 3: Sistem Operasi

Sistem operasi
Sistem operasi

OrangeBOX boot dan linux Armbian (berdasarkan Debian Stretch) kernel 4.14.18-sunxi dengan lingkungan firewall yang aman, terhubung ke VPN dan menunggu perintah pencadangan jarak jauh dari server.

Prinsip desain:

-Enkripsi disk berbasis luks penuh (perangkat itu sendiri tidak berisi kunci untuk membuka drive cadangan. Ini akan disalin sementara dari server jauh ke ram /dev/shm, drive dibuka dan kunci dihapus. Setelah pencadangan selesai drive ditutup dan OrangeBox mati secara otomatis dalam 1 menit.)

-Semua perintah dan kunci dikirim dari server jarak jauh (perangkat itu sendiri hanya berisi sertifikat vpn) tidak memiliki akses APAPUN ke server jarak jauh bahkan ssh dari perangkat ini di-firewall

-Sistem file lokal tidak dienkripsi untuk dapat boot tetapi tidak mengandung sesuatu yang berguna dan karena uplink VPN sangat dibatasi di ujung yang lain bahkan dengan hilangnya perangkat sepenuhnya, penyerang tidak dapat melakukan apa pun

Unduh Peregangan Armbian dari

Siapkan dan jalankan sistem:

apt-get update && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

Edit /etc/inittab, semua konsol dapat dinonaktifkan karena kotak akan digunakan sebagai tanpa kepala. Komentari bagian 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 ulang kotak Anda dan hapus systemd untuk memiliki sistem bebas bloatware open source yang nyata.

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

Instal beberapa paket

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

Instal perpustakaan wiringpi

cd /usr/src

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

Buat pengguna oranye untuk tampilan lcd

groupadd -g 1000 jeruk

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

Anjing penjaga yang tidak menjagamu

apt-get install pengawas

Melihat /etc/default/watchdog # Mulai pengawas saat boot? 0 atau 1 run_watchdog=1 # Mulai wd_keepalive setelah menghentikan pengawas? 0 atau 1 run_wd_keepalive=1 # Muat modul sebelum memulai watchdog watchdog_module="none" # Tentukan opsi pengawas tambahan di sini (lihat halaman manual).

Melihat /etc/watchdog.conf

# Setidaknya aktifkan ini

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

/etc/init.d/watchdog start

Harus ada setidaknya 1 utas kernel dan 1 proses:

akar 42 0.0 0.0 0 0 ? Saya< 10:50 0:00 [anjing penjaga] root 14613 0.0 0.2 1432 1080 ? SL 13:31 0:00 /usr/sbin/watchdog

Pengujian:

Pastikan Anda menghentikan semuanya dan melakukan sinkronisasi && sinkronisasi && sinkronisasi untuk menulis sisa data ke disk. Kemudian sebagai root masalah:

echo 1 > /dev/watchdog

Setelah beberapa detik mesin harus reboot.

Seperti yang dinyatakan manual:

o Apakah tabel proses penuh?

o Apakah ada cukup memori bebas? o Apakah ada cukup memori yang dapat dialokasikan? o Apakah beberapa file dapat diakses? o Apakah beberapa file berubah dalam interval tertentu? o Apakah beban kerja rata-rata terlalu tinggi? o Apakah terjadi overflow tabel file? o Apakah proses masih berjalan? Prosesnya ditentukan oleh file pid. o Apakah beberapa alamat IP menjawab ping? o Apakah antarmuka jaringan menerima lalu lintas? o Apakah suhunya terlalu tinggi? (Data suhu tidak selalu tersedia.) o Jalankan perintah yang ditentukan pengguna untuk melakukan tes sewenang-wenang. o Jalankan satu atau lebih perintah pengujian/perbaikan yang ditemukan di /etc/watchdog.d. Perintah-perintah ini dipanggil dengan pengujian argumen atau perbaikan. Jika salah satu dari pemeriksaan ini gagal, pengawas akan menyebabkan shutdown. Jika salah satu dari tes ini kecuali biner yang ditentukan pengguna bertahan lebih dari satu menit, mesin juga akan di-boot ulang.

Pengawas ini mungkin bekerja dengan baik pada arsitektur x86 biasa tetapi pada papan berbasis ARM seperti Raspberry PI, Orange PI, saya gagal berkali-kali. Sistem dapat masuk ke status hang di mana bahkan pengawas pun tergantung. Mari kita konfigurasikan saja mungkin itu akan ditingkatkan dengan peningkatan apt-get selama bertahun-tahun:(

Langkah 4: Desain Perangkat Lunak

Desain perangkat lunak
Desain perangkat lunak

Proses pencadangan itu sendiri berbasis rsync (alat pencadangan terbaik yang pernah ditemukan) data didorong dari SERVER-> OrangeBOX.

Mengekstrak data dari rsync adalah satu-satunya bagian proyek yang menantang untuk memiliki bilah kemajuan tentang cadangan yang dicetak pada LCD.

Ada 3 cara yang mungkin untuk menghitung kemajuan pencadangan:

1, Menggunakan rumus seperti https://wintelguy.com/transfertimecalc.pl untuk menentukan perkiraan waktu yang dibutuhkan transfer

Waktu Transfer (h:j:m:s): 0:02:44:00

Sebagai perbandingan: Perkiraan waktu untuk mentransfer file 123 GB melalui tautan jaringan yang berbeda (h:j:m:s): Jalur T1/DS1 (1,544 Mbps) - 7:09:01:46 Ethernet (10 Mbps) - 1:03: 20:00 Fast Ethernet (100 Mbps) - 0:02:44:00 Gigabit Ethernet (1000 Mbps) - 0:00:16:24 10 Gigabit Ethernet (10 Gbps) - 0:00:01:38

Jika rsync selesai, itu menandakan skrip untuk menghentikan perhitungan. Metode ini hanya perkiraan dan tidak dapat diandalkan, juga kecepatan tautan tidak tetap, dapat melambat, dipercepat lagi. Ini hanya perhitungan teoritis.

2, Melakukan pemeriksaan ukuran pada direktori untuk menentukan berapa banyak data yang sudah kami sinkronkan. Bisa menjadi sangat lambat dengan ratusan GB file kecil (walaupun du -s di Linux melakukan beberapa caching jika Anda menjalankannya kembali)

Host A -> Data server yang akan dicadangkan Data dir: 235GB

Host B -> Data klien kotak oranye yang kami miliki saat ini Data dir: 112GB

Deltanya 123 GB.

3, Jika sistem file didedikasikan seperti dalam kasus kami /dev/mapper/backup adalah, kami dapat memanfaatkan indikator penggunaan sistem file secara keseluruhan untuk menentukan bagaimana kemajuan pencadangan kami dan ini sangat cepat. Dalam hal ini kita bahkan tidak perlu mem-pipe rsync stdout di mana saja, jalankan saja rsync kering, tunggu sampai selesai, hitung delta dalam byte dan periksa ulang ini dengan ruang kosong yang kita miliki di drive cadangan dan voila kita bisa sekarang buat grafik batang yang bagus. Ini adalah metode yang saya pilih dan inilah skrip saya untuk itu:

#!/bin/bash

# Kalkulator Kemajuan Cadangan untuk OrangeBOX oleh NLD # Versi: 0.2 (2018/03/05) # # Jalankan sebagai pengguna unprivileged dari cron # * * * * /home/orange/backup_progress.sh &> /dev/null # # Script ini hanya bertanggung jawab untuk menampilkan data pada LCD, ia berkomunikasi # dengan program utama secara tidak langsung melalui file posisi dan kunci. BACKUP_DRIVE="/dev/mapper/backup" VFILE="$HOME/start.pos" # penggunaan disk di awal pencadangan TFILE="$HOME/trans.size" # keseluruhan ukuran transfer yang telah dihitung sebelumnya BFILE="$HOME/ backup.lck" # menentukan status mulai FFILE="$HOME/backup.fin" # menentukan status selesai LFILE1="$HOME/lcd1.bar" # Data indikator kemajuan LCD LFILE2="$HOME/lcd2.bar" # Kemajuan LCD data indikator SHUTDOWN="1" # Jika 1 itu akan memulai skrip lain yang mematikan kotak di akhir pencadangan BACKUP_CURRENT="0" # Harus diinisialisasi tetapi akan dihitung # Ukuran drive dalam byte (sekunder periksa) LCD="Sudo /bin/lcd" function is_mount() { grep -q "$1" /proc/mount status=$? } function red() { sudo /bin/lcdcolor red } function green() { sudo /bin/lcdcolor green } function blue() { sudo /bin/lcdcolor blue } # Hapus status (diatur saat boot oleh bootup_display.sh). Tidak ada pencadangan yang sedang berlangsung, JANGAN mengacaukan # status LCD. Hanya tampilkan kemajuan jika ada pencadangan yang sedang berlangsung => Tidak ada file awal DAN Tidak ada file sirip = berhenti jika [! -f $BFILE] && [! -f $FFILE]; kemudian exit 1 fi # Jika pencadangan selesai, skrip ini akan menampilkannya dan menghapus kunci # agar tidak dapat dijalankan lagi hingga inisiasi berikutnya. jika [-f $FFILE]; kemudian hijau $LCD " Backup " "** Selesai **" echo "Backup Completed" rm -rf $BFILE $TFILE $FFILE $LFILE1 $LFILE2 $VFILE # Backup selesai dibersihkan if [$SHUTDOWN == "1"]; lalu echo "Executing shutdown script…" /home/orange/shutdown.sh & fi exit 0 fi # Dari titik ini script HANYA dijalankan jika ada backup yang BERLANGSUNG # oleh karena itu semua error akan tercetak ke LCD dan menyebabkan script # untuk membatalkan namun itu tidak akan menghapus file backup.lck jadi akan masuk ke sini # berulang-ulang dan mengevaluasi kondisinya. is_mount $BACKUP_DRIVE jika [$status -ne 0]; kemudian merah $LCD "ERR: Backup drive" "tidak terpasang!" echo "Drive cadangan tidak dipasang" exit 1 fi if [! -s $TFILE]; lalu merah $LCD "ERR: transfile" "kosong" echo "File perhitungan ukuran transportasi kosong." exit 1 fi BACKUP_OVERALL=$(head -1 $TFILE |tr -d '\n') if [-z $BACKUP_OVERALL]; kemudian merah $LCD "ERR: Size readback" "from server invalid" echo "Backup overall size readback is invalid 1" exit 1 fi if !

Meskipun kodenya sederhana, berikut adalah beberapa deskripsi fungsinya:

1, Jika BFILE atau FFILE tidak ada (yang merupakan keadaan setelah startup yang jelas) yang menunjukkan tidak ada proses pencadangan jadi JANGAN lakukan apa pun, keluar saja. Dengan cara ini Anda dapat membuat grafik informasi bagus apa pun yang Anda inginkan mengenai boot seperti nama host, ip, waktu aktif dll dan tidak akan kacau.

2, Mari lompat ke bagian is_mount $BACKUP_DRIVE. Sekadar pengingat, satu-satunya cara kami sampai di sini adalah bahwa pencadangan dimulai sehingga BFILE ada. Sekarang kode hanya melakukan berbagai pemeriksaan kesalahan seperti apakah drive cadangan terpasang?, apakah ukuran keseluruhan dari apa yang akan kita cadangkan melebihi drive? atau kesalahan lainnya. Ingat ini adalah program DISPLAY saja bahkan jika ukurannya melebihi cadangan itu tidak akan membatalkan apa pun.

3, OK semua cek kesalahan dibersihkan waktu untuk menghitung grafik persentase. Pertama skrip mengambil "snapshot" dari ruang yang digunakan dalam byte pada sistem file cadangan sekarang dan menyimpannya di VFILE. Apa tujuannya: skrip bash tidak memiliki kewarganegaraan, kehilangan data di antara eksekusi, jadi jika Anda ingin "mengingat" beberapa data dari eksekusi sebelumnya, Anda harus menyimpannya di suatu tempat. Dalam kasus kami ini hanya file teks sederhana. Untuk membuatnya sederhana, katakanlah START_POS kami adalah 1GB (data yang kami miliki), yang ingin kami backup adalah +2GB dan kapasitas drive keseluruhan adalah 10GB.

4, Lain kali ketika skrip menjalankan VFILE ada dan ini akan dibaca kembali (jadi kita tahu apa posisi awal jika drive tidak kosong) untuk menghitung BACKUP_CURRENT yang pada dasarnya adalah delta dari ruang yang digunakan saat ini pada drive cadangan dikurangi posisi awal apa yang telah kita simpan di VFILE pada putaran terakhir (sekali lagi ini adalah data yang kita miliki di drive saat pencadangan dimulai). Script secara internal bekerja dengan byte tetapi untuk membuatnya sederhana setelah setengah jam kami mencadangkan data 500MB maka rumusnya adalah BACKUP_CURRENT=1.5GB - 1GB (keadaan awal) => yang memberi kami kembali persis data sebenarnya 500 MB, yaitu apa yang kami dukung sejauh ini. Anda dapat melihat bahwa tanpa melacak apa data asli pada awal pencadangan, perhitungan ukuran ini akan gagal karena akan melihat bahwa ruang yang digunakan saat ini adalah 1,5GB tanpa mengetahui bahwa 1 gig data ada di disk selama ini berasal dari cadangan sebelumnya sehingga akan diasumsikan bahwa server telah mengirimi kami data 1,5 GB, bukan 500 MB.

5, BACKUP_OVERALL akan dibaca, data ini dihitung oleh server ketika melakukan rsync kering awal (jadi ini adalah sumber data eksternal yang berisi jumlah byte yang akan dicadangkan dari Server->OrangeBOX). Nilai ini akan diperiksa terhadap keseluruhan ruang GRATIS pada disk saat ini dan jika melebihi itu maka pesan kesalahan akan ditampilkan pada lcd dan skrip menghentikan eksekusi. Ingat lagi bahwa semua skrip ini HANYA menampilkan, itu tidak mengganggu proses pencadangan. Jika Anda membersihkan file pada disk atau jumlah file berubah dari jarak jauh dan oleh karena itu BACKUP_OVERALL berubah pada satu titik, itu akan dilanjutkan.

6, Akhirnya kita selesai dengan cek level kedua saatnya untuk menampilkan sesuatu. Script keduanya menampilkan data di konsol dan di lcd menggunakan aplikasi C sederhana. Latar belakang dialihkan ke BIRU yang menunjukkan bahwa pencadangan akhirnya dimulai dan kemajuan dihitung dengan rumus berikut PROGRESS=$((($BACKUP_CURRENT * 100) / $BACKUP_OVERALL)). Ini adalah perhitungan persentase dasar yang kami ambil dari jumlah saat ini, dalam contoh kami 0,5GB*100/2GB = 25%.

7, Angka juga dikonversi dari byte ke Mega/Giga byte dan layar secara otomatis ditampilkan dalam MB jika lebih rendah dari 1GB.

8, Satu hal yang tersisa untuk memetakan ini dalam kasus kami adalah 25% pada LCD 20 kolom. Itu akan menjadi 25 * 20 / 100 = 5 dalam contoh kita. Saat ini sedang diimplementasikan program refresh dengan LCD yang setiap kali Anda memanggil program itu akan menggambar ulang seluruh layar. Jadi dalam hal ini akan menjalankan for loop 5 kali untuk menggambar 5 tanda pagar # di layar ini akan muncul sebagai kedipan jelek di setiap putaran jadi alih-alih saya menulis data progress bar yang dihitung ke LFILE1 dan 2, yang dalam kasus ini setelahnya 5 putaran akan berisi ##### dan ini dibaca kembali dan ditampilkan pada LCD. Anda dapat menempatkan LFILE1 dan 2 di ramdisk juga untuk menyimpan kartu sd dari operasi penulisan tambahan, itu tidak menyebabkan masalah bagi saya, skrip berjalan sekali dalam setiap menit dari cron.

9, Ketika pencadangan selesai, skrip lain dari server yang menjalankan rsync akan menyentuh FFILE (Finish File). Pada loop berikutnya backup_progress.sh akan menampilkan bahwa pencadangan telah selesai dan secara opsional memanggil skrip lain untuk mematikan OrangeBOX. Ini menghapus file kuncinya pada saat ini membuat eksekusi lebih lanjut menjadi tidak mungkin sehingga bahkan jika Anda tidak mengaktifkan shutdown pada menit berikutnya ketika skrip ini berjalan, skrip ini akan segera berhenti karena BFILE tidak ada dan FFILE tidak ada di sana. Oleh karena itu akan menampilkan pesan pencadangan selesai tanpa batas waktu kecuali pencadangan dimulai ulang lagi.

Skrip cadangan jarak jauh (orange-remote.sh):

Anda perlu membuat kunci ssh untuk cadangan dan kunci untuk enkripsi luks untuk drive. Ketika Anda menjalankan pencadangan jarak jauh secara manual untuk pertama kalinya, itu akan menyimpan sidik jari host kotak oranye ke file host (dari titik ini dapat dijalankan secara otomatis oleh cron).

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

Untuk mengetahui pengenal hard disk Anda, jalankan uuid, blkid atau cukup cari direktori /dev/disk/ yang sesuai.

Direktori termasuk pengecualian dapat diatur jika Anda tidak ingin mencadangkan semuanya. Ini adalah proses yang cukup mengganggu karena untuk rsync jika Anda ingin mengecualikan satu sub-direktori jauh di dalam struktur yang harus Anda lakukan:

+ /a

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

Karena skrip ini mengeksekusi perintah pada OrangeBOX dari jarak jauh, skrip ini tidak memiliki pengawasan terhadap variabel yang dikembalikan dari sisi itu, oleh karena itu saya menggunakan beberapa trik pintar seperti itu akan menampilkan pesan membuka drive jarak jauh ke /tmp/contmsg.txt, lalu parse itu untuk melihat apakah itu berhasil, jika tidak maka itu mengubah biner rsync menjadi tidak dapat dieksekusi sehingga rsync tidak akan mencoba mengunggah data ke rootf OrangePIs yang mengisi kartu SD. Juga merupakan praktik yang baik untuk mengatur bit yang tidak dapat diubah pada chattr +i /mnt/backup untuk membuat ini tidak mungkin.

Perhitungan ukuran dilakukan secara lokal di Server oleh karena itu file ini harus dikirim ke OrangeBOX pada langkah berikutnya.

Cadangan utama dimulai sebagai loop untuk ((i=0;i<100;i++)); lakukan karena jika koneksi internet DSL/Kabel berkualitas rendah rsync sering putus, timeout. Jika selesai dengan sukses maka loop akan putus tanpa mencoba lebih banyak iterasi. Ini bekerja dengan sempurna dengan sistem operasi yang baik, namun jika karena alasan tertentu kotak jarak jauh adalah windows dan akan ada akses yang ditolak seperti secara teratur di NTUSER. DAT maka rsync akan mengembalikan kode kesalahan dan loop ini akan dijalankan 100 kali dan kemudian masih gagal.

Langkah 5: Penutupan & ToDo List

Penutupan & ToDo List
Penutupan & ToDo List
Penutupan & Daftar Yang Harus Dilakukan
Penutupan & Daftar Yang Harus Dilakukan

Instruksi saya menunjukkan sekali lagi bagaimana Anda dapat membuat sesuatu yang lebih baik, perangkat yang lebih dapat disesuaikan dari komputer seharga $ 10 Anda sendiri yang mengalahkan Buffalo dengan perangkat NAS yang terkunci, partisi internal yang aneh, busybox melumpuhkan linux dengan alat segfaulting, dikelola oleh perangkat lunak windows mereka, firmware tertutup, dokumentasi dan dukungan yang buruk dan tidak peduli berapa banyak uang yang akan Anda keluarkan, Anda tidak akan pernah mendapatkan indikator kemajuan yang menunjukkan cadangan Anda belum lagi betapa kerennya tampilan OrangeBox (saya bahkan menggunakan kabel CAT5 oranye dengannya: D).

Dengan komputer mini menjadi lebih dan lebih kuat sambil mempertahankan garis harga <100$ yang sama, kita dapat menggunakannya untuk lebih banyak tugas. Karena port Gbe Ethernet cukup umum akhir-akhir ini dalam 1-2 tahun, memori pada papan ini akan meningkat secara dramatis dan mereka juga dapat digunakan untuk sistem cadangan berbasis ZFS.

-Indikator kemajuan butiran halus oleh program C (lihat WasserStation salah satu proyek saya yang lain). Saat ini hanya # tanda pagar # karakter yang digunakan dalam mode karakter dengan lcdPuts(lcd, line1), ini dapat ditingkatkan bahkan ketika menggunakan LCD karakter untuk membagi 1 kolom menjadi 5 bagian dan program C utama hanya dapat mengambil bilangan bulat seperti 25 dan menarik keluar bilah kemajuan dengan benar atau lebih ditingkatkan dengan menggunakan LCD grafis

-Kemungkinan untuk memiliki hdd yang dapat dilepas untuk membuat cadangan baru dan baru dan memindahkannya ke lokasi yang berbeda (jika kotak mendeteksi drive kosong maka harus memformatnya secara otomatis dengan kunci enkripsi setelah diterima).

-Jika Anda ingin mencetak kasing Anda sendiri dengan makerbot, OrangeNAS mungkin menarik untuk Anda:

Direkomendasikan: