Od kilku tygodni piszę programy dla mojego Raspberry Pi (z systemem Raspbian) i chciałbym się upewnić, że chronię pracę, którą wykonałem.
Jak mogę wykonać kopię zapasową plików, które utworzyłem?
Czy mogę po prostu podłączyć kartę SD do komputera z systemem Windows (XP lub 7) i skopiować ją na dysk twardy lub inną kartę SD?
git
lubhg
, w ten sposób nie tylko masz kopie kodu w wielu miejscach, ale także pełną historię zmian tego kodu.Odpowiedzi:
Jeśli chcesz zachować wszystkie dane, prawdopodobnie będziesz musiał utworzyć obraz dysku. Co więcej, system Windows nie rozpoznaje typowych systemów plików Linux, więc prawdopodobnie nawet nie zobaczysz swoich plików po podłączeniu karty SD.
Utworzenie obrazu dysku zachowa nie tylko pliki, ale także strukturę systemu plików, a kiedy zdecydujesz się na flashowanie nowej karty SD, będziesz mógł po prostu ją podłączyć i będzie działać.
Linux
W systemie Linux możesz użyć standardowego
dd
narzędzia:Gdzie
/dev/sdx
jest twoja karta SD.Prochowiec
Na Macu możesz także użyć standardowego
dd
narzędzia z nieco inną składnią:Gdzie
/dev/rdiskx
jest twoja karta SD.(użycie rdisk jest preferowane jako surowe urządzenie - szybciej)
Aby dowiedzieć się, który dysk jest typem urządzenia
diskutil list
w wierszu polecenia - może być także konieczne rootowanie; Aby to zrobić,sudo -s
wpisz hasło po wyświetleniu monitu.Windows
opcja 1
W systemie Windows można użyć procesu odwrotnego, który zastosowano podczas flashowania karty SD.
Możesz użyć Win32 Disk Imager , który jest preferowanym narzędziem do flashowania karty SD Fundacji. Wystarczy wpisać nazwę pliku (lokalizację i nazwę pliku obrazu kopii zapasowej do zapisania), wybrać urządzenie (kartę SD) i nacisnąć przycisk odczytu:
Oczywiście można również użyć RawWrite ,
dd
dla systemu Windows lub podobnych narzędzi, proces jest dość podobny.Opcja 2
Jeśli nie chcesz tworzyć kopii zapasowej całego systemu, ale tylko określone pliki, sugeruję połączenie się z Raspberry Pi przez SFTP i skopiowanie plików na komputer lokalny (możesz użyć klienta WinScp ). Jeśli masz włączony SSH, SFTP zwykle nie wymaga specjalnej konfiguracji po stronie Raspberry Pi.
Inną opcją jest skopiowanie plików do zdalnego systemu za pomocą rsync .
Możesz także zainstalować specjalne sterowniki, aby Twój system Windows mógł odczytać
ext
systemy plików (i tym samym będzie mógł odczytać całą kartę SD), na przykład,ext2fsd
ale prawdopodobnie nie jest to warte wysiłku.Ponieważ obraz będzie miał taki sam rozmiar jak karta SD, możesz go skompresować. Można to osiągnąć za pomocą ulubionego narzędzia do kompresji, takiego jak
gzip
7zip, WinZip, WinRar ...źródło
rsync
przez viassh
. Ponadto w przypadku kodu źródłowego - jak już stwierdził Mark Booth - należy bezwzględnie użyć DVCSJeśli używasz Linuksa, możesz użyć
dd
polecenia, aby wykonać pełną kopię zapasową obrazu:lub do kompresji:
Gdzie
sdx
jest twoja karta SD.Aby przywrócić kopię zapasową, cofnij polecenia:
lub po kompresji:
źródło
:)
)bs=1M
lub podobny parametr. Domyślny rozmiar bloku 512 bajtów spowoduje utratę wydajności kopiowania.Oprócz kopii zapasowych na poziomie bloków istnieją dwa typowe podejścia do radzenia sobie ze źródłami: ciągłe archiwizowanie (1) lub korzystanie z systemu kontroli wersji (2).
Użyjemy wiersza polecenia (dowolnego lokalnego terminala lub połączenia SSH z maszyną Raspberry Pi), prawda?
1. Archiwum
2. RCS (na przykład Git)
źródło
Na komputerze Mac nie chcesz używać
/dev/diskn
. Zamiast tego należy użyć/dev/rdiskn
, gdzie n jest liczbą używaną przez system operacyjny do identyfikacji karty SD. To znacznie skraca czas kopiowania.Dlatego dla optymalnego procesu tworzenia kopii zapasowej na komputerze Mac zalecam wykonanie następujących czynności:
Uruchom
diskutil list
i znajdź dysk odpowiadający karcie SD Raspberry Pi:Najwyraźniej
/dev/disk1
jest to moja karta SD o pojemności 8 GB, nazwa partycji Linuksa również jest trochę wskazówką.Jednak zamiast używać
/dev/disk1
zdd
, powinieneś użyć/dev/rdisk1
tak:Aby go przywrócić, po prostu zamień parametry
if
(plik wejściowy) iof
(plik wyjściowy):Lub,
gzip
aby zaoszczędzić znaczną ilość miejsca:I, aby skopiować obraz z powrotem na kartę SD:
Aby uzyskać więcej informacji, zobacz tę stronę wiki .
źródło
Możesz uruchomić to polecenie z komputera z systemem Linux z dużą ilością miejsca:
Jako warunek konieczny musisz wygenerować klucze .ssh i skopiować
id_XXX.pub
je do/root/.ssh/authorized_keys
.Możliwe są problemy z systemem plików, ponieważ jest to kopia zapasowa na żywo, ale jeśli Twój Raspberry Pi nie jest naprawdę zajęty, zwykle będzie OK.
Kompresja na komputerze PC jest prawdopodobnie szybsza w następujący sposób:
źródło
ssh root@raspberry dd if=/dev/mmcblk0 bs=1M | pv | gzip -c > img.gz
Jeśli używasz systemu Windows:
Pobierz Win32 Disk Imager.
Utwórz ścieżkę do pliku, którego chcesz użyć do zapisania obrazu. (Używam C: \ RasPi_Bkp)
Uruchom Win32 Disk Imager
Przejdź do miejsca ścieżki do pliku kopii zapasowej i wpisz nazwę pliku.
Kliknij zapisz
Upewnij się, że urządzenie pokazane na liście po prawej stronie ścieżki do pliku to urządzenie, którego kopię zapasową chcesz utworzyć.
Kliknij „Czytaj”
Czekać.
źródło
Jeśli wszystkie twoje programy są w identyfikatorze użytkownika pi, naprawdę nie ma powodu, aby wykonać kopię zapasową całego systemu plików, jak sugeruje się. to, co robię, to po prostu wykonać kopię zapasową pojedynczego identyfikatora. Wykonuję polecenie:
z katalogu domowego pi, który tworzy plik pi.tgz, zawierający wszystkie zawarte w nim pliki i katalogi (oprócz plików ukrytych). Następnie scpuję ten plik na inny komputer z linuksem, ale możesz go ftpować lub wysłać e-mailem w celu bezpiecznego przechowywania ... wszystkiego, co dostało się na inny komputer.
Tworzy to znacznie mniejszy plik kopii zapasowej.
Martwisz się o wszystkie dodatkowe pakiety, które zainstalowałeś po drodze? Utwórz skrypt, który wykona te instalacje ponownie, jeśli będziesz musiał odtworzyć kartę SD i przechowywać ją w katalogu domowym pi. (Mam katalog ~ / bin na takie rzeczy). Wykonaj wszystkie polecenia niezbędne do przeprowadzenia instalacji, aby przywrócić Cię do pozycji, w której chcesz się znaleźć. Dokumentuje twoje zmiany i pozwala szybko zbudować nową kartę SD. Zawierałby polecenia w postaci:
Zacznij od
dzięki czemu Twój system również zostanie przywrócony do obecnego poziomu, zanim zaczniesz dodawać pakiety.
Ponieważ będzie to w Twoim pliku pi.tgz, będziesz go mieć, gdy będziesz go potrzebować.
źródło
Korzystam z Raspbian i używam dd i cron do automatycznego tworzenia kopii zapasowych mojej karty SD na zewnętrzny dysk USB.
To jest naprawdę proste rozwiązanie. Działa raz w tygodniu o 2 rano w poniedziałek rano i robi zdjęcie karty SD.
Napisałem skrypt, który zamyka usługi takie jak lighttpd i cron, aby zminimalizować ryzyko zapisania karty SD w środku kopii zapasowej, a następnie wywołuje dd, zanim zacznie usługi ponownie po zakończeniu tworzenia kopii zapasowej.
Umieściłem skrypt i kilka instrukcji na moim blogu, http://www.stuffaboutcode.com/2012/08/raspberry-pi-auto-backups.html
źródło
dd
wprowadzeniesd?
urządzenia z zamontowanymi partycjami nie brzmi całkiem bezpiecznie.W Debianie możesz użyć dd i tar. Spowodowałoby to utworzenie pełnej kopii karty SD i wymagałoby pamięci zewnętrznej (na kartę SD), prawdopodobnie zamontowanego napędu USB lub sieciowego.
/ / Dev / sdd jest lokalizacją twojej karty SD, a
of
nazwą pliku wyjściowego.źródło
.tar.gz
plik z pliku dd? Czy nie byłoby lepiej po prostu uruchomićgzip
lubbzip2
bezpośrednio na pliku dd?/dev/mmcblk0p1
i/dev/mmcblk0p2
wymieniłem ...Na szczęście Raspberry Pi może utworzyć własną kopię zapasową, która jest niezależna od podstawowego systemu operacyjnego używanego do uzyskania dostępu do Raspberry (Windows, Linux, Mac). dd, tar i rsync to różne narzędzia do tworzenia kopii zapasowych w systemie Linux. Wszystkie te typy kopii zapasowych mogą być tworzone przez działające Pi pod warunkiem, że zatrzyma ono wszystkie zajęte zadania, takie jak mysql, smb, dna, owncloud, seafile, apache i in. Przed utworzeniem kopii zapasowej. Istnieje inne pytanie, w którym podejście jest wyjaśnione bardziej szczegółowo, a możliwe rozwiązanie jest wyjaśnione tutaj
źródło
Jeśli Twoje Raspberry Pi jest podłączone do sieci i potrzebujesz automatycznych kopii zapasowych w locie, prawdopodobnie najłatwiejszym sposobem jest Bittorent Sync - bardzo łatwa instalacja i płynne i stabilne działanie na Pi i wielu innych platformach.
źródło
Nigdy więcej przerażających dd, synchronizacji, tar, ..., przyjaznej dla początkujących kopiarki kart SD
Nowa wersja Raspbian o nazwie stretch ma bardzo przyjazną dla początkujących aplikację o nazwie SD Card Copier. Nie musisz używać narzędzi systemu Linux, takich jak dd itp. Może nawet kopiować duże karty na małe.
Jak to zrobić
Zaczynasz od ikony menu GUI RPi w lewym górnym rogu, przejdź do Akcesoria, a następnie kliknij Kopiarka na karty SD.
Wszystko, co musisz zrobić, to kilka kliknięć w GUI!
Po utworzeniu zapasowej karty SD możesz użyć Menedżera dysków systemu Windows, aby odczytać obraz karty do pliku Windows i zapisać go w dowolnym katalogu Windows. W ten sposób potrzebujesz tylko fizycznej karty SD i przechowujesz wiele wersji obrazów na komputerze z systemem Windows.
Oczywiście możesz po prostu użyć karty zapasowej jako kopii roboczej, aby zastąpić oryginalną kartę, która teraz staje się kartą główną, i zablokować ją w bezpiecznym miejscu.
źródło
Szukając obrazu mojej spersonalizowanej karty SD, znalazłem ten post. Najlepsza odpowiedź tutaj dotyczy obrazowania karty SD, ale to, czego szukałem, wymagało zmniejszenia systemu plików, aby obraz był jak najmniejszy. Skończyło się na tym, że stworzyłem własne narzędzie do tego i opisałem proces na stronie : https://raspberrypi.stackexchange.com/a/37899/32585
źródło
Oto 3 opcje:
W najnowszej wersji Raspbian istnieje narzędzie, które konwertuje Twój system operacyjny i pliki w plik .img, który możesz następnie umieścić na USB lub komputerze.
Podłącz kartę SD do komputera z systemem Windows i uruchom Win32 Disk Imager (zainstaluj tutaj, jeśli jeszcze tego nie zrobiłeś).
W (1) wpisz nazwę pliku i lokalizację pliku obrazu. W (2) wybierz literę napędu karty SD. Następnie naciśnij 3. To robi to samo co opcja 1.
Podłącz pamięć USB do swojego Pi i skopiuj wszystkie ważne pliki.
źródło
Ta aplikacja na Androida odczyta kartę SD do pliku .img i spakuje ją jednocześnie: https://play.google.com/store/apps/details?id=com.redrobe.raspicardimager
źródło
Stworzyłem narzędzie do tworzenia kopii zapasowych twojego malinowego pi, jeśli jesteś Linuksem. Spowoduje to również zmniejszenie obrazu twojego malinowego pi, dzięki czemu możesz umieścić .iso na mniejszej karcie SD: RaspberryPiShrink
Spowoduje to uruchomienie skryptu Python, który przeprowadzi Cię przez proces. Wystarczy podłączyć kartę microSD do komputera z systemem Ubuntu, Linux Mint lub Debain i postępować zgodnie z instrukcjami terminalu.
źródło
Korzystam z usbit dla Windows. Jest to jedyne narzędzie, jakie mogę znaleźć, które pozwala zamienić z większej karty SD na mniejszą. Wszystko, co zrobiłem, to zaznaczyłem poniższe na stronie opcji; Zignoruj sprawdzanie rozmiaru i Obetnij zbyt duże obrazy .
To pozwoliło mi zamienić moje obrazy OpenELEC i Xbian z karty SD 16 GB klasy 4 na kartę 8 GB klasy 10.
Jest DUŻO łatwiejsze niż zmiana rozmiaru tabel partycji itp.
źródło
find -type f -exec md5sum {} \; > filelist.txt
?