Talaan ng mga Nilalaman:

OrangeBOX: OrangePI Batay Ligtas na Backup Storage Device: 5 Hakbang
OrangeBOX: OrangePI Batay Ligtas na Backup Storage Device: 5 Hakbang

Video: OrangeBOX: OrangePI Batay Ligtas na Backup Storage Device: 5 Hakbang

Video: OrangeBOX: OrangePI Batay Ligtas na Backup Storage Device: 5 Hakbang
Video: The Orange Box Commercial 2024, Hulyo
Anonim
OrangeBOX: OrangePI Batay sa Secure na Backup Storage Device
OrangeBOX: OrangePI Batay sa Secure na Backup Storage Device
OrangeBOX: OrangePI Batay sa Secure na Backup Storage Device
OrangeBOX: OrangePI Batay sa Secure na Backup Storage Device

Ang OrangeBOX ay isang all-in-one na remote backup backup box para sa anumang mga server.

Ang iyong server ay maaaring mahawahan, masira, mapunasan at ang lahat ng iyong data ay ligtas pa rin sa OrangeBOX at kung sino ang hindi gugustuhin ang isang misyon na imposible tulad ng backup na aparato kung saan mo lang na-plug in at makita ang isang tagapagpahiwatig ng pag-unlad nang hindi gumagawa ng anumang higit pa (sana lang ang mahika hindi lalabas ang usok sa huli:)).

Ang OrangeBOX ay ang aking unang proyekto na karamihan ay isang software, hindi isang hack hack sa hardware. Karaniwan ito ay isang pasadyang built NAS na may kalakip na LCD.

Hakbang 1: Mga Bahagi ng Hardware

Mga Bahagi ng Hardware
Mga Bahagi ng Hardware
Mga Bahagi ng Hardware
Mga Bahagi ng Hardware
Mga Bahagi ng Hardware
Mga Bahagi ng Hardware

Ang Orange PI zero ay isang open-source solong board computer. Maaari nitong patakbuhin ang Android 4.4, Ubuntu, Debian. Gumagamit ito ng AllWinner H2 SoC, at mayroong 256MB / 512MB DDR3 SDRAM (256MB na bersyon ay Standard na bersyon. Ang Orange Pi Zero ay para sa sinumang nais na simulang lumikha ng teknolohiya - hindi lamang naubos ito. Ito ay isang simple, masaya, kapaki-pakinabang na tool na iyong maaaring gamitin upang simulang kontrolin ang mundo sa paligid mo (https://www.orangepi.org/orangepizero/). Kaya't eksaktong para sa atin na hinayaan natin ito:)

  • Metal / plastic / kahoy na kahon (Gumamit ako ng isang lumang Yamaha panlabas na cd-rw box)
  • Orange PI Zero o mas mahusay (maaaring magbago ang GPIO pinout kung gumamit ka ng ibang modelo)
  • 2x20 RGB LCD screen
  • Anumang SFF 3.5 / LFF 2.55 usb drive
  • Sata -> usb adapter. Tandaan na habang ang OrangePI ay hindi nagpapataw ng isang itaas na limitasyon sa maximum na kapasidad sa pagmamaneho gayunpaman maraming mga USB-to-SATA tulay ang ginagawa (2TB max). Ang orange na PI Zero na ginagamit ko ay mayroon lamang isang solong USB 2.0 port na may mabisang rate ng paglipat na 28 MB / s max. Pinili ko ang isang USB3.0 (handa para sa mga pag-upgrade sa hinaharap) -> SATA tulay (tatak ay hindi nabanggit) at takip nito ang limitasyon kaya mas mahusay na pumili ng isang tulay na napatunayan na sumusuporta sa mas malalaking drive tulad ng JMicron JMS567 chip based tulay. Gumawa ng iyong sariling pagsasaliksik bago bumili ng isa. Maaari kong mabuhay kasama ang bilis at limitasyon ng hard drive sa pamamagitan ng paggamit ng isang 2TB sata drive sa proyektong ito (kung maglagay ka ng mas malaking mga drive, makikilala ito ngunit makikita lamang ng OS ang unang 2TB nito kaya't ang natitirang kapasidad ay nawala).
  • 12V 2.5 Isang o mas mataas na amp adapter. Kalkulahin ang tungkol sa 500mA normal na paggamit para sa OPI Zero at 1.5A rurok para sa isang karaniwang LFF SATA drive. Ang labis na labis ay hindi kailanman nasasaktan. Sa aking pag-set up ang Yamaha psu (kung ano ang maaaring magbigay ng higit sa sapat na kasalukuyang sa parehong 12 + 5V daang-bakal) sa kasamaang palad ay sumabog: (dahil sa pag-uuri ng pangunahing switch sa GND para sa isang segundo kaya kailangan kong idikit sa isang regular na adapter, sa hindi bababa sa ginawang mas magaan ang kahon ng isang pares ng gramo.
  • Buck converter DC-DC 12V-> 5V. Ginamit ko ang parehong naaayos na mini buck tulad ng sa IronForge, gumagana nang perpekto.

Opsyonal

Kung nais mong gumastos ng + 10 $ pagkatapos ay maaari mong makuha ang Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) na katulad ng form factor at makakakuha ka ng Gbe at SATA3. Para sa mga ito ang Libra PI wiring library ay maaaring magamit: https://github.com/OrangePiLibra/WiringPi ngunit dahil iba ang pinout ng GPIO wala sa saklaw ng pagsusulat na ito.

Maaari mo ring gawin ang pagbuo na ito gamit ang bagong Orange PI Plus2 na mayroong konektor ng SATA at maaari mong laktawan ang paggamit ng sata-> usb converter lahat kasama ang kanilang mga limitasyon. Kung nagpaplano kang gumamit ng FreeBSD o iba pang BSDs ang serye ng Orange PI ay maaaring hindi ang pinakamahusay na pagpipilian dahil ang kanilang suporta sa hardware ay limitado (halimbawa kailangan mong gumamit ng USB stick upang mag-boot). Para sa BSD ito ang pinakamahusay na payo na gamitin ang Raspberry PI. Parehong ang C code para sa LCD at lahat ng mga shell script ay portable sa anumang iba pang mga system ng UNIX.

Hakbang 2: Disenyo ng Hardware

Disenyo ng Hardware
Disenyo ng Hardware
Disenyo ng Hardware
Disenyo ng Hardware
Disenyo ng Hardware
Disenyo ng Hardware

Ang kahon ng Yamaha ay sapat lamang upang maiimbak ang lahat ng ito, wala itong sapat na puwang para sa isang Orange PI PC o regular na Raspi form-factor board.

Ang Ethernet ay inilabas na may isang extender sa likod ng kahon. Tandaan na ang Orange PI zero ay mayroon lamang 100mbit / s Ethernet interface kung nais mong mas mabilis kakailanganin mong gumamit ng isa pang board tulad ng Asus Tinkerboard / RPI3B + / Iba pang mga modelo ng Orange PI.

Maling PIN Out ay ang isa at tanging pagkakamali na magagawa mo sa proyektong ito samakatuwid nagkakahalaga ng paglalapat ng ilang panuntunan sa mga prinsipyo ng hinlalaki:

1, Palaging subukang gamitin ang parehong kulay na cable mula END hanggang END. Ako mismo ang gumawa ng parehong "pagkakamali" sa ilang mga proyekto kung saan wala ako, simpleng dahil wala akong sapat na mahaba ang mga lalaki-lalaki / lalaki-babae / babae-babae na mga kable at tinapik ko ang 2 upang makasama lamang ang circuit. Kung hindi mo idokumento nang maayos ang iyong trabaho maaari itong humantong sa sakit ng ulo taon na ang lumipas kung saan kailangan mong gawin ang isang pag-aayos, mag-upgrade.

2, Mag-apply ng ilang hotglue sa mga konektor. Sa kaso ng paggamit ng mga arduino-starter kit style mm / mf / ff cables na hindi sa tuktok ng kalidad ng linya ito ay pangkaraniwan (lalo na kung lilipat ka / magdala ng aparato) na ang mga konektor ay madulas. Kung alam mo na ito ay magiging isang pangmatagalang aparato sa paggamit (posibleng gamitin hanggang sa masira ito ?!) Kung gayon mas mahusay na maglapat ng kaunting hotglue pareho sa OrangePI at LCD na bahagi ng mga konektor upang mapanatili silang magkasama. Maaari itong madaling matunaw / makalmot sa paglaon kung kinakailangan.

3, Ang OrangePI zero na kable Ang masamang balita ay ang pin ng Orange PI ay HINDI kapareho ng Raspberry PI 0/1/2/3 at may pagkakaiba pa rin sa pagitan ng iba pang mga modelo ng Orange PI. Ang pinakamahusay na paraan upang pumunta ay makuha ang library ng mga kable (bersyon ng Orange PI Zero). Ang imahe ay maaaring medyo nakalilito ngunit ito ang pinakamahusay na mahahanap ko. Ang isa ay isang 180 degree mirror ng isa pa. Bagaman ang CLI non graphic na imahe ay maaaring maging mas mahirap na maunawaan ito ay ang pinaka-tuwid na pasulong.

Palagi mong naiiba ang 2 dulo ng mga socket sa pamamagitan ng pagsasaalang-alang sa isang dulo bilang POSITIVE na dulo sa (+ 3.3 / + 5V) at iba pa bilang NEGATIVE na dulo (isang GND) -> ito ang dulo ng konektor na nakaharap sa port ng ETHERNET.

Mula sa talahanayan ng Mga Kabanata PI Zero kakailanganin mo lamang ng isang haligi ang wPI nakalimutan ang tungkol sa iba tulad ng wala sila doon.

Kaya halimbawa upang ikonekta ang LCD_E 15 (iyon ang wPI 15!) At LCD_RS 16 (iyon ang wPI 16!) Bilangin ang mga pin mula sa POSITIVE na dulo ng konektor (madaling gawin sa isang pluma o maliit na birador). Iyon ay magiging pisikal na pagbaba ng 4 na mga pin at 5 mga pin.

4, Pangkatin. Kung may posibilidad na ilagay ang mga gamit na pin sa tabi ng bawat isa (pagpapangkatin ang mga ito) palaging pinili iyon, ginagawa nitong magkaroon ng paghawak sa bawat isa kahit na walang hotglue at pati na rin sa iba pang mga proyekto kapag mayroon kang 2x 4x 6x molex konektor maaari mong samantalahin lamang ang mga pin na magkatabi. Dito ang pinakamahusay na magagawa mo ay ang pangkat ng 2-3s (mainam kapag gumagamit ng na-salvaged na jumper cables mula sa mga lumang PC).

Ginamit ang mga pin para sa koneksyon sa Screen ng OrangePI LCD:

// USE WIRINGPI PIN NUMBERS

#define LCD_E 15 // Paganahin ang Pin #define LCD_RS 16 // Magrehistro piliin ang 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 // Data pin 7

Ginamit ang mga pin para sa kontrol ng backlight ng RGB

$ G isulat ang 1 0

$ G isulat ang 4 1 $ G isulat ang 7 1

Orange PI zero wPI pin 1, 4, 7. Ang nag-iisang mahika na magagawa ng LCD na ito kumpara sa karaniwang pag-aayos ng asul o pag-ayos ng berdeng backlight LCD kung saan mayroon kang isang solong katod na kailangang hilahin pababa sa GND na mayroon itong 3 para sa 3 mga kulay. Pula, berde at asul. Sa pamamagitan ng pagbabago ng kumbinasyon kung alin ang naka-ON ay maaari mong ihalo ang iba't ibang mga kulay mula sa mga pangunahing kulay na ito ngunit ang mga mataas na dulo ay walang mga shade dahil hindi mo makontrol ang ningning ng isang kulay (alinman sa o naka-off).

Aditif na paghahalo ng kulay: pagdaragdag ng pula sa berdeng magbubunga ng dilaw; pagdaragdag ng pula sa asul na magbubunga ng magenta; pagdaragdag ng berde sa asul na magbubunga ng cyan; pagdaragdag ng lahat ng tatlong pangunahing mga kulay magkasama magbubunga ng puti.

Hakbang 3: Sistema ng Pagpapatakbo

Operating System
Operating System

Ang OrangeBOX boots up at Armbian linux (batay sa Debian Stretch) 4.14.18-sunxi kernel na may isang ligtas na naka-firewall na kapaligiran, kumokonekta sa isang VPN at naghihintay para sa mga remote backup na utos mula sa server.

Mga prinsipyo ng disenyo:

-Full luks based disk encryption (ang aparato mismo ay hindi naglalaman ng susi para sa pagbubukas ng backup drive. Pansamantalang makokopya mula sa remote server sa ram / dev / shm, binuksan ang drive at nabura ang susi. Matapos ang pag-backup sarado ang drive at ang OrangeBox ay awtomatikong nakasara sa loob ng 1 minuto.)

-Ang lahat ng mga utos at susi ay ipinadala mula sa remote server (ang aparato mismo ay naglalaman lamang ng isang vpn cert) wala itong ANUMANG pag-access sa remote server kahit na ang ssh mula sa aparatong ito ay na-firewall

-Ang mga lokal na filesystem na hindi naka-encrypt upang makapag-boot up ngunit hindi naglalaman ng anumang kapaki-pakinabang at dahil ang uplink ng VPN ay lubos na pinaghihigpitan sa kabilang dulo kahit na may kumpletong pagkawala ng aparato ang isang umaatake ay hindi maaaring gumawa ng anumang bagay

I-download ang Armbian Stretch mula sa

Patakbuhin at patakbuhin ang system:

apt-get update && apt-get upgrade

apt-get install sysvinit-core sysvinit-utils

I-edit ang / etc / inittab, ang lahat ng console ay maaaring hindi paganahin dahil ang kahon ay gagamitin bilang walang ulo. I-puna ang sumusunod na seksyon:

# 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

I-reboot ang iyong kahon at alisin ang systemd upang magkaroon ng isang tunay na bukas na mapagkukunan ng libreng bloatware system.

apt-get alisin

Mag-install ng ilang mga pakete

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

I-install ang wiringpi library

cd / usr / src

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

Lumikha ng orange na gumagamit para sa lcd display

groupadd -g 1000 orange

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

Ang bantay na hindi nagbabantay sa iyo

apt-get install watchdog

Tumingin sa / etc / default / watchdog # Simulan ang watchdog sa oras ng pag-boot? 0 o 1 run_watchdog = 1 # Simulan ang wd_keepalive pagkatapos ihinto ang watchdog? 0 o 1 run_wd_keepalive = 1 # Load module bago simulan ang watchdog watchdog_module = "none" # Tukuyin ang mga karagdagang pagpipilian sa watchdog dito (tingnan ang manpage).

Nakatingin sa /etc/watchdog.conf

# Hindi bababa sa paganahin ang mga ito

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

/etc/init.d/watchdog magsimula

Dapat mayroong hindi bababa sa 1 kernel thread at 1 proseso:

ugat 42 0.0 0.0 0 0? Ako <10:50 0:00 [watchdogd] root 14613 0.0 0.2 1432 1080? SLs 13:31 0:00 / usr / sbin / watchdog

Pagsubok:

Siguraduhing ititigil mo ang lahat at gumawa ng pag-sync at& sync && pag-sync upang isulat ang natitirang data sa disk. Pagkatapos bilang isyu sa ugat:

echo 1> / dev / watchdog

Pagkalipas ng ilang segundo dapat na mag-reboot ang makina.

Tulad ng itinuturo ng manu-manong:

o puno na ba ang proseso ng talahanayan?

o Mayroon bang sapat na libreng memorya? o Mayroon bang sapat na magagamit na memorya? o Naa-access ba ang ilang mga file? o May ilang mga file bang nabago sa loob ng isang naibigay na agwat? o Masyadong mataas ang average na load sa trabaho? o Naganap ba ang isang overflow ng talahanayan ng file? o Tumatakbo pa rin ba ang isang proseso? Ang proseso ay tinukoy ng isang pid file. o Ang ilang mga IP address ba ay sumasagot sa ping? o Nakatanggap ba ng trapiko ang mga interface ng network? o Masyadong mataas ang temperatura? (Ang data ng temperatura ay hindi palaging magagamit.) O Isagawa ang isang tinukoy na utos ng gumagamit na gumawa ng di-makatwirang mga pagsubok. o Isagawa ang isa o higit pang mga utos sa pagsubok / pagkumpuni na matatagpuan sa /etc/watchdog.d. Ang mga utos na ito ay tinatawag na may pagsubok o pag-aayos ng argumento. Kung alinman sa mga tseke na ito ay nabigo sa pagbabantay ay magdudulot ng isang shutdown. Dapat ang alinman sa mga pagsubok na ito maliban sa tinukoy ng gumagamit na binary ay tumatagal ng mas mahaba sa isang minuto ang makina ay mai-reboot din.

Ang tagapagbantay na ito ay maaaring gumana OK sa regular na arkitektura ng x86 ngunit sa mga board na nakabatay sa ARM tulad ng mga Raspberry PI, Orange PI ay nabigo ako sa hindi mabilang na beses. Ang sistema ay maaaring pumunta sa mga estado ng hang kung saan kahit ang tagapagbantay ay nabitin. I-configure lamang natin ito pa rin marahil ay mapapabuti ito sa isang apt-get upgrade sa mga nakaraang taon:(

Hakbang 4: Disenyo ng Software

Disenyo ng Software
Disenyo ng Software

Ang backup na proseso mismo ay batay sa rsync (pinakamahusay na tool sa pag-backup na naimbento) na naitulak ang data mula sa SERVER-> OrangeBOX.

Ang pagkuha ng data mula sa rsync ay ang mapaghamong bahagi lamang ng proyekto na magkaroon ng isang progress bar tungkol sa backup na nakalimbag sa LCD.

Mayroong 3 posibleng paraan upang makalkula ang pag-unlad ng pag-backup:

1, Paggamit ng mga formula tulad ng https://wintelguy.com/transfertimecalc.pl upang matukoy ang tinatayang oras na maaaring tumagal ng transfer

Oras ng Paglipat (d: h: m: s): 0: 02: 44: 00

Para sa paghahambing: Tinantyang oras upang ilipat ang 123 GB file sa iba't ibang mga link ng network (d: h: m: s): linya ng T1 / DS1 (1.544 Mbps) - 7: 09: 01: 46 Ethernet (10 Mbps) - 1:03: 20:00 Mabilis na Ethernet (100 Mbps) - 0: 02: 44: 00 Gigabit Ethernet (1000 Mbps) - 0: 00: 16: 24 10 Gigabit Ethernet (10 Gbps) - 0: 00: 01: 38

Kung natapos ang rsync ay hudyat ito ng script upang ihinto ang pagkalkula. Ang pamamaraang ito ay isang tinatayang at hindi maaasahan, pati na rin ang bilis ng pag-link ay hindi maayos, maaari itong bumagal, mapabilis muli. Ito ay isang pagkalkula lamang ng teoretikal.

2, Ang paggawa ng mga tseke sa laki sa direktoryo upang matukoy kung gaano karaming data ang na-sync namin. Maaaring maging napakabagal sa daan-daang mga GB ng maliliit na mga file (kahit na ang du -s sa Linux ay gumagawa ng ilang pag-cache kung muli mong isinasagawa ito)

Host A -> Ang data ng server na mai-back up ang Data dir: 235GB

Host B -> Orange box client data mayroon kami ngayon Data dir: 112GB

Ang delta ay 123 GB.

3, Kung ang filesystem ay nakatuon tulad ng sa aming case / dev / mapper / backup ay maaari nating samantalahin ang pangkalahatang tagapagpahiwatig ng paggamit ng filesystem upang matukoy kung paano umuusad ang aming backup at talagang mabilis itong sumpain. Sa kasong ito hindi namin kailangan na i-tubo ang rsync stdout kahit saan, magpatakbo lamang ng isang dry rsync, maghintay hanggang sa makumpleto, kalkulahin ang delta sa mga byte at i-crosscheck ito gamit ang libreng puwang kung ano ang mayroon kami sa backup drive at voila maaari naming gumawa ka ngayon ng isang magandang graph ng bar. Ito ang pamamaraan na pinili ko at narito ang aking script para dito:

#! / baseng / bash

# Backup Progress Calculator para sa OrangeBOX ng NLD # Bersyon: 0.2 (2018/03/05) # # Patakbuhin ito bilang hindi sikat na gumagamit mula sa cron # * * * * * /home/orange/backup_progress.sh &> / dev / null # # Ang script na ito ay responsable lamang para sa pagpapakita ng data sa LCD, nakikipag-usap ito # sa pangunahing programa nang hindi direkta sa pamamagitan ng posisyon at mga lock file. BACKUP_DRIVE = "/ dev / mapper / backup" VCloud = "$ HOME / start.pos" # disk paggamit sa simula ng backup na Temium = "$ HOME / trans.size" # pangkalahatang kalkuladong laki ng paglipat B94 = "$ HOME / backup.lck "# tinutukoy ang nagsimulang estado na FScript =" $ HOME / backup.fin "# ay tumutukoy sa natapos na estado LCloud1 =" $ HOME / lcd1.bar "# LCD data ng tagapagpahiwatig ng pag-unlad na L742 =" $ HOME / lcd2.bar "# LCD progreso data ng tagapagpahiwatig SHUTDOWN = "1" # Kung 1 magpapasimula ito ng isa pang iskrip na sumasara sa kahon sa dulo ng pag-backup BACKUP_CURRENT = "0" # Kailangang isimulan ngunit makakalkula DRIVE_SIZE = "" # Laki ng drive sa mga byte (pangalawa suriin) LCD = "sudo / bin / lcd" function is_mount () {grep -q "$ 1" / proc / mount status = $? } function na pula () {sudo / bin / lcdcolor red} function na berde () {sudo / bin / lcdcolor green} function na asul () {sudo / bin / lcdcolor blue} # I-clear ang estado (naka-set sa boot sa pamamagitan ng bootup_display.sh). Walang isinasagawang backup, HUWAG guluhin ang # status LCD. Ipakita lamang ang pag-usad kung sakaling mayroong isang patuloy na pag-backup => Walang pagsisimula ng file AT Walang fin file = umalis kung [! -f $ BFILE] && [! -f $ FFILE]; pagkatapos ay lumabas sa 1 fi # Kung natapos ang pag-backup ay ipapakita ng script na ito at alisin ang mga kandado # na hindi upang tumakbo muli hanggang sa susunod na pagsisimula. kung [-f $ FScript]; pagkatapos berde $ LCD "I-backup" "** Nakumpleto **" echo "Natapos ang Pag-backup" rm -rf $ BFILE $ TFIL $ FFIL $ LSON1 $ LFILE2 $ VFIL # Tapos na malinis ang backup kung [$ SHUTDOWN == "1"]; pagkatapos ay i-echo ang "Pagpapatupad ng script ng pag-shutdown …" /home/orange/shutdown.sh & fi exit 0 fi # Mula sa puntong ito ang script LAMANG nagpapatupad kung mayroong isang ONGOING backup # samakatuwid ang lahat ng mga error ay mai-print sa LCD at maging sanhi ng script # upang ma-abort gayunpaman hindi nito aalisin ang backup.lck file kaya't papasok dito nang paulit-ulit at iwaksi ang mga kundisyon. ay_mount $ BACKUP_DRIVE kung [$ status -ne 0]; pagkatapos ang pulang $ LCD "ERR: Backup drive" "ay hindi naka-mount!" echo "Ang backup drive ay hindi naka-mount" exit 1 fi kung [! -s $ TFILE]; pagkatapos ang pulang $ LCD "ERR: transfile" "ay walang laman" echo "Ang file ng pagkalkula ng laki ng transport ay walang laman." exit 1 fi BACKUP_OVERALL = $ (head -1 $ Temium | tr -d '\ n') kung [-z $ BACKUP_OVERALL]; pagkatapos pula $ LCD "ERR: Sukat ng pagbabasa muli" "mula sa hindi wastong" echo "ng backup ng pangkalahatang pagbabasa ng laki ay hindi wasto 1" exit 1 fi kung!

Bagaman simple ang code dito ay ilang paglalarawan kung ano ang ginagawa nito:

1, Kung ang BFIL o FSON ay wala (na kung saan ay ang estado pagkatapos ng isang malinaw na pagsisimula) na nagpapahiwatig na walang backup na proseso kaya HUWAG gumawa ng anumang umalis na lamang. Sa ganitong paraan maaari mong i-grap ang anumang magagandang impormasyon na nais mo tungkol sa bootup tulad ng hostname, ip, uptime atbp at hindi ito guguluhin.

2, Tumalon tayo sa seksyong is_mount $ BACKUP_DRIVE. Paalala lamang ang tanging paraan na nakarating kami dito ay nagsimula ang isang backup kaya mayroon ang B94. Ngayon ang code ay ginagawa lamang ng iba't ibang mga tseke ng error tulad ng pag-install ng backup drive?, Ang pangkalahatang sukat ng tungkol sa pag-back up na lumampas sa drive? o iba pang mga pagkakamali. Tandaan na ito ay isang programa na MAGPakita lamang kahit na ang laki ay lalampas sa mga pag-backup hindi ito magpapalaglag ng anuman.

3, OK lahat ng mga tseke ng error na-clear ang oras upang makalkula ang porsyento ng graph. Una ang script ay tumatagal ng isang "snapshot" ng puwang na ginamit sa mga byte sa backup filesystem ngayon at iniimbak ito sa Vemium. Ano ang layunin nito: ang isang bash script ay walang estado, nawawalan ito ng data sa pagitan ng mga pagpapatupad, kaya kung nais mong "alalahanin" ang ilang data mula sa nakaraang pagpapatupad kailangan mong iimbak ito sa kung saan. Sa aming kaso ito ay isang simpleng text file lamang. Upang gawing simple sabihin natin na ang aming START_POS ay 1GB (data na mayroon kami), ang nais naming i-backup ay + 2GB at ang pangkalahatang kapasidad sa pagmamaneho ay 10GB.

4, Susunod na oras kapag pinatakbo ng script ang VICH na mayroon at babasahin ito pabalik (kaya alam namin kung ano ang panimulang posisyon kung sakaling ang drive ay hindi walang laman) upang makalkula ang BACKUP_CURRENT na mahalagang isang delta ng puwang na ginamit ngayon sa backup drive na minus ang panimulang posisyon kung ano ang nai-save namin sa Vemium sa huling pag-ikot (muli ito ang data na mayroon kami sa drive nang magsimula ang backup). Gumagawa ang script sa loob ng mga byte ngunit upang gawing simple pagkatapos ng kalahating oras na nai-back up namin ang data ng 500MB pagkatapos ang formula ay magiging BACKUP_CURRENT = 1.5GB - 1GB (paunang estado) => na magbabalik sa atin nang eksakto sa totoong data na 500 MB, iyon ay kung ano ang nai-back up namin sa ngayon. Maaari mong makita iyon nang hindi sinusubaybayan kung ano ang orihinal na data ay sa simula ng pag-backup ay mabibigo ang pagkalkula ng laki na ito sapagkat makikita nito na ang puwang na ginamit ngayon ay 1.5GB nang hindi alam na ang 1 gig data ay naroon sa disk sa lahat ng oras nagmumula sa isang nakaraang pag-backup kaya ipalagay na ang server ay nagpadala sa amin ng 1.5GB data sa halip na 500MB.

5, BACKUP_OVERALL ay mababasa, ang data na ito ay kinakalkula ng server noong ginawa nito ang paunang dry rsync (kaya't ito ay isang panlabas na mapagkukunan ng data na naglalaman ng dami ng bytes kung ano ang mai-back up mula sa Server-> OrangeBOX). Ang halagang ito ay susuriin laban sa pangkalahatang FREE space sa disk sa ngayon at kung lumagpas ito pagkatapos ay ipapakita ang isang mensahe ng error sa lcd at ititigil ng script ang pagpapatupad. Tandaan muli na ang lahat ng ginagawa ng script na ito ay LAMANG na ipinapakita, hindi ito makagambala sa proseso ng pag-backup. Kung linisin mo ang mga file sa disk o ang dami ng mga file ay nagbabago nang malayo at samakatuwid ang BACKUP_OVERALL ay nagbabago sa isang punto ay magpapatuloy ito.

6, Sa wakas tapos na kami sa pangalawang antas ng mga tseke oras na upang ipakita ang isang bagay. Parehong ipinapakita ng script ang data sa console at sa lcd gamit ang isang simpleng C app. Ang background ay inilipat sa BLUE na nagpapahiwatig na ang backup ay sa wakas ay nagsimula at ang pag-usad na kinakalkula ng sumusunod na pormula PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). Ito ay isang pangunahing pagkalkula ng porsyento na kinukuha namin ang kasalukuyang halaga, sa aming halimbawa na 0.5GB * 100 / 2GB = 25%.

7, Ang mga numero ay nai-convert din mula sa byte sa Mega / Giga bytes at awtomatikong ipinapakita ang screen sa MB kung mas mababa ito sa 1GB.

8, Isang bagay na natitira upang mapa ito sa aming kaso ay ang 25% sa isang 20 haligi LCD. Iyon ay magiging 25 * 20/100 = 5 sa aming halimbawa. Sa kasalukuyan ang pag-refresh sa programa ng LCD ay ipinatupad na sa tuwing tatawagin mo ang programa ay muling mai-redraw ang buong screen. Kaya't sa kasong ito tatakbo ito para sa loop ng 5 beses upang gumuhit ng 5 hashmarks # sa screen na ito ay magpapakita bilang pangit na pagkutitap sa bawat pag-ikot kaya sa halip ay isinusulat ko ang kinakalkula na data ng pag-unlad ng bar sa Lemium1 at 2, na sa kasong ito pagkatapos ang 5 pag-ikot ay naglalaman ng #### at ito ay basahin muli at ipinapakita sa LCD. Maaari mong ilagay ang Lemium1 at 2 sa ramdisk pati na rin upang mai-save ang sdcard mula sa labis na pagpapatakbo ng pagsusulat, hindi ito naging sanhi ng anumang mga isyu para sa akin, ang script ay tumatakbo nang isang beses sa bawat minuto mula sa cron.

9, Kapag natapos ng backup ang iba pang script mula sa server na nagpapatakbo ng rsync ay hawakan ang Femium (Finish File). Sa susunod na loop backup_progress.sh pagkatapos ay ipapakita na ang backup ay nakumpleto at opsyonal na tumawag sa isa pang script upang i-shut down ang OrangeBOX. Tinatanggal nito ang mga lock file nito sa puntong ito na ginagawang imposible ang karagdagang pagpapatupad kaya kahit na hindi mo paganahin ang pag-shutdown sa susunod na minuto kapag tumatakbo ang script na ito ay titigil kaagad dahil wala ang B94 at wala ang F94. Samakatuwid ito ay ipapakita ang backup na nakumpleto na mensahe nang walang katiyakan maliban kung ang backup ay muling na-restart.

Remote backup script (orange-remote.sh):

Kakailanganin mong makabuo ng isang ssh key para sa backup at isang susi para sa luks na naka-encrypt para sa drive. Kapag pinatakbo mo ang remote na backup nang manu-mano sa unang pagkakataon ay mai-save nito ang mga orange na kahon na host ng fingerprint sa mga file ng mga host (mula sa puntong ito maaari itong awtomatikong tumakbo sa pamamagitan ng cron).

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

Upang malaman ang iyong tagakilala ng hard disk tumakbo uuid, blkid o tingnan lamang ang kaukulang / dev / disk / directories.

Ang isang direksyong isama ang ibukod ay maaaring i-setup kung hindi mo nais na i-back up ang lahat. Ito ay medyo nakakainis na proseso dahil para sa rsync kung nais mong ibukod ang isang solong sub-direktoryo na malalim sa istrakturang kailangan mong gawin:

+ / a

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

Dahil ang script na ito ay nagpapatupad ng mga utos sa OrangeBOX mula sa malayo wala itong pangangasiwa sa mga variable ng pagbabalik mula sa panig na iyon, samakatuwid gumagamit ako ng ilang mga matalinong trick tulad ng ilalabas nito ang mensahe ng pagbubukas ng remote drive sa /tmp/contmsg.txt, pagkatapos ay i-parse upang makita kung ito ay matagumpay, kung hindi pagkatapos ay binabago nito ang rsync binary sa hindi naisakatuparan sa gayon ang rsync ay hindi susubukan na mag-upload ng data sa mga rootp ng OrangePIs na pinupuno ang SDcard. Isang mahusay na kasanayan din upang maitakda ang hindi nababago na bit sa chattr + i / mnt / backup upang gawin itong imposible.

Ang laki ng precalculation ay nagaganap nang lokal sa Server samakatuwid ang file na ito ay kailangang maipadala sa OrangeBOX sa susunod na hakbang.

Ang pangunahing backup ay pinasimulan bilang isang loop para sa ((i = 0; i <100; i ++)); gawin dahil sa kaso ng mababang kalidad ng koneksyon sa DSL / Cable internet rsync ay madalas na masira, timeout. Kung matagumpay itong nakumpleto ang loop ay masisira nang hindi sinusubukan ang higit pang mga pag-ulit. Gumagawa ito nang walang kamali-mali sa mahusay na mga operating system, subalit kung sa ilang kadahilanan ang remote box ay magiging windows at magkakaroon ng access na tinanggihan tulad ng regular sa NTUSER. DAT pagkatapos ay babalik ang rsync ng isang error code at ang loop na ito ay papatayin ng 100 beses at pagkatapos ay mabigo pa rin.

Hakbang 5: Listahan ng Pagsara at ToDo

Pagsara at Listahan ng ToDo
Pagsara at Listahan ng ToDo
Pagsasara at Listahan ng ToDo
Pagsasara at Listahan ng ToDo

Ang aking itinuturo ay nagpapakita muli kung paano makakalikha ng isang bagay na mas mahusay, mas napapasadyang aparato mula sa isang 10 $ computer na sarili mo na nakakakuha ng impiyerno mula sa Buffalo kasama ang pagmamay-ari na naka-lock na mga aparato ng NAS, kakaibang panloob na pagkahati, busybox na lumpo ng linux na may mga segfaulting tool, pinamamahalaang sa pamamagitan ng kanilang windows software, closed firmware, hindi magandang dokumentasyon at suporta at kahit gaano karaming pera ang gugugol mo ay hindi ka makakakuha ng isang tagapagpahiwatig ng pag-unlad na ipinapakita ang iyong backup na hindi banggitin kung gaano cool ang hitsura ng OrangeBox (Gumagamit din ako ng orange na CAT5 cable dito: D).

Sa mga mini computer ay nagiging mas at mas malakas habang pinapanatili ang parehong <100 $ linya ng presyo maaari naming gamitin ang mga ito para sa higit pa at maraming mga gawain. Tulad ng mga port ng Gbe Ethernet ay pangkaraniwan sa mga araw na ito sa 1-2 taon ang memorya sa mga board na ito ay kapansin-pansing tataas at maaari silang magamit para sa mga backup na sistema ng ZFS din.

-Mga pinong tagapagpahiwatig ng pag-unlad ng butil ng programa ng C (tingnan ang WasserStation isa sa aking iba pang proyekto). Sa ngayon # hashmark # character lamang na ginamit sa character mode na may lcdPuts (lcd, line1), maaari itong mapabuti kahit na gumagamit ng mga character na LCD upang hatiin ang 1 haligi sa 5 mga bahagi at ang pangunahing programa ng C ay maaaring tumagal ng isang integer tulad ng 25 at gumuhit ang progress bar nang maayos o karagdagang pagbuti sa pamamagitan ng paggamit ng isang graphic na LCD

-Posibilidad na magkaroon ng isang naaalis na hdd para sa paglikha ng mga bago at bagong pag-backup at paglipat ng mga ito sa iba't ibang mga lokasyon (kung ang kahon ay nakakita ng isang walang laman na drive pagkatapos dapat itong awtomatikong i-format ito gamit ang naka-encrypt na key kapag natanggap ito).

-Kung nais mong mai-print ang iyong sariling kaso gamit ang makerbot ang OrangeNAS ay maaaring maging kawili-wili para sa iyo:

Inirerekumendang: