To pytanie odpowiada na pytanie, w jaki sposób używam komputera zewnętrznego do utworzenia kopii zapasowej mojego RPi.
Zastanawiam się, czy mogę utworzyć kopię zapasową aktualnie używanej karty SD i skopiować ją do pliku na urządzeniu pamięci USB. czy to możliwe? Jeśli nie, to czy istnieje sposób na utworzenie kopii zapasowej RPi bez angażowania innego komputera?
dd
, spójrzrsync
.dd
kopii o odpowiednim rozmiarze bloku prawdopodobnie będzie najszybsze w przypadku „nowej” kopii. Robienie kopii plik po pliku na nośniku flash / SD jest prawdopodobnie złym pomysłem.Odpowiedzi:
Oto wprowadzenie do korzystania
rsync
z kopii zapasowej na Pi. Po utworzeniu początkowej kopii zapasowej utrzymanie jej w ten sposób jest znacznie szybsze niż ciągłe zgrywanie całego obrazu. Możesz to zrobić na lokalnym dysku twardym lub w sieci.W rzeczywistości nie potrzebujesz pełnej kopii działającego systemu jako kopii zapasowej, ponieważ niektóre rzeczy rzekomo w systemie plików istnieją tylko w czasie wykonywania. Dołączenie tego do kopii zapasowej, a następnie użycie go do odtworzenia obrazu później może spowodować problemy.
Są też inne wyjątki.
rsync
może zaakceptować listę ( globalnych ) wzorców do wykluczenia, które można odczytać z pliku, więc najpierw przejrzyjmy, co powinno być w takim pliku. Pamiętaj, że wpisy mają formę,/directory/*
a nie formę/directory
. Jest tak, ponieważ chcemy, aby istniały, ale nie chcemy niczego w nich kopiować.Te tak naprawdę nie istnieją na dysku. Są interfejsem do jądra, które tworzy je i utrzymuje w pamięci . Jeśli skopiujesz je, a następnie skopiujesz z powrotem do systemu i uruchomisz, będzie to (co najwyżej) bez znaczenia, ponieważ jądro używa ich jako punktów montowania dla interfejsów [Jeśli chcesz zobaczyć, co się stanie po zamontowaniu partycji systemu plików w katalogu z danymi, spróbuj. Działa i nie wyrządzi żadnej szkody, ale rzeczy, które były w katalogu, są teraz niedostępne.]
Należy pamiętać, że ważne jest, że
/sys
i/proc
punkty montowania istnieje. Ale nic nie powinny zawierać. Kolejny:dev
Katalog nie jest całkiem tak samo jakproc
isys
ale dla naszych celów jest. Jeśli uważasz, że powinieneś to zapisać, aby mieć te same węzły urządzenia w kopii zapasowej lub coś w tym rodzaju, jesteś w błędzie . Nie zawracaj sobie głowy Nie kopiujdev
. Dawno, dawno temu Linux działał w ten sposób, ale już nie.Jest to rodzaj szczególnego przypadku z większością (być może wszystkimi) specyficznych dystrybucji Pi, takich jak Raspbian. W rzeczywistości jest to punkt montowania pierwszej partycji vfat. Zajmiemy się tym osobno. Cokolwiek robisz, nie zawracaj sobie głowy włączaniem go tutaj, ponieważ znowu jest to punkt montowania.
/run
na ogół też nie jest na dysku, jest w pamięci. Być może/tmp
może być też (zaoszczędziłoby to trochę akcji karty SD), ale w każdym razie, jak sugerują nazwy, nie są to miejsca do przechowywania trwałych danych. Aplikacje, które ich używają, oczekują, że mogą zostać usunięte przy każdym uruchomieniu.Są to szczególnie ważne, jeśli planujesz wykonać kopię zapasową na dysku twardym lub w pamięci USB, a urządzenie jest w
/mnt
lub/media
(automatyczne montowanie ma tendencję do korzystania z tego drugiego), ponieważ jeśli nie wykluczysz położenia tych urządzeń w systemie plików, utwórz pętlę, tworząc kopię zapasową zawartości dysku, aż zabraknie miejsca. Myślę, żersync
może być wystarczająco mądry, aby dostrzec coś głupiego, ale staraj się unikać testowania przesłanki.Przejdź do faktycznego tworzenia kopii zapasowych: Utwórz katalog, na którym chcesz utworzyć kopię zapasową na lokalnie zamontowanym dysku twardym, urządzeniu USB itp. - np. „Pi_backup”. Możesz na przemian tworzyć kopie zapasowe w zdalnej lokalizacji za pośrednictwem
ssh
(patrz poniżej) lub przy użyciu sieciowego systemu plików, ale prawdopodobnie zajmie to trochę czasu po raz pierwszy.Jeśli plik zawierający listę do wykluczenia to
/rsync-exclude.txt
1, a dysk to/mnt/usbhd
, wykonaj kopię zapasową:Zauważ, że na końcu jest ukośnik
pi_backup/
.To zajmie trochę czasu i wygeneruje dużo danych wyjściowych (jeśli chcesz to sprawdzić w dzienniku, dołącz
> rsync.log
).--delete
za pierwszym razem jest bez znaczenia, ale do aktualizowania kopii zapasowej używaj jej. To gwarantuje, że rzeczy, które później usunąłeś z Pi, również zostaną usunięte z kopii zapasowej.a
Zestawy rekurencji do katalogów i sprawia, że wszystkie atrybuty plików mecz.-H
jest zachowanie twardych linków 2 ,v
jest dla pełnych, dlatego dostajesz trochę danych wyjściowych (w przeciwnym raziersync
jest cicho). Zobaczman rsync
więcej.Istnieje skrót, dzięki któremu można pominąć
--exclude-from
plik. Jeśli masz pewność, że wszystkie rzeczy, których nie chcesz kopiować (/tmp
itp.), Znajdują się w osobnych systemach plików, możesz po prostu użyć:-x
został wstawiony. Jest to krótka forma--one-file-system
, która mówi,rsync
aby nie przekraczać granic systemu plików. Osobiście wolę--exclude-from
, ale na przykład domyślny Raspbian,--one-file-system
będzie działał dobrze. Możesz użyć obu, jeśli chcesz-x
zachować ostrożność: DTo nie jest kompletna kopia zapasowa. Wystarczy, jeśli nic nie włożyłeś
boot
i nie masz nic przeciwko użyciu kopii zapasowej do przywrócenia systemu poprzez włożenie karty do komputera i uruchomienie:Możesz to również zrobić z kartą z nowym obrazem (zakładając, że jest taki sam jak obraz podstawowy), chociaż jest to trochę nieefektywne, jeśli musisz utworzyć obraz (ponieważ następnie zamierzasz go zastąpić). Możesz także podłączyć inną kartę SD za pomocą adaptera USB z takim obrazem i użyć powyższej metody, aby zachować duplikat karty.
Jeśli wstawiłeś coś
/boot
(np. Niestandardowe jądro), w tym także/boot/config.txt
chcesz to zrobić (dość proste - nie ma w tym wiele). Po prostu zrób to osobno, a po przywróceniu pliki zostaną przeniesione na pierwszą partycję.Zobacz tutaj, jeśli chcesz utworzyć pusty obraz w stylu Raspbian, który możesz następnie utworzyć kopię zapasową. Możesz użyć podobnej metodologii, aby stworzyć pustą kartę w stylu Raspbian - zamiast zajmować się
.img
plikiem, będziesz miał do czynienia z prawdziwym urządzeniem (np./dev/sdb
), Co oznacza, że musisz tylko utworzyć tablicę partycji,fdisk
a następnie format/dev/sdb1
isdb2
(lub cokolwiek) zmkfs
.Ale kopiowanie całego obrazu jest łatwiejsze! Po co zawracać sobie tym głowę?
To nie jest takie trudne; Wróciłem do pustej karty (sformatowanej zgodnie z ostatnim linkiem) w 10 minut. Tak, samo użycie
dd
całości jest prostsze (jeśli znajdziesz takie rzeczy, jak słowa mylące ...), ALE to zajmuje trochę czasu za każdym razem, gdy chcesz zaktualizować kopię zapasową, ponieważ musisz zrobić 100% za każdym razem. Używaniersync
, po utworzeniu kopii zapasowej, jej aktualizowanie jest znacznie szybsze, dzięki czemu można tak skonfigurować, aby codziennie odbywała się bezboleśnie za pośrednictwem crona. Nawet przez sieć. Co sześć godzin. Im częściej to robisz, tym mniej czasu to zajmie.rsync
przezssh
Oto przykład:
„Opcje” to np.
-av --delete --exclude-from=/rsync-exclude.txt
A „opcje ssh” to to, czego normalnie używasz (jeśli cokolwiek). Musisz mieć dostęp do roota poprzezssh
to zrobić dla celów kopii zapasowej systemu (ustawionyPermitRootLogin=yes
w/etc/ssh/sshd_config
i zrestartuj serwer).1 Powinieneś zachować ten plik. Możesz umieszczać w nim komentarze w wierszach rozpoczynających się od
#
lub;
. Może to obejmować rzeczywistersync
polecenie, które można później skopiować i wkleić, abyś nie musiał pamiętać go za każdym razem.2 Dzięki Kris za wskazanie
rsync
nie robi tego automatycznie.źródło
mkdir /tmp/backupable && mount --bind / /tmp/backupable
i zsynchronizować to? Ma to również tę zaletę, że tworzy kopie zapasowe danych przechowywanych w miejscach „zasłoniętych” przez coś tam zamontowanego.--exclude-from
jest lepszym pomysłem. Jeśli masz czas, możesz napisać to jako osobną odpowiedź, masz mój głos i mogę to odnieść. Ta odpowiedź jest wystarczająco długa..img
, możesz; to i to powinno pomóc wyjaśnić, w jaki sposób są one zbudowane i jak można je tworzyć.Działający skrypt ze społeczności Raspberry wykonany przez członka tam.
Możesz ponownie używać i poprawiać kod, jak tylko chcesz. Jest dobrze udokumentowany i zrozumiały.
Zastanów się nad dodaniem komentarzy do oryginalnego forum lub opublikuj własną wersję, aby pomóc w dojrzewaniu treści. Daj trochę, daj trochę.
* I dziękuję za oddanie AndersW (kliknij, aby uzyskać skrypt GIT)
źródło
rsnapshot
brzmi obiecującorsync
jest droga; kiedy jutro będę miał czas, dodam odpowiedź.rsnapshot
warto również zbadać.Dostosowałem odpowiedź @goldilocks na rsync do tworzenia kopii zapasowych na pi. Wykonuję kopię zapasową na
ext4
partycję na dysku twardym zamontowanym na Pi. Jeśli dysk twardy nie zostanie podłączony, program rsync skopiuje go do katalogu montowania (do momentu zapełnienia karty SD). Jeśli dysk twardy nie jest zamontowany wrw
trybie, generowane są liczne komunikaty o błędach. Żadne z nich nie jest pożądane, więc sprawdzam, czy moja partycja jest zamontowana wrw
trybie przed kontynuowaniem.UWAGA 2015-03-03 Zmodyfikowałem swoją odpowiedź, aby dokładnie skopiować twarde linki. Oryginał działał, ale przekształcił wiele dowiązań twardych w pliki. Oprócz marnowania miejsca, zagraża to wielu zastosowaniom, które zakładają, że istnieją twarde linki. (Mój obecny obraz ma 869 linków, wiele w samym Raspbian.)
Mój skrypt, aby to zrobić, jest następujący. (Moja partycja jest
PiData
zamontowana/mnt/PiData
Przywróć (lub zaktualizuj inne Pi) za pomocą:
Ulepszyłem,
rsync-exclude.txt
aby wyeliminować niepotrzebne pliki.Pierwsza grupa to katalogi udokumentowane przez @goldilocks https://raspberrypi.stackexchange.com/users/5538/
Druga grupa to pliki i katalogi utworzone przez OS X, kiedy uzyskuję dostęp do mojego Pi przy użyciu AFP (Apple Filing Protocol). (Zwykle są one niewidoczne w systemie OS X, ale nie w systemie Raspbian. W każdym razie nie ma potrzeby wykonywania kopii zapasowej.) Nawet jeśli nigdy nie użyjesz AFP, nie spowoduje to żadnych szkód.
Trzecia grupa to pliki, których nie trzeba tworzyć kopii zapasowej (a na pewno nie kopiować do innego Pi). Przykłady fake-hwclock.data, raporty RPi-Monitor. Prawdopodobnie będziesz mieć inne.
źródło
Mam trzy Pis uruchomione w mojej lokalnej sieci i muszę je regularnie tworzyć kopie zapasowe za pomocą crona, gdy są uruchomione. Dlatego stworzyłem skrypt, który jest w stanie tworzyć kopie zapasowe dd, tar i rsync oraz je przywracać. Wolę używać rsync do tworzenia kopii zapasowych, ale inni ludzie wolą dd lub tar. Jest już używany przez wiele osób. Mam nadzieję, że przyda się także innym :-) raspibackup - Raspberry tworzy kopie zapasowe samego siebie
źródło
Oto nasze stabilne narzędzie do takich celów: https://github.com/aktos-io/aktos-dcs-tools
To narzędzie jest napisane do
make ssh
połączeńmake backup-root
,make mount-root
z odległych miejsc w pamięci na początku, a potem sesje lokalne są dodawane. Obsługuje więc lokalne kopie zapasowe, bezpośrednie zdalne kopie zapasowe, zdalne kopie zapasowe proxy. Kopie zapasowe są tworzone przyrostowo (przesyłane są tylko różnice), a katalogi kopii zapasowych są autonomiczne (wystarczy wybrać katalog / wersję do przywrócenia, każdy katalog ma pełną kopię zapasową). Oczywiście masz wersje (backup.last-0 to najnowsza wersja). Możesz przerwać proces tworzenia kopii zapasowej w dowolnym momencie i kontynuować później.Oto instrukcje dotyczące konkretnego problemu:
EDYTOWAĆ
Teraz dodano nowy cel: możesz utworzyć fizyczną kartę SD z kopii zapasowych za pomocą jednego polecenia:
Postępuj zgodnie z instrukcjami, utwórz kartę SD, uruchom RaspberryPi za pomocą nowo utworzonej karty SD.
źródło
Oto zupełnie inne podejście. Można użyć LVM ( L ogical V POZIOM GŁOŚNOŚCI M anager), aby spójnych kopii zapasowych. Oprócz innych ulepszeń, takich jak łatwe dodawanie, rozszerzanie i zmniejszanie pamięci masowej lub przywracanie systemu operacyjnego do wcześniejszego stanu z migawki, można również tworzyć kopie zapasowe. Nie musisz się martwić dynamicznymi zmianami plików podczas tworzenia kopii zapasowej, ustawianiem systemów plików tylko do odczytu, wykluczaniem określonych katalogów lub czymś innym. Dzięki LVM po prostu tworzysz migawkę, montujesz migawkę i tworzysz kopię zapasową przy użyciu preferowanej metody. Możesz wykonać kopię za pomocą
cp -a
, zrobić lustro za pomocąrsync
, zrobić archiwum za pomocątar
lub zrobić obraz za pomocądd
. Zakładając, że masz zamontowane urządzenie kopii zapasowej/mnt/usbhd/pi_backup/
, możesz na przykład:Konfiguracja LVM zajmuje tylko jeden raz trochę wysiłku . Jak to zrobić, możesz przejrzeć Łatwe kopie zapasowe i migawki działającego systemu z LVM .
źródło
Znalazłem narzędzie do tworzenia kopii zapasowych, które umożliwia instalowanie obrazów.
Posiada również narzędzia do montowania i zmniejszania obrazów.
Może to być przydatne dla innych
Załączona dokumentacja jest bardzo krótka, dlatego zwracam uwagę na następujące kwestie:
ext4
sformatowaną partycję na swoim Pi w/mnt
lub/media
(można użyć dowolnego formatu, który pozwala na duże pliki i jest obsługiwany przez Pi, np. ExFAT lub dysk sieciowy)./mnt/Image/BusterBackup.img
Lekko zmodyfikowałem oryginał (aby skopiować punkty montowania), aby poprawnie obliczyć przesunięcia i rozmiary partycji i dodałem kilka komentarzy.
źródło
Otwórz terminal i wpisz „lsblk -f”.
Powinno to pokazać wszystkie podłączone urządzenia pamięci masowej.
Następnie wpisz „dd if = / dev / [NAZWA karty SD] bs = 1M”.
To zajmie trochę czasu, więc możesz chcieć uruchomić go w tle.
To jest dokładnie ten sam sposób, w jaki wykonuje się kopię zapasową karty SD w systemie Linux.
źródło