İşte Pi'ye rsyncyedekleme 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.]
/sysVe /procbağlama noktalarının var olmasının kritik olduğunu unutmayın . Ancak hiçbir şey içermemelidir. Sonraki:
/dev/*
devDizin ile aynı şey değildir procve sysancak 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/*
/rungenellikle diskte de değildir, bellektedir. Belki de /tmpolabilir (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 /mntveya /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.txt1 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). --deleteilk 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. aVe 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 .vrsyncman rsync
--exclude-fromDosyayı atlayabileceğiniz bir kısayol var . Kopyalamak istemediğiniz her şeyin ( /tmpvb.) Ayrı dosya sistemlerinde olduğundan eminseniz, yalnızca şunları kullanabilirsiniz:
rsync -axHv --delete-during / /mnt/usbhd/pi_backup/
-xyerleştirildi. Bu, dosya sistemi sınırlarını geçmemeyi --one-file-systemsöyleyen kısa şeklidir rsync. Şahsen ben tercih ediyorum --exclude-from, ama örneğin, varsayılan Raspbian, --one-file-systemiyi çalışacak. -xDikkatli olmak istiyorsanız her ikisini de kullanabilirsiniz : D
Bu tam bir yedekleme değil. Herhangi bir şey yerleştirmediyseniz bootve 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 .imgdosyayla 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 fdiskve sonra kullanmaktır. biçimlendirin /dev/sdb1ve 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 ddher ş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ı rsyncbir 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.txtve "ssh seçenekleri" normalde ne kullanıyorsanız (bir şey varsa) olacaktır. Aracılığıyla Kök erişimi olmalıdır sshsistem yedekleme amaçları (set için bunu PermitRootLogin=yesiçinde /etc/ssh/sshd_configve 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, rsyncotomatik olarak bunu yapmaz.
dd, içine bakmarsync.