İşte Pi'ye rsync
yedekleme yapmak için bir giriş . İlk yedek oluşturulduktan sonra, bu şekilde güncel tutmak tüm görüntüyü sürekli kopyalamaktan çok daha hızlıdır. Bunu yerel bir sabit sürücüye veya bir ağ üzerinden yapabilirsiniz.
Aslında çalışan bir sistemin tam bir kopyasını yedek olarak istemiyorsunuz, çünkü dosya sistemindeki görünüşte bazı şeyler yalnızca çalışma zamanında var. Bir yedekleme o dahil ve daha sonra bir görüntü yaratmak için kullanmaya olabilir sizin için sorun yaratabilir.
Başka istisnalar da var. Hariç tutulacak rsync
( glob ) desenlerin bir listesini kabul edebilir ve bunlar bir dosyadan okunabilir, bu yüzden ilk önce böyle bir dosyada ne olması gerektiğini gözden geçirelim. Girişlerin formda /directory/*
olup olmadığını unutmayın /directory
. Bunun nedeni bizlerin var olmasını istiyoruz, fakat onlarda hiçbir şey kopyalamak istemiyoruz.
/proc/*
/sys/*
Bunlar gerçekten diskte yok. Onlar çekirdeğe bir arayüzdür, bu onları yaratır ve bellekte tutar . Bunları kopyalarsanız ve tekrar sisteme kopyalarsanız ve başlatırsanız, en iyisi anlamsız olacaktır, çünkü çekirdek bunları arayüzler için bağlama noktaları olarak kullanır. veri içeren bir dizinde deneyin. Çalışır ve herhangi bir zarar vermez, ancak dizinde bulunan şeylere erişilemez.]
/sys
Ve /proc
bağlama noktalarının var olmasının kritik olduğunu unutmayın . Ancak hiçbir şey içermemelidir. Sonraki:
/dev/*
dev
Dizin ile aynı şey değildir proc
ve sys
ancak o bizim için. Bunu kaydetmeniz gerektiğine inanıyorsanız, aynı cihaz düğümlerini yedeklemenizde veya başka bir şeyde kullanabilmeniz için yanılıyorsunuz . Rahatsız etme. Kopyalamayın dev
. Bir zamanlar bir zamanlar önce Linux bu şekilde çalışıyordu, ama artık çalışmıyor.
/boot/*
Bu, Raspbian gibi Pi'ye özgü dağıtımların çoğu (belki de tamamı) olan özel bir durumdur. Aslında ilk bölüm, bölüm, bölüm için bir bağlantı noktası. Bununla ayrı ayrı ilgileneceğiz. Ne yaparsan yap, buraya dahil etme zahmet etmeyin, çünkü yine de bir bağlantı noktası.
/tmp/*
/run/*
/run
genellikle diskte de değildir, bellektedir. Belki de /tmp
olabilir (bu, bir miktar SD kart işleminden tasarruf sağlar), ancak her durumda, adından da anlaşılacağı gibi, bunlar kalıcı veri depolamak için yer değildir. Onları kullanan uygulamalar, her önyüklemede silinmelerini bekler.
/mnt/*
/media/*
Bunlar, özellikle bir sabit diske veya USB belleğe yedekleme yapmayı planlıyorsanız ve cihaz içerideyse /mnt
veya /media
(otomatik olarak sonuncuyu kullanma eğilimi varsa), çünkü bu cihazların dosya sistemindeki yerini dışlamazsanız, alanın tükenene kadar sürücünün içeriğini kendisine yedekleyen bir döngü oluşturun. Bence aptalca bir şeyi fark edecek kadar akıllı rsync
olabilir , ama öncül test etmekten kaçınmaya çalış.
Gerçek yedeklemede: Yerel olarak monte edilmiş sabit sürücüde, USB şeyinde, vb. Yedeklemek için bir dizin oluşturun - örneğin "pi_backup". Alternatif olarak uzak bir konuma ssh
(aşağıya bakınız) veya ağa bağlı bir dosya sistemi kullanarak yedekleme yapabilirsiniz , ancak bu muhtemelen ilk kez bir süre alacaktır.
Hariç tutulacak listeyi içeren dosya /rsync-exclude.txt
1 ise ve sürücünüz ise /mnt/usbhd
, asıl yedeklemeyi yapmak için:
rsync -aHv --delete --exclude-from=/rsync-exclude.txt / /mnt/usbhd/pi_backup/
Üzerine bir eğik çizgi olduğuna dikkat edinpi_backup/
.
Bu biraz zaman alacaktır ve çok fazla çıktı üretecektir (bunu bir günlükte incelemek istiyorsanız, ekleyin > rsync.log
). --delete
ilk kez anlamsızdır, ancak yedeği güncel tutmak için onu kullanın. Bu, daha sonra Pi'de sildiğiniz şeylerin de yedeklemenizden kaldırılmasını sağlar. a
Ve dizinlere setleri tekrarlama tüm dosya maç niteliklerini emin olur. sabit bağlantıları-H
korumaktır ( 2) , bu nedenle bazı çıktılar alırsınız (aksi halde sessiz). Daha fazlasını gör .v
rsync
man rsync
--exclude-from
Dosyayı atlayabileceğiniz bir kısayol var . Kopyalamak istemediğiniz her şeyin ( /tmp
vb.) Ayrı dosya sistemlerinde olduğundan eminseniz, yalnızca şunları kullanabilirsiniz:
rsync -axHv --delete-during / /mnt/usbhd/pi_backup/
-x
yerleştirildi. Bu, dosya sistemi sınırlarını geçmemeyi --one-file-system
söyleyen kısa şeklidir rsync
. Şahsen ben tercih ediyorum --exclude-from
, ama örneğin, varsayılan Raspbian, --one-file-system
iyi çalışacak. -x
Dikkatli olmak istiyorsanız her ikisini de kullanabilirsiniz : D
Bu tam bir yedekleme değil. Herhangi bir şey yerleştirmediyseniz boot
ve kartı bir bilgisayara takarak ve çalıştırarak sistemi geri yüklemek için yedeklemeyi kullanmanız yeterlidir :
rsync -av --delete-during /mnt/usbhd/pi_backup/ /mnt/sdcard_partition2/
Bunu, üzerinde yeni bir görüntü olan bir kartla da yapabilirsiniz (bunun temel görüntünüzle aynı olduğunu varsayarak), ancak görüntüyü oluşturmak zorunda kalırsanız bu biraz verimsizdir (çünkü daha sonra üzerine yazacaksınız). Ayrıca üzerinde bir görüntü bulunan bir USB adaptörüyle başka bir SD kartı da bağlayabilir ve bir kopya kartı korumak için yukarıdaki yöntemi kullanabilirsiniz.
İçerdiği şeyleri /boot
(örneğin, özel bir çekirdeği) koyduysanız /boot/config.txt
, bunu da yedeklemek istersiniz (oldukça basit - fazla bir şey yoktur). Sadece ayrı ayrı yapın ve geri yüklediğinizde, bu şeyler ilk bölüme gider.
Daha sonra yedekleyebileceğiniz boş bir Raspbian tarzı resim oluşturmak istiyorsanız, buraya bakın . Boş bir Raspbian tarzı kart oluşturmak için benzer bir metodoloji kullanabilirsiniz - bir .img
dosyayla uğraşmak yerine, gerçek bir cihazla (örneğin /dev/sdb
) uğraşırsınız , yani tek yapmanız gereken bölüm tablosunu oluşturmak fdisk
ve sonra kullanmaktır. biçimlendirin /dev/sdb1
ve sdb2
(veya herhangi bir şekilde) mkfs
.
Ancak tüm görüntünün kopyalanması daha kolaydır! Neden bununla uğraşmıyorsun?
O kadar zor değil; 10 dakika içinde boş bir karta (son bağlantıya göre biçimlendirilmiş) geri yükledim. Evet, sadece dd
her şeyi kullanmak daha basittir (kelimelerin kafa karıştırıcı gibi şeyler bulursanız…), ANCAK, yedeklemenizi güncellemek istediğinizde her zaman biraz zaman alır, çünkü her seferinde% 100'ünü yapmanız gerekir. Kullanılması rsync
bir yedek var olduğunda cron üzerinden acısız günlük bir yapılacak şekilde ayarlayabilirsiniz, böylece, bu güncelleme, çok daha hızlıdır. Hatta bir ağ üzerinden. Her altı saatte bir. Ne kadar sıklıkla yaparsanız, o kadar az zaman alır.
rsync
üzerinden ssh
İşte bir örnek:
rsync [options] --rsh="ssh [ssh options]" root@[the pi ip]:/ /backup/rpi/
"Seçenekler", mesela, -av --delete --exclude-from=/rsync-exclude.txt
ve "ssh seçenekleri" normalde ne kullanıyorsanız (bir şey varsa) olacaktır. Aracılığıyla Kök erişimi olmalıdır ssh
sistem yedekleme amaçları (set için bunu PermitRootLogin=yes
içinde /etc/ssh/sshd_config
ve sunucuyu yeniden başlatın).
1 Bu dosyayı saklamanız gerekir. İçinde #
veya ile başlayan satırlara yorum yazabilirsiniz ;
. Bu rsync
, daha sonra yapıştırılan gerçek komutu içerebilir, böylece her seferinde hatırlamanıza gerek kalmaz.
2 Kris için teşekkür ederim, rsync
otomatik olarak bunu yapmaz.
dd
, içine bakmarsync
.