यहां rsync
पाई पर बैक-अप के लिए उपयोग करने का परिचय है । एक बार प्रारंभिक बैक-अप बनने के बाद, इस तरह से इसे बनाए रखना पूरी छवि को लगातार रिप करने की तुलना में बहुत तेज है। आप इसे स्थानीय हार्ड ड्राइव या नेटवर्क पर कर सकते हैं।
आप वास्तव में बैक-अप के रूप में एक रनिंग सिस्टम की पूरी कॉपी नहीं चाहते हैं, क्योंकि फाइल सिस्टम में कुछ सामान केवल रनटाइम पर ही मौजूद होता है। एक बैकअप में इसे शामिल करना और फिर बाद में एक छवि को फिर से बनाने के लिए इसका उपयोग करना आपके लिए समस्याएं पैदा कर सकता है ।
कुछ अन्य अपवाद भी हैं। को बाहर करने के लिए rsync
( ग्लोब ) पैटर्न की एक सूची को स्वीकार कर सकते हैं, और जिन्हें एक फ़ाइल से पढ़ा जा सकता है, इसलिए आइए सबसे पहले इस तरह की फ़ाइल में क्या होना चाहिए। ध्यान दें कि प्रविष्टियाँ फॉर्म की हैं /directory/*
और नहीं /directory
। ऐसा इसलिए है क्योंकि हम चाहते हैं कि उनका अस्तित्व बना रहे, लेकिन हम उनमें कुछ भी कॉपी नहीं करना चाहते हैं।
/proc/*
/sys/*
ये वास्तव में डिस्क पर मौजूद नहीं हैं। वे कर्नेल के लिए एक इंटरफ़ेस हैं, जो उन्हें स्मृति में बनाता और बनाए रखता है । यदि आप इन्हें कॉपी करते हैं और फिर उन्हें एक सिस्टम में कॉपी करते हैं और इसे बूट करते हैं, तो यह (सबसे अच्छा) व्यर्थ होगा, क्योंकि कर्नेल उन इंटरफेस के लिए माउंट पॉइंट्स के रूप में उपयोग करता है [अगर आप देखना चाहते हैं कि क्या होता है जब आप फाइल सिस्टम विभाजन को माउंट करते हैं इसमें डेटा वाली निर्देशिका पर, प्रयास करें। यह काम करता है और कोई नुकसान नहीं पहुंचाएगा, लेकिन जो सामान निर्देशिका में था वह अब अप्राप्य है।]
ध्यान दें कि यह महत्वपूर्ण है /sys
और /proc
माउंट बिंदु मौजूद हैं। लेकिन उनमें कुछ भी शामिल नहीं होना चाहिए। आगे:
/dev/*
dev
निर्देशिका के रूप में काफी एक ही बात नहीं है proc
और sys
लेकिन हमारे उद्देश्यों यह है के लिए। यदि आप मानते हैं कि आपको इसे सहेजना चाहिए, तो आपके बैकअप या किसी अन्य चीज़ में समान डिवाइस नोड हो सकते हैं, तो आप गलत हैं । परेशान मत करो। नकल मत करो dev
। एक बार बहुत समय पहले लिनक्स ने इस तरह से काम किया था, लेकिन यह अब और नहीं करता है।
/boot/*
यह एक विशेष मामले की तरह है, जिसमें सबसे विशिष्ट (शायद सभी) रास्पियन जैसे विशिष्ट विशिष्ट विकृतियां हैं। यह वास्तव में पहली, vfat, विभाजन के लिए एक आरोह बिंदु है। हम इससे अलग से निपटने जा रहे हैं। आप जो कुछ भी करते हैं, उसे यहां शामिल न करें, क्योंकि फिर से, यह एक माउंट बिंदु है।
/tmp/*
/run/*
/run
आम तौर पर या तो डिस्क पर नहीं है, यह मेमोरी में है। शायद /tmp
यह भी हो सकता है (यह थोड़ा एसडी कार्ड कार्रवाई को बचाएगा), लेकिन किसी भी मामले में, जैसा कि नाम से पता चलता है, ये लगातार डेटा संग्रहीत करने के लिए जगह नहीं हैं। जो एप्लिकेशन उनका उपयोग करते हैं, वे उम्मीद करते हैं कि उन्हें प्रत्येक बूट पर हटाया जा सकता है।
/mnt/*
/media/*
इन महत्वपूर्ण खासकर यदि आप एक हार्ड ड्राइव या यूएसबी स्टिक को बैकअप लेने के लिए योजना बना रहे हैं कर रहे हैं और डिवाइस में है /mnt
या /media
क्योंकि अगर आप फाइल सिस्टम आप में उन लोगों के उपकरणों के स्थान को बाहर नहीं करते, (automounting बाद उपयोग करने के लिए जाता है) ड्राइव की सामग्री का समर्थन करते हुए एक लूप बनाएं, जब तक कि यह अंतरिक्ष से बाहर न चला जाए। मुझे लगता है कि कुछ rsync
हो सकता है कि गूंगा हाजिर करने के लिए पर्याप्त होशियार हो सकता है लेकिन आधार का परीक्षण करने से बचने की कोशिश करें।
वास्तविक बैक अप पर: स्थानीय रूप से माउंट किए गए हार्डड्राइव, USB चीज़ आदि का बैकअप लेने के लिए एक निर्देशिका बनाएं - जैसे "pi_backup"। आप वैकल्पिक रूप से एक दूरस्थ स्थान पर ssh
(नीचे देखें) या नेटवर्क माउंटेड फाइल सिस्टम का उपयोग करके बैकअप ले सकते हैं , लेकिन यह संभवत: पहली बार होगा।
यदि सूची से बाहर करने वाली फ़ाइल /rsync-exclude.txt
1 है और आपका ड्राइव /mnt/usbhd
वास्तविक बैकअप करने के लिए है:
rsync -aHv --delete --exclude-from=/rsync-exclude.txt / /mnt/usbhd/pi_backup/
ध्यान दें कि वहाँ एक अनुगामी स्लैश हैpi_backup/
।
इसमें थोड़ा समय लगेगा और बहुत अधिक उत्पादन होगा (यदि आप इसके बजाय एक लॉग में जांचना चाहते हैं, तो संलग्न करें > rsync.log
)। --delete
पहली बार अर्थहीन है, लेकिन बैकअप अद्यतन रखने के लिए इसका उपयोग करें। यह सुनिश्चित करता है कि आपके द्वारा बाद में पाई पर हटाए गए सामान को भी आपके बैकअप से हटा दिया जाए। a
निर्देशिका में और सेट प्रत्यावर्तन सुनिश्चित करें कि सभी फ़ाइल मैच जिम्मेदार बताते हैं बनाता है। -H
संरक्षित करने के लिए किया जाता है हार्ड लिंक 2 , v
(अन्यथा जिसके कारण आप कुछ आउटपुट प्राप्त वर्बोज़ के लिए है rsync
चुप है)। man rsync
अधिक के लिए देखें ।
एक शॉर्टकट है जिससे आप --exclude-from
फ़ाइल को छोड़ सकते हैं । यदि आप सुनिश्चित हैं कि सभी चीजें जिन्हें आप कॉपी नहीं करना चाहते ( /tmp
आदि) अलग-अलग फाइल सिस्टम पर हैं, तो आप बस उपयोग कर सकते हैं:
rsync -axHv --delete-during / /mnt/usbhd/pi_backup/
-x
डाला गया है। यह संक्षिप्त रूप है --one-file-system
, जो rsync
फाइलसिस्टम सीमाओं को पार नहीं करने के लिए कहता है। व्यक्तिगत रूप से मैं पसंद करता हूं --exclude-from
, लेकिन उदाहरण के लिए, डिफ़ॉल्ट रास्पियन, --one-file-system
ठीक काम करेगा। यदि आप -x
सावधान रहना चाहते हैं तो आप दोनों का उपयोग कर सकते हैं : डी
यह पूरी तरह से बैकअप नहीं है। यह काफी है अगर आपने कुछ भी नहीं डाला है boot
और आप कार्ड को कंप्यूटर और फ्लाइट में चिपकाकर सिस्टम को पुनर्स्थापित करने के लिए बैक का उपयोग करके ठीक हैं:
rsync -av --delete-during /mnt/usbhd/pi_backup/ /mnt/sdcard_partition2/
आप इस पर एक नई छवि के साथ एक कार्ड के साथ भी कर सकते हैं (यह मानते हुए कि यह आपकी आधार छवि के समान है) हालांकि यह थोड़ा अक्षम है यदि आपको छवि बनानी है (क्योंकि आप तब इसे अधिलेखित करने जा रहे हैं)। आप USB अडैप्टर के माध्यम से उस पर ऐसी छवि के साथ एक और एसडी कार्ड कनेक्ट कर सकते हैं, और डुप्लिकेट कार्ड को बनाए रखने के लिए उपरोक्त विधि का उपयोग कर सकते हैं।
यदि आपने /boot
(जैसे, एक कस्टम कर्नेल) में सामान रखा है /boot/config.txt
, तो आप उसे वापस भी चाहते हैं (बहुत सरल - इसके लिए बहुत कुछ नहीं है)। बस इसे अलग से करें, और जब आप पुनर्स्थापित करते हैं, तो वह सामान पहले विभाजन में जाता है।
यहां देखें कि क्या आप एक रिक्त रास्पियन शैली की छवि बनाना चाहते हैं जिसे आप तब बैकअप कर सकते हैं। एक खाली रास्पियन स्टाइल कार्ड बनाने के लिए आप एक समान कार्यप्रणाली का उपयोग कर सकते हैं - सिर्फ एक .img
फाइल से निपटने के बजाय , आप एक वास्तविक डिवाइस (जैसे /dev/sdb
) के साथ काम करेंगे , जिसका अर्थ है कि आपको केवल विभाजन तालिका बनाना है fdisk
और फिर प्रारूप /dev/sdb1
और sdb2
(या जो भी) के साथ mkfs
।
लेकिन पूरी छवि कॉपी करना आसान है! इससे परेशान क्यों?
यह इतना मुश्किल नही है; मैंने 10 मिनट में एक रिक्त कार्ड (उस अंतिम लिंक के अनुसार स्वरूपित) को बहाल कर दिया। हां, बस dd
पूरी चीज़ पर उपयोग करना सरल है (यदि आपको भ्रामक जैसे शब्द मिलते हैं ...), लेकिन तब आपको अपना बैकअप अपडेट करने में हर बार काफी समय लगता है क्योंकि आपको इसका हर बार 100% करना होगा। उपयोग करते समय rsync
, एक बार बैकअप मौजूद होने के बाद, इसे अपडेट करना बहुत तेज़ होता है, इसलिए आप इसे क्रोन के माध्यम से प्रतिदिन दर्द रहित रूप से सेट कर सकते हैं। एक नेटवर्क पर भी। हर छह घंटे में। जितना अधिक आप इसे करते हैं, उतना ही कम समय लगेगा।
rsync
के जरिए ssh
यहाँ एक उदाहरण है:
rsync [options] --rsh="ssh [ssh options]" root@[the pi ip]:/ /backup/rpi/
"विकल्प" होगा, जैसे, -av --delete --exclude-from=/rsync-exclude.txt
और "ssh विकल्प" वह है जो आप सामान्य रूप से उपयोग करते हैं (यदि कुछ भी)। के माध्यम से आप रूट पहुँच होना आवश्यक है ssh
एक सिस्टम बैकअप के प्रयोजनों (सेट के लिए यह करने के लिए PermitRootLogin=yes
में /etc/ssh/sshd_config
और सर्वर को पुनः आरंभ)।
1 आपको यह फाइल रखनी चाहिए। आप इसके साथ #
या के साथ शुरू होने वाली लाइनों पर टिप्पणी डाल सकते हैं ;
। इसमें वास्तविक rsync
कमांड शामिल हो सकती है , जिसे बाद में कॉपी किया जा सकता है ताकि आपको इसे हर बार याद न करना पड़े।
2 इशारा करने के लिए क्रिस के लिए धन्यवाद rsync
यह स्वचालित रूप से नहीं करता है।
dd
, में देखेंrsync
।