Mündəricat:

OrangeBOX: OrangePI Əsaslı Təhlükəsiz Yedəkləmə Cihazı: 5 addım
OrangeBOX: OrangePI Əsaslı Təhlükəsiz Yedəkləmə Cihazı: 5 addım

Video: OrangeBOX: OrangePI Əsaslı Təhlükəsiz Yedəkləmə Cihazı: 5 addım

Video: OrangeBOX: OrangePI Əsaslı Təhlükəsiz Yedəkləmə Cihazı: 5 addım
Video: The Ubuntu Orange Box 2024, Noyabr
Anonim
OrangeBOX: OrangePI Əsaslı Təhlükəsiz Yedəkləmə Cihazı
OrangeBOX: OrangePI Əsaslı Təhlükəsiz Yedəkləmə Cihazı
OrangeBOX: OrangePI Əsaslı Təhlükəsiz Yedəkləmə Cihazı
OrangeBOX: OrangePI Əsaslı Təhlükəsiz Yedəkləmə Cihazı

OrangeBOX, hər hansı bir server üçün hamısı bir arada uzaq saxlama ehtiyat qutusudur.

Serveriniz yoluxmuş, zədələnmiş, silinə bilər və bütün məlumatlarınız hələ də OrangeBOX -da qorunur və heç kim heç bir şey etmədən irəliləyiş göstəricisi görmək və əlavə etdiyiniz bir cihaz kimi mümkün olmayan bir işi istəməz sonunda tüstü çıxmayacaq:)).

OrangeBOX, ilk növbədə bir proqram deyil, bir hardware hack olan ilk layihəmdir. Əsasən LCD quraşdırılmış xüsusi bir NASdır.

Addım 1: Avadanlıq hissələri

Avadanlıq hissələri
Avadanlıq hissələri
Avadanlıq hissələri
Avadanlıq hissələri
Avadanlıq hissələri
Avadanlıq hissələri

Orange PI zero, açıq mənbəli bir lövhəli kompüterdir. Android 4.4, Ubuntu, Debian ilə işləyə bilər. AllWinner H2 SoC -dən istifadə edir və 256MB/512MB DDR3 SDRAM -a malikdir (256MB versiyası Standart versiyadır. Orange Pi Zero texnologiya ilə yaratmağa başlamaq istəyən hər kəs üçündür - yalnız istehlak etmir. Bu sadə, əyləncəli və faydalı bir vasitədir. Ətrafınızdakı dünyaya nəzarəti ələ keçirmək üçün istifadə edə bilərsiniz (https://www.orangepi.org/orangepizero/). Buna görə də davam etməyimiz tam olaraq bizim üçündür:)

  • Metal/plastik/taxta qutu (köhnə Yamaha xarici cd-rw qutusundan istifadə etmişəm)
  • Orange PI Zero və ya daha yaxşı (başqa bir model istifadə etsəniz GPIO pinout dəyişə bilər)
  • 2x20 RGB LCD ekranlar
  • İstənilən SFF 3.5/ LFF 2.55 usb sürücüsü
  • Sata -> usb adapteri. Unutmayın ki, OrangePI maksimum sürücü tutumuna üst limit qoymasa da, bir çox USB-SATA körpüsü (maksimum 2 TB) edir. İstifadə etdiyim narıncı PI Zero yalnız effektiv ötürmə sürəti 28 MB/s olan tək bir USB 2.0 portuna malikdir. Bir USB3.0 (gələcək yükseltmeler üçün hazırlanmış) -> SATA körpüsü (marka qeyd olunmayacaq) seçmişəm və limiti məhdudlaşdırır, buna görə də JMicron JMS567 çip əsaslı körpülər kimi daha böyük sürücüləri dəstəkləyən bir körpü seçmək daha yaxşıdır.. Birini almadan əvvəl öz araşdırmalarınızı aparın. Bu layihədə 2TB sata sürücüsü istifadə edərək sürət və sabit disk limiti ilə yaşaya bilərəm (daha böyük disklər qoysanız tanınacaq, ancaq OS yalnız ilk 2 TB -ni görəcək, buna görə də qalan tutum itirdi).
  • 12V 2.5 A və ya daha yüksək amper adapteri. OPI Zero üçün təxminən 500mA normal istifadəni və standart LFF SATA sürücüsü üçün 1.5A zirvəsini hesablayın. Həddindən artıq ölçmək heç vaxt zərər vermir. Quruluşumda Yamaha psu (hər iki 12+5V rayda kifayət qədər çox cərəyan verə bilən) təəssüf ki partladı: (əsas keçidi bir saniyə GND -ə sıralamaq səbəbindən adi bir adapterə yapışdırmalı oldum. heç olmasa qutunu bir neçə qram yüngülləşdirdi.
  • Buck çeviricisi DC-DC 12V-> 5V. IronForge ilə eyni tənzimlənən mini dollardan istifadə etdim, mükəmməl işləyir.

İsteğe bağlı

+ 10 $ xərcləmək istəsəniz, oxşar forma faktoru olan və Gbe və SATA3 əldə edən Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) əldə edə bilərsiniz. Bunun üçün Tərəzi PI məftil kitabxanasından istifadə edilə bilər: https://github.com/OrangePiLibra/WiringPi, lakin GPIO pinout fərqli olduğu üçün bu yazının əhatə dairəsindən xaricdir.

Bu quruluşu SATA konnektoru olan yeni Orange PI Plus2 ilə də edə bilərsiniz və məhdudiyyətləri ilə birlikdə sata-> usb çeviricilərinin istifadəsini atlaya bilərsiniz. FreeBSD və ya digər BSD -lərdən istifadə etməyi planlaşdırırsanız, Orange PI seriyası, hardware dəstəyi məhdud olduğu üçün ən yaxşı seçim olmaya bilər (məsələn, yükləmək üçün USB stick istifadə etməlisiniz). BSDs üçün Raspberry PI istifadə etmək ən yaxşı məsləhətdir. Həm LCD üçün C kodu, həm də bütün qabıq skriptləri hər hansı digər UNIX sisteminə daşınır.

Addım 2: Avadanlıq Dizaynı

Avadanlıq Dizaynı
Avadanlıq Dizaynı
Avadanlıq Dizaynı
Avadanlıq Dizaynı
Avadanlıq Dizaynı
Avadanlıq Dizaynı

Yamaha qutusu bütün bunları saxlamaq üçün kifayət idi, Orange PI PC və ya adi Raspi forma faktor lövhəsi üçün kifayət qədər yer olmayacaqdı.

Ethernet qutunun arxasına bir genişləndirici ilə çıxarıldı. Unutmayın ki, Orange PI sıfırının yalnız 100mbit/s Ethernet interfeysi var, daha sürətli istəsəniz Asus Tinkerboard/RPI3B+/Digər Orange PI modelləri kimi başqa bir lövhədən istifadə etməlisiniz.

Yanlış PİN Çıxış bu layihədə edə biləcəyiniz yeganə səhvdir, buna görə də bəzi prinsipləri tətbiq etməyə dəyər:

1, Həmişə ENDdən END -ə qədər eyni rəngli kabeli istifadə etməyə çalışın. Elimdə kifayət qədər uzun kişi-kişi/kişi-qadın/dişi-qadın kabelləri olmadığından və davam etmək üçün 2-ni yamadığım üçün özüm etmədiyim bəzi layihələrdə eyni "səhvi" edirəm. dövrə. İşinizi düzgün sənədləşdirməsəniz, bu, illər sonra baş ağrısına səbəb ola bilər, burada təmir etməli, yeniləməlisiniz.

2, bağlayıcılara bir az isti yapışqan tətbiq edin. Bu arduino başlanğıc dəsti üslubunda mm/mf/ff kabellərin keyfiyyəti yüksək olmayan istifadə edildikdə, konnektorların sürüşməsi olduqca yaygındır (xüsusən də cihazı gəzdirsəniz/nəql etsəniz). Uzun müddətli bir istifadə cihazı olacağını bilirsinizsə (bəlkə də qırılana qədər istifadə edin ?!), onları bir yerdə saxlamaq üçün bağlayıcıların həm OrangePI, həm də LCD tərəfinə bir az isti yapışqan tətbiq etmək daha yaxşıdır. Lazım gələrsə, sonradan asanlıqla əridilə bilər.

3, OrangePI sıfır naqilləri Pis xəbər, Orange PI pinoutunun Raspberry PI 0/1/2/3 ilə eyni olmaması və digər Orange PI modelləri arasında hətta fərq olmasıdır. Getməyin ən yaxşı yolu kabel kitabxanasını əldə etməkdir (Orange PI Zero versiyası). Şəkil bir az qarışıq ola bilər, amma tapa biləcəyim ən yaxşısı idi. Biri digərinin 180 dərəcə güzgüsüdür. CLI -nin qrafik olmayan görüntüsünü başa düşmək daha çətin olsa da, ən düz irəlidir.

Həmişə bir ucunu (+3.3/+5V) ilə POSİTİV ucu, digərini isə NEGATİF ucu (bir GND) olaraq qəbul edərək hər zaman yuvaların 2 ucunu fərqləndirə bilərsiniz -> bu, ETHERNET portuna baxan konnektorun sonudur..

Wiring PI Zero cədvəlindən, wPI -nin orada olmayacağı kimi digərlərini unudduğu yalnız bir sütuna ehtiyacınız olacaq.

Məsələn, LCD_E 15 -i (wPI 15!) Və LCD_RS 16 -nı (yəni wPI 16!) Birləşdirmək üçün konnektorun POZİTİF ucundakı pinləri sayın (qələm və ya kiçik tornavida ilə etmək asandır). Fiziki olaraq 4 sancaq və 5 sancaq aşağı düşəcək.

4, qruplaşdırın. İstifadə edilmiş sancaqları bir -birinin yanında yerləşdirmək imkanı varsa (onları qruplaşdırmaq) həmişə bunu seçərsə, bu, isti yapışqan olmadan da bir -birlərini tutmağa məcbur edir və 2x 4x 6x molex konnektorlarınız olduqda digər layihələrdə də edə bilərsiniz. Bir -birinin yanında olan pinlərdən istifadə edin. Burada edə biləcəyiniz ən yaxşısı 2-3s qrupudur (köhnə kompüterlərdən xilas edilmiş tullanan kabellər istifadə edərkən idealdır).

OrangePI LCD Ekran bağlantısı üçün istifadə olunan pinlər:

// WIRINGPI PIN NÖMRƏLƏRİNDƏN İSTİFADƏ EDİN

#define LCD_E 15 // Enable Pin #define LCD_RS 16 // Qeyd pin seçin #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 // Məlumat pin 7

RGB arxa işığı idarə etmək üçün istifadə olunan pinlər

$ G yaz 10

$ G yaz 4 1 $ G yaz 7 1

Narıncı PI sıfır wPI sancaqları 1, 4, 7. Bu LCD -nin standart düzəldici mavi ilə müqayisədə edə biləcəyi yeganə sehr və ya yaşıl arxa işıqlı LCD -ni düzəltmək üçün tək bir katodunuz var ki, onu 3 üçün 3 olan GND -ə endirmək lazımdır. rənglər. Qırmızı, yaşıl və mavi. Açılan kombinasiyanı dəyişdirərək, bu əsas rənglərdən fərqli rəngləri qarışdıra bilərsiniz, ancaq rəngin parlaqlığını idarə edə bilmədiyiniz üçün (ya açılır, ya da söndürülür) yalnız üst ucları çalarları yoxdur.

Əlavə rəng qarışığı: qırmızıya yaşıl rəng əlavə etmək sarı rəng verir; mavi rəngə qırmızı əlavə edərək magenta verir; maviyə yaşıl əlavə etmək mavi rəng verir; hər üç əsas rəngi əlavə edərək ağ verir.

Addım 3: Əməliyyat sistemi

Əməliyyat sistemi
Əməliyyat sistemi

OrangeBOX açılır və Armian linux (Debian Stretch əsasında) 4.14.18-sunxi nüvəsi təhlükəsiz bir firewall mühiti ilə VPN-ə qoşulur və serverdən uzaqdan ehtiyat əmrlərini gözləyir.

Dizayn prinsipləri:

-Tam luk əsaslı disk şifrələməsi (cihazın özündə ehtiyat sürücüsünü açmaq üçün açar yoxdur. Bu müvəqqəti olaraq uzaq serverdən ram /dev /shm -ə kopyalanacaq, sürücü açılıb açar silinəcəkdir. Yedəkləmə başa çatdıqdan sonra sürücü bağlanır və OrangeBox avtomatik olaraq 1 dəqiqədə bağlanır.)

-Bütün əmrlər və açarlar uzaq serverdən göndərilir (cihazın özündə yalnız vpn sertifikatı var) uzaq serverə heç bir girişi yoxdur, hətta bu cihazdan ssh firewalled

Yerli fayl sistemləri açılmaq üçün şifrələnməmişdir, lakin faydalı bir şey yoxdur və VPN bağlantısı digər tərəfdən cihazın tamamilə itirilməsi ilə belə məhdudlaşdırıldığı üçün təcavüzkar heç nə edə bilməz.

Https://www.armbian.com/orange-pi-zero/ saytından Armbian Stretch proqramını yükləyin

Sistemi işə salın:

apt-get update && apt-get upgrade

apt-get sysvinit-core sysvinit-utils qurun

/Etc /inittab -ı düzəldin, qutu başsız olaraq istifadə ediləcəyi üçün bütün konsol deaktiv edilə bilər. Aşağıdakı bölməni şərh edin:

#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

Qutunuzu yenidən başladın və əsl açıq mənbə bloatware pulsuz bir sistemə sahib olmaq üçün systemd -i silin.

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

Bəzi paketləri quraşdırın

apt-get install cryptsetup vim htop rsync ekran gcc git etmək

Wiringpi kitabxanasını quraşdırın

cd /usr /src

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

LCD ekran üçün narıncı istifadəçi yaradın

groupadd -g 1000 portağal

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

Səni izləməyən gözətçi it

apt-get watchdog qurun

/Etc/default/watchdog -a baxırsınız # Gözətçiyə yükləmə vaxtında başlasın? 0 və ya 1 run_watchdog = 1 # Gözətçini dayandırdıqdan sonra wd_keepalive başladın? 0 və ya 1 run_wd_keepalive = 1 # Gözətçiyə başlamazdan əvvəl modulu yükləyin watchdog_module = "none" # Burada əlavə gözətçi seçimləri göstərin (manpage bax).

/Etc/watchdog.conf saytına baxırıq

# Heç olmasa bunları aktivləşdir

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

/etc/init.d/watchdog başlanğıcı

Ən azı 1 nüvəli mövzu və 1 proses olmalıdır:

kök 42 0.0 0.0 0 0? Mən <10:50 0:00 [gözətçi] kök 14613 0.0 0.2 1432 1080? SLs 13:31 0:00/usr/sbin/watchdog

Test:

Qalan məlumatları diskə yazmaq üçün hər şeyi dayandırdığınızdan və sinxronizasiya etdiyinizdən əmin olun. Sonra kök problem olaraq:

echo 1> /dev /watchdog

Bir neçə saniyə sonra maşın yenidən başlamalıdır.

Təlimatda göstərildiyi kimi:

o Proses cədvəli doludurmu?

o Kifayət qədər boş yaddaş varmı? o Kifayət qədər ayrılan yaddaş varmı? o Bəzi fayllar əlçatandırmı? o Bəzi fayllar müəyyən bir müddət ərzində dəyişdirilibmi? o Orta iş yükü çoxmu yüksəkdir? o Bir fayl masası daşması baş verdi? o Bir proses hələ də davam edirmi? Proses bir pid faylı ilə müəyyən edilir. o Bəzi IP ünvanları pingə cavab verirmi? o Şəbəkə interfeysləri trafik alır? o Temperatur çox yüksəkdirmi? (Temperatur məlumatları həmişə mövcud olmur.) O İstifadəçi tərəfindən təyin edilmiş əmri yerinə yetirərək ixtiyari testlər aparın. o /etc/watchdog.d -də tapılan bir və ya daha çox test/təmir əmrini yerinə yetirin. Bu əmrlər arqument sınağı və ya təmiri ilə çağırılır. Bu yoxlamalardan hər hansı biri uğursuz olarsa, gözətçi bir bağlamaya səbəb olacaq. İstifadəçi tərəfindən təyin olunan ikili istisna olmaqla bu testlərdən hər hansı biri bir dəqiqədən çox davam edərsə, maşın da yenidən başlayacaq.

Bu gözətçi adi x86 arxitekturalarında yaxşı işləyə bilərdi, lakin Raspberry PIs, Orange PI kimi ARM əsaslı lövhələrdə saysız -hesabsız uğursuzluğa düçar olmuşdum. Sistem hətta gözətçi itin də asılı olduğu vəziyyətlərə düşə bilər. Gəlin konfiqurasiya edək, bəlkə də illər keçdikcə apt-get yeniləməsi ilə yaxşılaşacaq:(

Addım 4: Proqram Dizaynı

Proqram Dizaynı
Proqram Dizaynı

Yedəkləmə prosesinin özü rsync əsaslıdır (indiyə qədər icad edilmiş ən yaxşı yedekləmə vasitəsi) məlumat SUNUCU-> OrangeBOX-dan ötürülür.

Məlumatların rsync -dən çıxarılması, LCD -də çap edilmiş ehtiyat nüsxəsi haqqında bir irəliləyiş çubuğunun olması layihənin yeganə çətin hissəsi idi.

Yedəkləmə prosesini hesablamağın 3 mümkün yolu var idi:

1, Transferin təxmini vaxtını təyin etmək üçün https://wintelguy.com/transfertimecalc.pl kimi formullardan istifadə edin

Transfer vaxtı (d: h: m: s): 0: 02: 44: 00

Müqayisə üçün: 123 GB faylını fərqli şəbəkə bağlantıları (d: h: m: s): T1/DS1 xətti (1.544 Mbps) - 7: 09: 01: 46 Ethernet (10 Mbps) - 1:03: 20:00 Sürətli Ethernet (100 Mbps) - 0: 02: 44: 00 Gigabit Ethernet (1000 Mbps) - 0: 00: 16: 24 10 Gigabit Ethernet (10 Gbps) - 0: 00: 01: 38

Rsync bitərsə, hesablamanı dayandırmaq üçün skriptə siqnal verir. Bu üsul yalnız təxmini və etibarlı deyil, həm də keçid sürəti düzəldilmir, yavaşlaya bilər, yenidən sürətləndirə bilər. Bu yalnız nəzəri bir hesablamadır.

2, artıq nə qədər məlumatı sinxronlaşdırdığımızı təyin etmək üçün kataloqdakı ölçü yoxlamaları aparırıq. Yüzlərlə GB -lıq kiçik fayllarla çox yavaşlaya bilər (Linuxda du -lar yenidən işləsəniz bəzi önbelleğe alır)

A Host -> Yedəklənəcək server məlumatları Məlumat dir: 235 GB

Host B -> Hazırda əldə etdiyimiz portağal qutusu müştəri məlumatları Data dir: 112GB

Delta həcmi 123 GB.

3, fayl sistemi bizim vəziyyətimizdə olduğu kimi/dev/mapper/backup olarsa, ehtiyat sistemimizin necə inkişaf etdiyini və bunun həqiqətən lənətləndiyini müəyyən etmək üçün ümumi fayl sistemi istifadə göstəricisindən istifadə edə bilərik. Bu vəziyyətdə rsync stdout -u heç bir yerə köçürməyimizə ehtiyac yoxdur, sadəcə quru bir rsync işlədin, tamamlanana qədər gözləyin, deltanı baytla hesablayın və ehtiyat sürücüsündə və voilada olan boş yerlə bunu yoxlayın İndi gözəl bir çubuq qrafiki hazırlayın. Bu mənim seçdiyim metod idi və bunun üçün ssenarim budur:

#!/bin/bash

NLD tərəfindən # OrangeBOX üçün # Yedəkləmə Proqramı Kalkulyatoru # Versiya: 0.2 (2018/03/05) # # cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # -dən imtiyazsız istifadəçi kimi işlədin Bu skript yalnız məlumatların LCD -də göstərilməsindən məsuldur, # proqramla dolayı yolla mövqe və kilid faylları vasitəsi ilə əlaqə qurur. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # ehtiyatın əvvəlində # disk istifadəsi TFILE = "$ HOME/trans.size" # ümumi əvvəlcədən hesablanmış köçürmə ölçüsü BFILE = "$ HOME/ backup.lck " # başlanğıc vəziyyəti təyin edir FFILE =" $ HOME/backup.fin " # bitmiş vəziyyəti təyin edir LFILE1 =" $ HOME/lcd1.bar " # LCD tərəqqi göstəricisi məlumatları LFILE2 =" $ HOME/lcd2.bar " # LCD irəliləyişi göstərici məlumatları SHUTDOWN = "1" # 1 olarsa, ehtiyat nüsxənin sonundakı qutunu bağlayan başqa bir skript başlatacaq BACKUP_CURRENT = "0" # Başlanğıc olmalıdır, lakin hesablanacaq DRIVE_SIZE = "" # Sürücü ölçüsü baytla (ikincil) yoxlayın) LCD = "sudo /bin /lcd" funksiyası is_mount () {grep -q "$ 1" /proc /mounts status = $? } funksiyası qırmızı () {sudo /bin /lcdcolor qırmızı} funksiyası yaşıl () {sudo /bin /lcdcolor yaşıl} funksiyası mavi () {sudo /bin /lcdcolor mavi} # Açıq vəziyyət (bootup_display.sh ilə yüklənməyə qoyulur). Yedəkləmə davam etmir, # status LCD -ni pozmayın. Davam edən bir yedek varsa yalnız tərəqqi göstərin => Başlanğıc faylı yoxdur və fin faylı yoxdur = əgər [! -f $ BFILE] && [! -f $ FFILE]; sonra 1 fi -dən çıxın # Yedəkləmə tamamlandıqda bu skript bunu göstərəcək və kilidləri çıxaracaq # növbəti açılışa qədər yenidən işləməyəcək. əgər [-f $ FFILE]; sonra yaşıl $ LCD "Yedəkləmə" "** Tamamlandı **" echo "Yedəkləmə Tamamlandı" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # [$ SHUTDOWN == "1"] olduqda ehtiyat nüsxəsi təmizləndi; sonra echo "Bağlama skriptini icra edir …" /home/orange/shutdown.sh & fi çıxmaq 0 fi # Bu nöqtədən etibarən SÜRƏTLİ bir ehtiyat nüsxəsi varsa skript yalnız icra edir # buna görə də bütün səhvlər LCD -də çap olunacaq və skriptə səbəb olacaq # ləğv etsə də, backup.lck faylını silməyəcək, buna görə bura # dəfələrlə daxil olacaq və şərtləri yoxlayacaq. is_mount $ BACKUP_DRIVE əgər [$ status -ne 0]; sonra qırmızı $ LCD "ERR: Backup drive" "quraşdırılmadı!" echo "Yedek sürücü quraşdırılmamışdır" çıxın 1 fi əgər [! -s $ TFILE]; sonra qırmızı $ LCD "ERR: transfer" "boşdur" echo "Nəqliyyat ölçüsü hesablama faylı boşdur." çıxış 1 fi BACKUP_OVERALL = $ (baş -1 $ TFILE | tr -d '\ n') əgər [-z $ BACKUP_OVERALL]; sonra qırmızı $ LCD "ERR: Ölçü oxunuşu" "serverdən etibarsız" echo "Yedəkləmə ümumi ölçü oxunuşu etibarsızdır 1" çıxış 1 fi əgər!

Kod sadə olsa da burada nə etdiyini izah edir:

1, BFILE və ya FFILE yoxdursa (aydın bir başlanğıcdan sonrakı vəziyyətdir), bu, heç bir yedekləmə prosesinin olmadığını göstərir, buna görə heç bir iş görməyin. Bu yolla, hostname, ip, uptime və s.

2, is_mount $ BACKUP_DRIVE bölməsinə keçək. Buraya gəlməyimizin yeganə yolu BFILE -in mövcud olması üçün bir ehtiyat nüsxəsinin işə salınmasıdır. İndi kod yalnız müxtəlif səhv yoxlamaları aparır ki, ehtiyat sürücüsü quraşdırılıb ?, yedəkləmək istədiyimizin ümumi ölçüsü sürücünü üstələyirmi? və ya digər səhvlər. Unutmayın ki, bu yalnız bir DISPLAY proqramıdır, ölçüsü ehtiyat nüsxələrini aşsa da heç bir şeyi ləğv etməyəcək.

3, OK bütün səhv yoxlamaları faiz qrafikini hesablamaq üçün təmizlənmiş vaxtdır. Əvvəlcə skript, ehtiyat fayl sistemindəki baytlarda istifadə olunan yerin "anını" çəkir və VFILE -də saxlayır. Bunun məqsədi nədir: bir bash skriptinin vətəndaşlığı yoxdur, edamlar arasındakı məlumatları itirir, buna görə də əvvəlki icraatdakı bəzi məlumatları "xatırlamaq" istəyirsinizsə, onu bir yerdə saxlamalısınız. Bizim vəziyyətimizdə bu sadə bir mətn faylıdır. Sadə etmək üçün deyək ki, START_POS -un 1GB (əlimizdə olan məlumatlar), yedəkləmək istədiyimiz şey +2GB və ümumi sürücü tutumu 10GB -dır.

4, Növbəti dəfə skript VFILE işləyərkən mövcud olacaq və bu, oxunacaq (beləliklə, sürücü boş olmadıqda başlanğıc mövqeyi nə olduğunu bilirik) BACKUP_CURRENT hesablamaq üçün hazırda istifadə olunan məkanın deltasıdır. ehtiyat sürücüsündə VFILE -də son turda saxladığımız başlanğıc mövqeyi çıxarıldıqda (bu, ehtiyat nüsxəsi başladıqda sürücümüzdə olan məlumatlardır). Ssenari daxili olaraq baytlarla işləyir, ancaq yarım saatdan sonra sadələşdirmək üçün 500 MB məlumatları yedəklədikdən sonra formula BACKUP_CURRENT = 1.5GB - 1GB (ilkin vəziyyət) => olardı ki, bizə tam olaraq 500 MB həqiqi məlumatları qaytarar. indiyə qədər dəstəklədiyimiz şey. Yedəkləmənin əvvəlində orijinal məlumatların nə olduğunu izləmədən bu ölçü hesablamasının uğursuz olacağını görə bilərsiniz, çünki hal -hazırda diskdə 1 konsert məlumatının olduğunu bilmədən hazırda istifadə olunan yerin 1.5 GB olduğunu görür. əvvəlki bir ehtiyat nüsxədən gəlir, buna görə serverin bizə 500 MB əvəzinə 1.5 GB məlumat göndərdiyini güman edərdik.

5, BACKUP_OVERALL oxunacaq, bu məlumatlar server tərəfindən ilkin quru rsync edildikdə hesablanmışdır (buna görə də bu, Server-> OrangeBOX-dan yedeklənəcək bayt miqdarını ehtiva edən xarici məlumat mənbəyidir). Bu dəyər diskdəki ümumi PULSUZ boşluqla yoxlanılacaq və onu aşarsa lcd -də bir səhv mesajı görünəcək və skript icranı dayandıracaq. Yenə də unutmayın ki, bu skriptin hamısı YALNIZ olaraq göstərilir, bu, yedekləmə prosesinə müdaxilə etmir. Diskdəki faylları təmizləsəniz və ya faylların miqdarı uzaqdan dəyişərsə və buna görə də BACKUP_OVERALL bir nöqtədə dəyişərsə davam edəcək.

6, Nəhayət, bir şeyi nümayiş etdirməyin vaxtı gəldiyini ikinci səviyyəli yoxlamalarla bitirdik. Skript həm konsoldakı məlumatları, həm də sadə bir C tətbiqindən istifadə edərək lcd -də göstərir. Yedəkləmənin nəhayət başladığını və tərəqqinin aşağıdakı PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)) hesablandığını bildirən arxa plan mavi rəngə keçir. Bu, cari məbləği götürdüyümüz əsas faiz hesablamasıdır, nümunəmizdə 0.5GB*100/2GB = 25%.

7, Nömrələr də baytdan Mega/Giga baytına çevrilir və 1 GB -dan aşağı olduqda ekran avtomatik olaraq MB olaraq göstərilir.

8, Bizim vəziyyətimizdə bunu xəritəyə salmaq üçün bir şey 20 sütunlu LCD -də 25% -dir. Misalımızda 25 * 20/100 = 5 olardı. Hal -hazırda LCD proqramı ilə yeniləmə tətbiq olunur ki, hər dəfə zəng etdiyiniz zaman bütün ekranı yenidən çəkəcək. Beləliklə, bu vəziyyətdə ekranda 5 hashmark # çəkmək üçün 5 dəfə bir döngə işlədərdim, bu hər turda çirkin titrəyiş kimi görünərdi, bunun əvəzinə hesablanmış tərəqqi çubuğu məlumatlarını LFILE1 və 2 -ə yazıram, bu vəziyyətdə 5 tur ##### ehtiva edir və bu geri oxunur və LCD -də göstərilir. Sdcard -ı əlavə yazma əməliyyatlarından xilas etmək üçün LFILE1 və 2 -ni ramdisk -ə də qoya bilərsiniz, bu mənim üçün heç bir problem yaratmadı, skript hər dəqiqədə bir dəfə cron -dan işləyir.

9, Yedəkləmə tamamlandıqda, rsync işləyən serverdən digər skript FFILE (Finish File) -ə toxunacaq. Növbəti loopda backup_progress.sh, ehtiyat nüsxənin tamamlandığını göstərəcək və isteğe bağlı olaraq OrangeBOX -un bağlanması üçün başqa bir skript çağıracaq. Bu anda kilid sənədlərini silir, bu da sonradan edamları qeyri -mümkün edir, belə ki, bu skript işləyəndə növbəti dəqiqədə bağlamanı aktiv etməsəniz də dərhal çıxacaq, çünki BFILE yoxdur və FFILE yoxdur. Buna görə də, ehtiyat nüsxəsi yenidən başlamazdan əvvəl, tamamlanmış mesajı sonsuza qədər göstərəcəkdir.

Uzaqdan yedekləmə skripti (orange-remote.sh):

Yedək üçün bir ssh açarı və sürücü üçün luks şifrələmə üçün bir açar yaratmalısınız. Uzaqdan ehtiyat nüsxəsini əl ilə ilk dəfə işə saldığınız zaman, portağal qutuların ana barmaq izini ana faylına saxlayacaq (bu nöqtədən etibarən cron ilə avtomatik işləyə bilər).

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

Sabit disk identifikatorunuzu öyrənmək üçün uuid, blkid -i işə salın və ya müvafiq/dev/disk/qovluqlara baxın.

Hər şeyi yedəkləmək istəmirsinizsə, istisna daxil olan bir kataloq qurula bilər. Bu olduqca zəhlətökən bir prosesdir, çünki rsync üçün, strukturun dərinliyində tək bir alt qovluğu istisna etmək istəyirsinizsə, etməlisiniz:

+ /a

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

Bu skript OrangeBOX -da əmrləri uzaqdan icra etdiyindən, o tərəfdəki geri dönən dəyişənlərə heç bir nəzarəti yoxdur, buna görə uzaq sürücünün /tmp/contmsg.txt -ə açılması mesajını çıxaracaq, sonra təhlil edəcək bəzi ağıllı fəndlərdən istifadə edirəm. müvəffəqiyyətli olub olmadığını görmək, yoxsa rsync ikili faylını yerinə yetirilməz hala gətirir, buna görə də rsync, SDcardı dolduran OrangePIs köklərinə məlumat yükləməyə çalışmayacaq. Bunun mümkün olmaması üçün chattr +i /mnt /backup -da dəyişməz biti təyin etmək də yaxşı bir təcrübədir.

Ölçülərin əvvəlcədən hesablanması Serverdə yerli olaraq baş verir, buna görə də bu fayl növbəti addımda OrangeBOX -a göndərilməlidir.

Əsas ehtiyat ((i = 0; i <100; i ++)); çünki aşağı keyfiyyətli DSL/Kabel internet bağlantısı halında rsync tez -tez pozula bilər, zaman aşımı. Uğurla tamamlasanız, döngə daha çox təkrarlama etmədən pozulacaq. Bu, yaxşı əməliyyat sistemləri ilə qüsursuz işləyir, lakin nədənsə uzaq qutu pəncərələr olsaydı və NTUSER. DAT -da olduğu kimi müntəzəm olaraq girişə icazə verilməsə, rsync bir səhv kodu qaytaracaq və bu döngə 100 dəfə icra ediləcək və sonra yenə də uğursuz olacaq.

Addım 5: Bağlama və ediləcək işlər siyahısı

Bağlanma və ediləcək işlər siyahısı
Bağlanma və ediləcək işlər siyahısı
Bağlanma və ediləcək işlər siyahısı
Bağlanma və ediləcək işlər siyahısı

Təlimat verdiyim, 10 dollarlıq bir kompüterdən özəl NAS cihazları, qəribə daxili arakəsmələr, seqfaulting alətləri olan məşğul qutu şikəst linuxları ilə Buffalonu məğlub edən tək başına 10 dollarlıq bir kompüterdən necə daha yaxşı və daha fərdiləşdirilə bilən bir cihaz yarada biləcəyinizi bir daha nümayiş etdirir. Windows proqramları, qapalı proqram təminatı, pis sənədlər və dəstək və nə qədər pul xərcləsəniz də, heç vaxt OrangeBoxun nə qədər sərin göründüyünü qeyd etmədən ehtiyat nüsxənizi göstərən bir irəliləyiş göstəricisi almayacaqsınız (hətta narıncı CAT5 kabelindən istifadə edirəm: D).

Mini kompüterlər eyni <100 $ qiymət xəttini qoruyarkən getdikcə daha da gücləndikcə daha çox vəzifə üçün istifadə edə bilərik. Gbe Ethernet portları bu günlərdə 1-2 ildən sonra olduqca yaygın olduğu üçün bu lövhələrdəki yaddaş kəskin şəkildə artacaq və ZFS əsaslı ehtiyat sistemləri üçün də istifadə edilə bilər.

-C proqramı ilə gözəl taxıl tərəqqisi göstəricisi (digər layihəmdən biri olan WasserStation -a baxın). Hal -hazırda lcdPuts (lcd, line1) ilə xarakter rejimində istifadə olunan yalnız # hashmark # simvol, bu, 1 sütunu 5 hissəyə bölmək üçün xarakterli LCD -lərdən istifadə edərkən də təkmilləşdirilə bilər və əsas C proqramı 25 kimi bir tamsayı götürüb çıxara bilər. qrafik LCD istifadə edərək tərəqqi çubuğunu düzgün və ya daha da təkmilləşdirin

-Yeni və yeni ehtiyat nüsxələr yaratmaq və onları fərqli yerlərə daşımaq üçün çıxarıla bilən bir hdd-ə sahib olmaq imkanı (qutu boş bir sürücü aşkar edərsə, alındıqdan sonra onu şifrələmə açarı ilə avtomatik formatlamalıdır).

-Makerbot ilə öz işinizi çap etmək istəyirsinizsə, OrangeNAS sizin üçün maraqlı ola bilər:

Tövsiyə: