תוכן עניינים:
- שלב 1: חלקי חומרה
- שלב 2: עיצוב חומרה
- שלב 3: מערכת הפעלה
- שלב 4: עיצוב תוכנה
- שלב 5: רשימת סגירה ורשימה
וִידֵאוֹ: OrangeBOX: התקן אחסון גיבוי מאובטח מבוסס OrangePI: 5 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
ה- OrangeBOX הוא ארגז גיבוי אחסון מרחוק הכולל לכל אחד מהשרתים.
השרת שלך יכול להיות נגוע, פגום, ניגוב וכל הנתונים שלך עדיין מאובטחים ב- OrangeBOX ומי לא היה רוצה משימה בלתי אפשרית כמו מכשיר גיבוי מה שאתה פשוט מחבר ורואה מחוון התקדמות מבלי לעשות דבר נוסף (רק מקווה שהקסם בסוף לא ייצא עשן:)).
ה- OrangeBOX הוא הפרויקט הראשון שלי שהוא בעיקר תוכנה, לא פריצת חומרה. זהו בעצם NAS בנוי בהתאמה אישית עם LCD מצורף.
שלב 1: חלקי חומרה
ה- Orange PI אפס הוא מחשב בעל קוד אחד בעל קוד פתוח. הוא יכול להריץ אנדרואיד 4.4, אובונטו, דביאן. הוא משתמש ב- AllWinner H2 SoC, ויש לו 256MB/512MB DDR3 SDRAM (גרסת 256MB היא גרסה סטנדרטית. Orange Pi Zero מיועד לכל מי שרוצה להתחיל ליצור בעזרת טכנולוגיה - לא רק לצרוך אותה. זהו כלי פשוט, כיפי ושימושי שאתה יכול להשתמש בכדי להתחיל להשתלט על העולם סביבך (https://www.orangepi.org/orangepizero/). אז זה בדיוק בשבילנו בוא נמשיך עם זה:)
- קופסת מתכת/פלסטיק/עץ (השתמשתי בתיבת CD-rw חיצונית ישנה של ימאהה)
- כתום PI אפס או טוב יותר (pinout GPIO עשוי להשתנות אם אתה משתמש בדגם אחר)
- מסכי LCD 2x20 RGB
- כל כונן USB מסוג SFF 3.5/ LFF 2.55
- Sata -> מתאם USB. זכור שאמנם ה- OrangePI אינו מטיל גבול עליון על קיבולת הכונן המרבית אולם הרבה גשרי USB-to-SATA עושים (2TB מקסימום). ל- PI Zero I כתום יש רק יציאת USB 2.0 יחידה עם קצב העברה אפקטיבי של 28 מגה בייט/שניות. בחרתי ב- USB3.0 (מוכן לשדרוגים עתידיים) -> גשר SATA (המותג לא יוזכר) והוא חורג מהגבול ולכן עדיף לבחור בגשר שהוכח כתומך בכוננים גדולים יותר כגון גשרים מבוססי שבבים JMicron JMS567. בצע מחקר משלך לפני שאתה קונה אחד. אני יכול לחיות עם המהירות והגבלת הכונן הקשיח על ידי שימוש בכונן סאטה 2TB בפרויקט זה (אם אתה מכניס כוננים גדולים יותר, הוא יזוהה אך מערכת ההפעלה תראה רק את 2TB הראשון שלו כך ששאר הקיבולת תהיה אָבֵד).
- מתאם מגבר 12V 2.5A ומעלה. חשב בערך 500mA שימוש רגיל עבור OPI Zero ו- 1.5A לשיא עבור כונן LFF SATA סטנדרטי. גודל גדול אף פעם לא מזיק. בהתקנה שלי ה- psu של ימאהה (מה שיכול היה לספק יותר ממספיק זרם בשתי מסילות 12+5V) למרבה הצער התפוצץ: (עקב מיון המתג הראשי ל- GND לשנייה ולכן נאלצתי להדביק מתאם רגיל, בשעה לפחות זה גרם לקופסה להיות כמה גרם קלה יותר.
- ממיר באק DC-DC 12V-> 5V. השתמשתי באותו מיני מתכוונן כמו עם IronForge, עובד בצורה מושלמת.
אופציונאלי
אם אתה מוכן להוציא + 10 $, תוכל לקבל את ה- Orange Pi Plus (https://www.armbian.com/orange-pi-one-plus/) שהוא גורם צורה דומה ומביא לך GBE ו- SATA3. לשם כך ניתן להשתמש בספריית החיווט של מאזניים PI: https://github.com/OrangePiLibra/WiringPi אך מכיוון ש- pinout PINIO שונה הוא מחוץ להיקף כתיבה זו.
אתה יכול גם לעשות את הבנייה הזו עם Orange PI Plus2 החדש שיש לו מחבר SATA ותוכל לדלג על השימוש בממירים מסוג sata-> usb יחד עם המגבלות שלהם. אם אתה מתכנן להשתמש ב- FreeBSD או BSD אחרים, ייתכן שסדרת Orange PI לא תהיה הבחירה הטובה ביותר מכיוון שתמיכת החומרה שלהם מוגבלת (לדוגמה, עליך להשתמש במקל USB לאתחול). עבור BSD זו העצה הטובה ביותר להשתמש ב- Raspberry PI. גם קוד C עבור ה- LCD וכל סקריפטים של המעטפת ניידים לכל מערכות UNIX אחרות.
שלב 2: עיצוב חומרה
תיבת ימאהה הספיקה פשוט לאחסון כל זה, לא יהיה לו מספיק מקום למחשב כתום PI או לוח רגיל מסוג Raspi.
ה- Ethernet הוצא עם מאריך לחלק האחורי של הקופסה. זכור כי ל- Orange PI אפס יש רק ממשק Ethernet של 100mbit/s אם אתה רוצה מהר יותר תצטרך להשתמש בלוח אחר כגון דגמי Asus Tinkerboard/RPI3B+/Orange PI אחרים.
PIN Out שגוי הוא הטעות היחידה שאתה יכול לעשות בפרויקט זה ולכן כדאי ליישם כמה עקרונות כלל:
1, נסה תמיד להשתמש באותו כבל צבעוני מ- END ל- END. אני עצמי מבצע את אותה "טעות" בכמה פרויקטים שבהם אין לי, פשוט כי אין לי מספיק כבלים זכר-זכר-נקבה/נקבה-נקבה מספיק ואני מסתדר 2 רק כדי להמשיך עם המעגל. אם אינך מתעד כראוי את עבודתך הדבר עלול להוביל לכאבי ראש כעבור שנים שבהם עליך לבצע תיקון, לשדרג.
2, החל מעט דבק חם על המחברים. במקרה של שימוש בכבלי mm/mf/ff בסגנון ערכת מתנע ארדואינו שאינם ברמה הגבוהה ביותר, זה די נפוץ (במיוחד אם אתה מסתובב/מעביר את המכשיר) שהמחברים מחליקים החוצה. אם אתה יודע שזה יהיה מכשיר לשימוש ארוך טווח (אפשר להשתמש עד שהוא יישבר ?!) אז עדיף למרוח מעט דבק חם הן בצד OrangePI והן ב- LCD של המחברים כדי לשמור אותם יחד. ניתן להמיס/לגרד את זה בקלות מאוחר יותר במידת הצורך.
3, חיווט אפס OrangePI החדשות הרעות הן ש- pinout כתום ה- PI אינו זהה ל- RPberry PI 0/1/2/3 ויש הבדל אפילו בין דגמי PI אחרים של כתום. הדרך הטובה ביותר היא להשיג את ספריית החיווט (גירסת Orange PI Zero). התמונה אולי קצת מבלבלת אבל אלה היו הטובות ביותר שיכולתי למצוא. האחת היא מראה של 180 מעלות של השנייה. למרות שהתמונה הלא גרפית CLI עשויה להיות קשה יותר להבנה היא הכי פשוטה קדימה.
אתה תמיד יכול להבדיל בין 2 הקצה של השקעים על ידי התייחסות לקצה אחד כקצה החיובי עם (+3.3/+5V) וקצה אחר כקצה NEGATIVE (אחד GND) -> זהו קצה המחבר הפונה ליציאת ETHERNET.
מהטבלה Wiring PI Zero תזדקק לעמודה אחת בלבד כאשר ה- wPI ישכח את האחרים כאילו הם לא היו שם.
כך למשל לחבר את LCD_E 15 (כלומר wPI 15!) ו- LCD_RS 16 (כלומר wPI 16!) לספור את הסיכות מהקצה החיובי של המחבר (קל לביצוע בעזרת עט או מברג קטן). זה יהיה פיזית לרדת 4 סיכות ו -5 סיכות.
4, קבוצה למעלה. אם יש אפשרות לשים סיכות משומשות אחת ליד השנייה (קיבוץ אותן) תמיד בחרו בזה, זה גורם להם לאחוז אחד בשני גם ללא דבק חם וגם בפרויקטים אחרים כשיש לך 2x 4x 6x מחברי מולקס שאתה יכול פשוט נצל את הסיכות שהן זו ליד זו. כאן הדבר הטוב ביותר שאתה יכול לעשות הוא קבוצה של 2-3s (אידיאלי בעת שימוש בכבלי מגשרות שמצילים ממחשבים ישנים).
סיכות המשמשות לחיבור מסך LCD של OrangePI:
// השתמש במספרי PIN של WIRINGPI
#define LCD_E 15 // Enable Pin #define LCD_RS 16 // הרשמה סיכת בחירה #הגדר LCD_D4 5 // פין נתונים 4 #הגדר LCD_D5 6 // פין נתונים 5 #הגדר LCD_D6 10 // סיכת נתונים 6 #הגדר LCD_D7 11 // סיכת נתונים 7
סיכות המשמשות לבקרת תאורה אחורית RGB
$ G לכתוב 1 0
$ G לכתוב 4 1 $ G לכתוב 7 1
כתמי PI אפס סיכות wPI 1, 4, 7. הקסם היחיד שה- LCD הזה יכול לעשות בהשוואה לתקן LCD הכחול הרגיל או לתקן תאורה אחורית ירוקה שבו יש לך קתודה אחת שצריך להוריד למטה ל- GND שיש לה 3 עבור 3 צבעים. אדום, ירוק וכחול. על ידי שינוי השילוב של אחד מהם מופעל אתה יכול לערבב צבעים שונים מצבעי הבסיס האלה, אך רק בקצוות הגבוהים ללא גוונים מכיוון שאינך יכול לשלוט על בהירות הצבע (הוא מופעל או כבוי).
ערבוב צבע תוסף: הוספת אדום לירוק מניבה צהוב; הוספת אדום לכחול מניבה מג'נטה; הוספת ירוק לכחול מניבה ציאן; הוספת כל שלושת צבעי היסוד יחד מניבה לבן.
שלב 3: מערכת הפעלה
OrangeBOX אתחול ו- ליבה ארמבית (מבוססת על Debian Stretch) 4.14.18-sunxi עם סביבה מאובטחת של חומת אש, מתחברת ל- VPN ומחכה לפקודות גיבוי מרחוק מהשרת.
עקרונות עיצוב:
-הצפנת דיסק מבוססת לוקס מלאה (המכשיר עצמו אינו מכיל את המפתח לפתיחת כונן הגיבוי. הוא יועתק זמנית מהשרת המרוחק אל ram /dev /shm, הכונן נפתח והמפתח יימחק. לאחר סיום הגיבוי. הכונן נסגר וה- OrangeBox נכבה אוטומטית תוך דקה אחת.)
-כל הפקודות והמפתחות נשלחים מהשרת המרוחק (המכשיר עצמו מכיל רק תעודת vpn) אין לו כל גישה לשרת המרוחק אפילו ssh מהמכשיר הזה הוא חומת אש
-מערכות הקבצים המקומיות לא מוצפנות כדי לאתחל אך אינן מכילות דבר שימושי ומכיוון ש- uplink VPN מוגבל מאוד בצד השני אפילו עם אובדן מוחלט של המכשיר התוקף לא יכול לעשות דבר
הורד את ה- Armbian Stretch מ-
הפעל את המערכת:
עדכון apt-get && apt-get upgrade
apt-get להתקין sysvinit-core sysvinit-utils
ערוך את הכרטיסייה /etc /initt, ניתן לבטל את כל הקונסולה כיוון שהקופסה תשמש כחסרת ראש. הגיבו על הסעיף הבא:
#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
הפעל מחדש את הקופסה והסר את systemd בכדי שתהיה לך מערכת פתוחה אמיתית ללא תוכנת bloatware.
apt-get להסיר-טיהור-הסר מערכת אוטומטית
התקן כמה חבילות
apt-get להתקין cryptsetup vim htop rsync מסך gcc make git
התקן את ספריית wiringpi
cd /usr /src
שיבוט git https://github.com/xpertsavenue/WiringOP-Zero.git cd WiringOP-Zero chmod +x./build./build
צור משתמש כתום לתצוגת lcd
groupadd -g 1000 כתום
useradd -m -d /home /orange -s /bin /bash -u 1000 -g כתום כתום
כלב השמירה שאינו שומר עליך
apt-get להתקין כלב שמירה
מסתכל/etc/default/כלב שמירה # התחל כלב שמירה בזמן האתחול? 0 או 1 run_watchdog = 1 # התחל wd_keepalive לאחר הפסקת כלב השמירה? 0 או 1 run_wd_keepalive = 1 # טען מודול לפני התחלת כלב שמירה watchdog_module = "none" # ציין כאן אפשרויות כלב שמירה נוספות (ראה דף אדם).
מסתכל /etc/watchdog.conf
# לפחות הפעל את אלה
max-load-1 = 24 max-load-5 = 18 max-load-15 = 12
/etc/init.d/watchdog להתחיל
צריך להיות לפחות חוט ליבה אחד ותהליך אחד:
שורש 42 0.0 0.0 0 0? I <10:50 0:00 [כלב שמירה] שורש 14613 0.0 0.2 1432 1080? SLs 13:31 0:00/usr/sbin/כלב שמירה
בדיקה:
הקפד לעצור הכל ולעשות סנכרון && סנכרון && סנכרון כדי לכתוב את שאר הנתונים לדיסק. ואז כבעיית שורש:
הד 1> /dev /כלב שמירה
לאחר מספר שניות המכשיר אמור לאתחל.
כפי שנכתב במדריך:
o האם טבלת התהליכים מלאה?
o האם יש מספיק זיכרון פנוי? o האם יש מספיק זיכרון שניתן להקצות? o האם כמה קבצים נגישים? o האם כמה קבצים השתנו בתוך מרווח נתון? o האם עומס העבודה הממוצע גבוה מדי? o האם התרחשה הצפת טבלת קבצים? o האם תהליך עדיין פועל? התהליך מצוין על ידי קובץ pid. o האם כתובות IP מסוימות עונות לפינג? o האם ממשקי רשת מקבלים תנועה? o האם הטמפרטורה גבוהה מדי? (נתוני טמפרטורה לא תמיד זמינים.) O בצע פקודה שהוגדרה על ידי המשתמש לביצוע בדיקות שרירותיות. o בצע פקודת בדיקה/תיקון אחת או יותר שנמצאו ב- /etc/watchdog.d. פקודות אלה נקראות עם מבחן הארגומנט או התיקון. אם אחד מהבדיקות הללו נכשל כלב השמירה יגרום לכיבוי. אם כל אחת מהבדיקות למעט המשתמש הבינארי שהוגדר תימשך יותר מדקה, המכשיר יופעל מחדש גם הוא.
כלב השמירה הזה עשוי לעבוד תקין בארכיטקטורות x86 הרגילות, אך בלוחות מבוססי ARM כגון PIs Raspberry, PIs Orange זה נכשל בי אינספור פעמים. המערכת יכולה להיכנס למצבי תלייה בהם אפילו כלב השמירה תלוי. בואו פשוט להגדיר את זה בכל מקרה אולי זה ישתפר עם שדרוג apt-get לאורך השנים:(
שלב 4: עיצוב תוכנה
תהליך הגיבוי עצמו מבוסס rsync (כלי הגיבוי הטוב ביותר שהומצא אי פעם) הנתונים נדחקים מה- SERVER-> OrangeBOX.
חילוץ הנתונים מ- rsync היה החלק המאתגר היחיד בפרויקט עם סרגל התקדמות לגבי הגיבוי המודפס על ה- LCD.
היו 3 דרכים אפשריות לחישוב התקדמות הגיבוי:
1, שימוש בנוסחאות כגון https://wintelguy.com/transfertimecalc.pl כדי לקבוע את משך הזמן המשוער של ההעברה
זמן העברה (d: h: m: s): 0: 02: 44: 00
לשם השוואה: זמן משוער להעברת קובץ של 123 ג'יגה -בייט על פני קישורי רשת שונים (d: h: m: s): קו T1/DS1 (1.544 Mbps) - 7: 09: 01: 46 Ethernet (10 Mbps) - 1:03: 20:00 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 מסתיים הוא מסמן לתסריט להפסיק את החישוב. שיטה זו היא רק משוערת ולא אמינה, גם מהירות הקישור אינה מתוקנת, היא יכולה להאט, להאיץ שוב. זהו רק חישוב תיאורטי.
2, בדיקת גודל בספרייה כדי לקבוע כמה נתונים סינכרן כבר. יכול להיות איטי מאוד עם מאות קבצים קטנים של GB (למרות ש- du -s בלינוקס עושה קצת שמירה אם אתה מפעיל אותו מחדש)
מארח א ' -> נתוני שרת שיש לגבות מספר הנתונים: 235GB
מארח B -> נתוני לקוח אורנג 'ארגז שיש לנו כרגע נתוני נתונים: 112GB
הדלתא היא 123 GB.
3, אם מערכת הקבצים ייעודית כמו במקרה שלנו/dev/mapper/backup אנחנו יכולים לנצל את אינדיקטור השימוש הכולל של מערכת הקבצים כדי לקבוע כיצד התקדמות הגיבוי שלנו וזה באמת לעזאזל מהר. במקרה זה אנחנו אפילו לא צריכים לצנזר את ה- rsync stdout לשום מקום, פשוט להריץ rsync יבש, לחכות עד שהיא תושלם, לחשב את הדלתא בבתים ולבדוק את זה עם החלל הפנוי שיש לנו בכונן הגיבוי וואלה שאנחנו יכולים עכשיו עשה גרף עמודים נחמד. זו הייתה השיטה שבחרתי והנה התסריט שלי לה:
#!/bin/bash
# מחשבון התקדמות גיבוי עבור OrangeBOX לפי NLD # גרסה: 0.2 (2018/03/05) # # הפעל אותו כמשתמש חסר זכויות מ cron # * * * * * /home/orange/backup_progress.sh &>/dev/null # # סקריפט זה אחראי רק להצגת נתונים על ה- LCD, הוא מתקשר # עם התוכנית הראשית בעקיפין באמצעות קבצי מיקום ונעילה. BACKUP_DRIVE = "/dev/mapper/backup" VFILE = "$ HOME/start.pos" # שימוש בדיסק בתחילת הגיבוי TFILE = "$ HOME/trans.size" # גודל העברה כולל מחושב מראש BFILE = "$ HOME/ backup.lck " # קובע מצב התחיל FFILE =" $ HOME/backup.fin " # קובע מצב סיים LFILE1 =" $ HOME/lcd1.bar " # נתוני מחוון התקדמות LCD LFILE2 =" $ HOME/lcd2.bar " # התקדמות LCD נתוני מחוון SHUTDOWN = "1" # אם 1 הוא יתחיל סקריפט אחר שיכבה את התיבה בסוף הגיבוי BACKUP_CURRENT = "0" # יש לאתחל אך יחושב DRIVE_SIZE = "" # גודל כונן בייט (משני check) LCD = פונקציית "sudo /bin /lcd" is_mount () {grep -q "$ 1" /proc /mounts status = $? } פונקציה אדומה () {sudo /bin /lcdcolor אדום} פונקציה ירוקה () {sudo /bin /lcdcolor green} פונקציה כחולה () {sudo /bin /lcdcolor blue} # מצב נקי (מוגדר בעת אתחול על ידי bootup_display.sh). אין גיבוי, אין לבלבל את מסך ה- # סטטוס. הצג התקדמות רק במקרה של גיבוי מתמשך => אין קובץ התחלה ואין קובץ סנפיר = צא אם [! -f $ BFILE] && [! -f $ FFILE]; לאחר מכן צא מ- fi # אם הגיבוי סיים סקריפט זה יציג את זה ויסיר את המנעולים # כדי שלא תוכל לפעול שוב עד ההתחלה הבאה. אם [-f $ FFILE]; ואז ירוק $ LCD "גיבוי" "** הושלם **" הד "גיבוי הושלם" rm -rf $ BFILE $ TFILE $ FFILE $ LFILE1 $ LFILE2 $ VFILE # הגיבוי הסתיים בניקיון אם [$ SHUTDOWN == "1"]; ואז הד "מבצע סקריפט כיבוי …" /home/orange/shutdown.sh & fi יציאה 0 fi # מנקודה זו התסריט מבצע רק אם יש גיבוי מתמשך # לכן כל השגיאות יודפסו אל ה- LCD ויגרמו לתסריט. # כדי לבטל אולם זה לא יסיר את קובץ backup.lck ולכן ייכנס לכאן # שוב ושוב ויחמק מהתנאים. is_mount $ BACKUP_DRIVE אם [$ status -ne 0]; אז אדום $ LCD "ERR: כונן גיבוי" "אינו מותקן!" הד "כונן גיבוי אינו מותקן" יציאה 1 fi אם [! -s $ TFILE]; ואז אדום $ LCD "ERR: transfile" "ריק" הד "קובץ חישוב גודל התחבורה ריק." יציאה 1 fi BACKUP_OVERALL = $ (head -1 $ TFILE | tr -d '\ n') if [-z $ BACKUP_OVERALL]; ואז אדום $ LCD "ERR: גודל חוזר" "מהשרת לא חוקי" הד "גיבוי חוזר בגודל כולל אינו חוקי 1" יציאה 1 fi אם!
למרות שהקוד פשוט להלן תיאור מה הוא עושה:
1, אם ה- BFILE או FFILE אינו קיים (שזה המצב לאחר הפעלה ברורה) המציין שאין תהליך גיבוי אז אל תעשה שום דבר פשוט צא. בדרך זו תוכל לתכנן כל מידע נחמד שתרצה בנוגע לאתחול כמו שם המארח, ip, זמן פעולה וכו 'וזה לא יבלבל.
2, בואו נקפוץ לקטע is_mount $ BACKUP_DRIVE. רק תזכורת הדרך היחידה שהגענו לכאן היא שהתחיל גיבוי כך שה- BFILE קיים. עכשיו הקוד פשוט מבצע בדיקות שגיאה שונות כמו האם כונן הגיבוי מותקן ?, האם הגודל הכולל של מה שאנחנו עומדים לגבות עולה על הכונן? או שגיאות אחרות. זכור שזוהי תוכנית DISPLAY בלבד גם אם הגודל יעלה על הגיבויים היא לא תבטל דבר.
3, בסדר כל בדיקות השגיאה פינו זמן לחישוב גרף האחוזים. ראשית התסריט מצלם "תמונת מצב" של השטח המשמש בבתים במערכת הקבצים לגיבוי כרגע ומאחסן אותו ב- VFILE. מה המטרה של זה: סקריפט bash הוא חסר מדינה, הוא מאבד נתונים בין הוצאות להורג, כך שאם אתה רוצה "לזכור" כמה נתונים מהביצוע הקודם אתה צריך לאחסן אותו איפשהו. במקרה שלנו זהו רק קובץ טקסט פשוט. כדי לעשות את זה פשוט נניח ש- START_POS שלנו הוא 1 ג'יגה -בתים (נתונים שיש לנו), מה שאנחנו רוצים לגבות הוא +2 ג'יגה -בתים וקיבולת הכונן הכוללת היא 10 ג'יגה -בתים.
4, בפעם הבאה כאשר התסריט יופעל ה- VFILE קיים וזה יקרא בחזרה (כדי שנדע מה הייתה עמדת ההתחלה במקרה שהכונן לא היה ריק) כדי לחשב את BACKUP_CURRENT המהווה בעצם דלתא של החלל המשמש כרגע בכונן הגיבוי מינוס עמדת ההתחלה מה ששמרנו ב- VFILE בסיבוב האחרון (שוב אלה הנתונים שהיו לנו על הכונן כשהגיבוי התחיל). התסריט פועל באופן פנימי עם בתים אבל כדי להפוך את זה פשוט לאחר חצי שעה גיבנו נתונים של 500MB ואז הנוסחה תהיה BACKUP_CURRENT = 1.5GB - 1GB (מצב התחלתי) => מה שמחזיר לנו בדיוק את הנתונים האמיתיים 500 MB, כלומר מה שגיבנו עד כה. אתה יכול לראות שבלי לעקוב אחר מה היו הנתונים המקוריים בתחילת הגיבוי חישוב גודל זה ייכשל מכיוון שהוא יראה שהשטח שנמצא בשימוש כרגע הוא 1.5GB מבלי לדעת כי נתונים של 1 ג'יגה היו על הדיסק לאורך כל הדרך. מגיע מגיבוי קודם לכן הוא יניח שהשרת שלח לנו נתוני 1.5GB במקום 500MB.
5, BACKUP_OVERALL ייקרא, נתונים אלה חושבו על ידי השרת כאשר ביצע את הסינכרון היבש הראשוני (כך שמדובר במקור נתונים חיצוני המכיל את כמות הבייטים שיגובה משרת-> OrangeBOX). ערך זה ייבדק מול השטח החופשי הכולל בדיסק כרגע ואם הוא חורג ממנו תוצג הודעת שגיאה ב- lcd והתסריט מפסיק את הביצוע. זכור שוב שכל התסריט הזה עושה הוא להציג רק, הוא אינו מפריע לתהליך הגיבוי. אם אתה מנקה קבצים בדיסק או שכמות הקבצים משתנה מרחוק ולכן BACKUP_OVERALL משתנה בשלב מסוים זה ימשיך.
6, סוף סוף סיימנו עם הבדיקות ברמה השנייה שהגיע הזמן להציג משהו. התסריט מציג את הנתונים במסוף וב- lcd באמצעות אפליקציית C פשוטה. הרקע עובר לכחול המציין כי הגיבוי סוף סוף החל וההתקדמות מחושבת לפי הנוסחה הבאה PROGRESS = $ ((($ BACKUP_CURRENT * 100) / $ BACKUP_OVERALL)). זהו חישוב אחוז בסיסי שאנו לוקחים את הסכום הנוכחי, בדוגמה שלנו 0.5GB*100/2GB = 25%.
7, המספרים מומרים גם מבייט לבייטים מגה/גיגה והמסך יוצג אוטומטית ב- MB אם הוא נמוך מ- 1GB.
8, דבר אחד שנותר למפות זאת במקרה שלנו הוא 25% על מסך LCD של 20 עמודים. זה יהיה 25 * 20/100 = 5 בדוגמה שלנו. נכון לעכשיו המימוש עם תוכנית ה- LCD מיושם שבכל פעם שתתקשר לתוכנית הוא יצייר מחדש את כל המסך. אז במקרה זה הוא יפעיל לולאה 5 פעמים כדי לצייר 5 סימני hash # במסך זה יופיע כהבהוב מכוער בכל סיבוב ולכן במקום זאת אכתוב את נתוני סרגל ההתקדמות המחושב ל- LFILE1 ו- 2, שבמקרה זה לאחר 5 הסיבובים יכילו ##### וזה נקרא בחזרה ומוצג על LCD. אתה יכול לשים את LFILE1 ו- 2 גם על ramdisk כדי לשמור את כרטיס ה- sd מפעולות כתיבה נוספות, זה לא גרם לי לבעיות, התסריט פועל פעם בדקה מ cron.
9, כאשר הגיבוי סיים התסריט השני מהשרת שמריץ rsync ייגע ב- FFILE (Finish File). בלולאה הבאה backup_progress.sh יציג אז שהגיבוי הושלם ויתקשר אופציונלי אחר לסגירת ה- OrangeBOX. הוא מוחק את קבצי הנעילה שלו בשלב זה והופך את ההוצאות להורג לבלתי אפשריות כך שגם אם לא תאפשר כיבוי בדקה הקרובה כאשר סקריפט זה יופעל הוא יפסיק מיד מכיוון שה- BFILE אינו קיים וה- FILE אינו קיים. לכן הוא יציג את ההודעה שהושלמה בגיבוי ללא הגבלת זמן, אלא אם יופעל מחדש הגיבוי.
סקריפט גיבוי מרחוק (orange-remote.sh):
יהיה עליך ליצור מפתח ssh לגיבוי ומפתח להצפנת לוקס לכונן. כאשר תפעיל את הגיבוי המרוחק בפעם הראשונה באופן ידני, הוא ישמור את טביעת האצבע המארחת של הקופסאות הכתומות לקובץ המארח (מנקודה זו הוא יכול לפעול אוטומטית על ידי cron).
DISK = "/dev/disk/by-id/…"
כדי לברר את מזהה הדיסק הקשיח שלך הפעל uuid, blkid או פשוט חפש את הספריות/dev/disk/המתאימות.
ניתן להגדיר ספרייה הכוללת אי הכללה אם אינך רוצה לגבות הכל. זה תהליך די מעצבן, כי עבור rsync אם אתה רוצה להוציא תת-ספרייה אחת עמוק במבנה אתה צריך לעשות:
+ /א
+/a/b +/a/b/c +/a/b/c/d -/a/b/c/d/e +/dir2
מכיוון שהתסריט הזה מבצע פקודות ב- OrangeBOX מרחוק, אין לו פיקוח על משתני ההחזרה מהצד הזה, ולכן אני משתמש בכמה טריקים חכמים, כך שהוא יפיק את ההודעה של פתיחת הכונן המרוחק אל /tmp/contmsg.txt, ואז מנתח כדי לראות אם הוא הצליח, אם לא אז הוא משנה את הבינארי rsync ללא הפעלה כך שה rsync לא ינסה להעלות נתונים לשורשי OrangePIs שממלאים את כרטיס ה- SD. כמו כן נוהג טוב להגדיר את הקטע הבלתי ניתן לשינוי ב- chattr +i /mnt /backup כדי להפוך את זה לבלתי אפשרי.
חישוב הגודל המוקדם מתרחש באופן מקומי בשרת ולכן יש לשלוח קובץ זה ל- OrangeBOX בשלב הבא.
הגיבוי העיקרי מופעל כבלול עבור ((i = 0; i <100; i ++)); לעשות זאת במקרה של חיבורי DSL/כבלים לאינטרנט באיכות נמוכה rsync יכול לעתים להישבר, הזמן הקצוב. אם היא תושלם בהצלחה אז הלולאה תישבר מבלי לנסות איטרציות נוספות. זה עובד ללא רבב עם מערכות הפעלה טובות, אולם אם מסיבה כלשהי התיבה המרוחקת תהיה חלונות ותימנע גישה כקבוע ב- NTUSER. DAT ואז rsync יחזיר קוד שגיאה והלולאה הזו תתבצע 100 פעמים ואז עדיין תיכשל.
שלב 5: רשימת סגירה ורשימה
ההדרכה שלי מדגימה שוב כיצד תוכל ליצור מכשיר טוב יותר, הניתן להתאמה אישית יותר ממחשב בעלות של $ 10 לבד, המכה את באפלו לעזאזל עם מכשירי NAS הנעולים הקניינים שלו, מחיצות פנימיות מוזרות, לינוקס נכה עם תיבות מגננות, מנוהל על ידי תוכנת Windows שלהם, קושחה סגורה, תיעוד ותמיכה גרועים ולא משנה כמה כסף תוציא לעולם לא תקבל מחוון התקדמות המציג את הגיבוי שלך שלא לדבר על כמה מגניב OrangeBox נראה (אני אפילו משתמש איתו בכבל CAT5 כתום: D).
עם מחשבי מיני שהופכים יותר ויותר חזקים תוך שמירה על אותו מחיר של מעל $ 100 נוכל להשתמש בהם לעוד ועוד משימות. מכיוון שיציאות Ethernet של Gbe נפוצות למדי בימים אלה תוך 1-2 שנים, הזיכרון בלוחות אלה יגדל באופן דרמטי והם יכולים לשמש גם עבור מערכות גיבוי מבוססות ZFS.
-מחוון התקדמות דגנים עדין על ידי תוכנית C (ראה WasserStation אחד מהפרויקט השני שלי). כרגע רק # hashmark # תווים המשמשים במצב תווים עם lcdPuts (lcd, line1), ניתן לשפר זאת גם כאשר משתמשים במסכי LCD של תווים כדי לחלק עמודה אחת ל -5 חלקים ותוכנית C הראשית יכולה פשוט לקחת מספר שלם כמו 25 ולצייר החוצה סרגל ההתקדמות השתפר כראוי או עוד יותר באמצעות LCD גרפי
-אפשרות להחזיק HDD נשלף ליצירת גיבויים חדשים וחדשים והעברתם למיקומים שונים (אם התיבה מזהה כונן ריק אז היא אמורה לעצב אותו אוטומטית עם מפתח ההצפנה לאחר קבלתו).
-אם אתה רוצה להדפיס מארז משלך עם makerbot ה- OrangeNAS עשוי להיות מעניין עבורך:
מוּמלָץ:
מנהל התקן LED מדורג שלב 3A מבוסס ATTiny84: 7 שלבים (עם תמונות)
נהג LED מבוסס 3A הורד על ידי ATTiny84: אם ברצונך להפעיל נוריות 10W, תוכל להשתמש במנהל התקן LED 3A זה. עם 3 נוריות Cree XPL, אתה יכול להשיג 3000 לומן
מד חום אינפרא אדום מבוסס Arduino - מד חום מבוסס IR באמצעות Arduino: 4 שלבים
מד חום אינפרא אדום מבוסס Arduino | מד חום מבוסס IR באמצעות Arduino: היי חברים במדריך זה נכין מדחום ללא מגע באמצעות arduino. מכיוון שלפעמים הטמפרטורה של הנוזל/מוצק גבוהה מדי או נמוכה ואז קשה ליצור איתו קשר ולקרוא אותו הטמפרטורה אז בתרחיש זה
חיישן תנועה מבוסס PIR מבוסס Arduino: 4 שלבים
חיישן תנועה מבוסס PIR מבוסס Arduino: בעזרת פרויקט זה, אתה יכול לשלוט על המצב הגבוה והרגישות של PIR
מחולל מוזיקה מבוסס מזג אוויר (מחולל מידי מבוסס ESP8266): 4 שלבים (עם תמונות)
מחולל מוזיקה מבוסס מזג אוויר (מחולל מידי מבוסס ESP8266): היי, היום אסביר כיצד להכין מחולל מוזיקה קטן מבוסס מזג אוויר. ועוצמת אור. אל תצפה שהוא ייצור שירים שלמים או יתפתח אקורד
משחק משחק ציפור פלאפפי עם לוח פיתוח מבוסס M5stack Esp32 מבוסס M5stick C: 5 שלבים
משחק משחק Flappy Bird עם לוח פיתוח מבוסס M5stack Esp32 מבוסס M5stick C: היי חברים היום נלמד כיצד להעלות את קוד משחק הציפורים ללוח הפיתוח של m5stick c המסופק על ידי m5stack. לפרויקט קטן זה תזדקקו לשני דברים הבאים: m5stick-c לוח פיתוח: https://www.utsource.net/itm/p/8663561.h