Yedeklemek için rsync kullanma


14

Şu anda harici bir sabit sürücünün A içeriğini (1) hedef harici sabit sürücü B'deki her şeyi silerek ve (2) A'dan B'ye (Finder'da) her şeyi kopyalayarak yedekliyorum. Harici sabit sürücü yalnızca “temel veriler” (klasörler, resimler, videolar, belgeler vb.) İçerir, fantezi / garip bir şey yoktur.

Ama orada var olan tüm şaşırtıcı ücretsiz araçlar ile yedeklemek için iyi bir tane bulamadım (öneriler kabul edildi).

Bunu otomatikleştirmek istiyorum. Birkaç aramadan sonra kullanabileceğim anlaşılıyor rsync. Daha sonra rsynchedef sabit sürücüde bulunan dosyaları kopyalamaktan kaçınarak bunu otomatikleştirmek istiyorum (elbette, bir değişiklik yapıldıysa, dosyayı / klasörü güncellemek istiyorum; silinen dosyalar / klasörler veya yeni dosyalarla aynı / klasör; fikir genellikle Finder ile manuel olarak yaptığım şeyi taklit etmektir).

Bu noktaya geldim

rsync -av --progress --delete /Volumes/A/ /Volumes/B

Şimdi günlük adı ile başlar hangi dosyaların dolu .veya ._hatta ._.. Onlar gerekli mi?

Soru

Sadece önemli olan dosyaları nasıl kopyalayabilirim, önemli olmayanları geride bırakabilirim. Örneğin, sahip photo.pngolsaydım kopyalamamı beklerim photo.png, ._photo.pngya da çok fazla dosya.

Mac'te ne --excludeveya --exclude-fromgüvenle kullanılabilir? İyi bir kural “Finder'ın gösterdiği her şeyi kopyalamak” olabilir, bu da tüm klasörlerden manuel olarak geçersem kopyalayacağım şeydir.

 Ek soru

-av --progress --deleteyeter? Bir suç işlemiyor muyum veya bazı verileri riske atıyor muyum? Hangi seçenekleri kullanırsınız.

Lütfen cevabınızı bazı argümanlarla destekleyin, çok memnun olurum.

Otomatikleştirmenin rsyncoldukça güçlü ve kullanımı kolay bir yolunu arıyorum .


Yorumlar uzun tartışmalar için değildir; bu görüşme sohbete taşındı .
bmike

1. paragrafta açıklanan stratejide, (1) - B'deki her şeyin silinmesi - A için ciddi bir sorun olursa ne olur? A ve önceki yedeklemesindeki verilere erişimi kaybedebilirsiniz. Yedek depolama alanınızda yeterli alan varsa, yedeklemeyi yalnızca daha yeni bir yedekleme başarıyla tamamlandıktan sonra silmeye ne dersiniz?
Ricardo

1
@ bmike'ın sohbete taşınan sohbete bağlantısı kesildi.
19'da Merchako

Yanıtlar:


17

Maksimum Güvenlik için Her Şeyi Kopyalayın

En güvenli seçenek, görünmez meta veri dosyaları da dahil olmak üzere her şeyi kopyalamaktır .

Dosyalar bir nedenden dolayı ve yazılım değiştikçe var olma eğilimindedir, bu meta veri dosyalarının varlığı, amacı ve içeriği de değişecektir. Her şeyi kopyalamak bakım yükünü azaltır ve hiçbir şeyin kaybolmadığı için rahatlık sunar.

Tarafından oluşturulan günlük dosyası rsyncteknik rsyncolarak bir komut satırı aracı olmanın doğası tarafından dahil edilecektir . Kullanıcının kontrol etmesi için toplanmış, meta verilere filtre uygulanmış ve hatta belki de renkli kodlanmış bir çıktı sunmayı düşünün. Bunu çok çeşitli komut dosyası araçları ve dillerle yapabilirsiniz. Bu yaklaşımla ilgili yardıma ihtiyacınız varsa, lütfen Farklı Sor ve StackOverflow ile ilgili daha fazla soru sorun .

Son Sil ve OS X Kaynaklarını Kopyala

rsyncBayraklarla ilgili olarak, büyük verileri bir harici sürücüden diğerine kopyalamanın en hızlı ve en güvenli yolu sorusuna bir göz atın . Bu soruda, birkaç ek bayrak kullanılmış ve açıklanmıştır:

sudo rsync -vaE --progress --delete-after /Volumes/SourceName /Volumes/DestinationName

Bu durumda, Ekaynak çatallarının ve diğer Mac'e özgü özelliklerin kopyalanmasını sağlar.

--delete-afterKopyalama tamamlanana kadar silmekten kaçınmayı düşünebilirsiniz ; bu yaklaşımın potansiyel olarak kaynağın iki katı büyüklüğünde bir hedef sürücü gerektireceğini lütfen unutmayın.

Olası İstisnalar

İlgili bir soruya, FCPX İşleme Dosyalarını Time Machine yedeklemesinden nasıl çıkarabilirim? , çoğu yedeklemeden hariç tutulabilen OS X dosya ve klasörlerinin faydalı bir bağlantısını sağladı . Bu bağlantı, hariç tutabileceğiniz dosya desenleri, klasörler ve yolların pratik bir listesini sunar.

Nokta Dosyalarını Dahil Et

Noktalarla başlayan ve .*eşleşen dosyaları yedeklemek için iyi nedenler vardır .

Bazı yazılımlar, görünmez nokta ön ekli klasörlerde kullanıcının klasörünün üstündeki klasörlerdeki tercihleri, ayarları ve diğer değer bilgilerini tutar. Çalıştırıldığında ls -la ~/bu klasörler ve dosyalar görünür.

Herhangi bir kullanıcı sürüm kontrol yazılımı kullanan veya buna sahip bir yazılım kullanıyorsa, nokta dosyalarını yedeklediğinizden emin olun. Subversion ve git gibi yazılımlar kritik bilgileri nokta klasörlerinde saklar. Bu gizli klasörler, bir projenin teslim alındığı dosya sisteminize dağıtılabilir.

Gündem ve Disk Erişimi

Gündem OS X'in arama hizmetidir. Gündem mdworker, arama kataloğunu dizine eklemek ve güncellemek için bu işlemi kullanır . Olası disk bozulması veya yavaş kopyalar konusunda endişeleriniz varsa, çalışırken devre dışı bırakmakmdworkerrsync yardımcı olabilir. Şahsen, büyük rsynctransferler yaparken Spotlight'ı çalışır durumda bırakıyorum .


3
En güvenli seçenek, görünmez meta veri dosyaları da dahil olmak üzere her şeyi kopyalamaktır. Ancak Carbon Copy Cloner ile aynı bağlantı, otomatik olarak oluşturulmuş bazı dosyalar olduğunu ve böylece kopyaladığınızda bile onları bozabileceğini söylüyor rsync.
Manuel

1
Gelecekteki okuyucular için tam bir örnek ekleyebilirsiniz. İki kaynak buldum, bir ve iki (artı bağladığınız üçüncü kaynak ); Gelecekte referans olması için burada bırakıyorum.
Manuel

1
"Noktalarla başlayan dosyaları yedeklemek için iyi nedenler var": evet! Bu dosyalar (aptallar için Finder'dan) gizlidir, ancak çoğu zaman bunlar çok önemli dosyalardır.
dan

1
EVe --delete-afterbu cevabın kazanan biri yapmak önemli noktalar vardır.
dan

1
@danielAzuelos -EYeni sürümlerde -Xbazı yerlerde önerdiğimi gördüm, hangisi doğru? Yoksa ikisi de mi? Genel endişelerin çoğunu kapsayan güncel, sözde bir tam istiyorum. Spotlight dosyalarını kopyalamak, oluşturulmalarına izin vermekten daha kolay ve daha hızlı olur mu? Spotlight'ı nasıl durdurabilirim? caffeinateSüreç ne olacak ? Ya da sadece bir yedekleme listesi, Spotlight tarafından endekslenemez hale getirebilirse, çok daha az endişe, vb. Olabilir. Bu soruların çoğu kesin olarak cevaplanmıştır.
Manuel

5

rsyncCarbon Copy Cloner'a göre 3.0.6 sürümünü veya Homebrew'a göre 3.1.2 sürümünü kullanıyorsanız , Carbon Copy Cloner argümanlarından bir ipucu alabilirsiniz:

rsync -A -X -H -p --fileflags --force-change -l -N -rtx --protect-decmpfs --numeric-ids -go --delete-during --backup --backup-dir=</PATH/TO/STICK/BACKUP_when_using_delete> --protect-args <SRC>/ <DEST>



4

Ben budama karşı tavsiye ediyorum meta verileri , bir yedekleme sırasında özellikle nokta dosyaları mesela ._$filenamegerçekten dışlamak istediğiniz Ancak eğer, nokta-dosyaları sizin itibaren rsynckomut eklenti --exclude '.*'buna.

rsync -av --exclude '.*' --progress --delete /Volumes/A/ /Volumes/B

Bu iyi. Tüm nokta dosyalarını kaldırmanın sorunlu olup olmadığından emin değildim (bu arada, '.*'ve arasında herhangi bir fark var '/.*'mı?). Finder'ın hepsini kopyaladığını sanmıyorum, sadece bir kısmı olabilir. Bu durumda, yalnızca gereksiz olanları (örneğin, .DS_Store) hariç tutmayı tercih ederim . Ve evet, önemli olabilecekler, ancak günlüğümde olmasını istemediğim için düzenli ifadelerle filtreleyebilirim.
Manuel

1
Finder'ın kopyaladığı şey belgelenmemiştir ve bu, bir yedekleme politikası oluştururken herkesin probleminin kaynağıdır. Tam olarak disk yerine kullanılabilecek bir yedekleme istiyorsanız , tüm dosyaların bir kopyasını saklamanız gerekir A.
dan

@danielAzuelos Bu durumda, ana sabit sürücü A'nın ölmesi durumunda, üçüncü bir sabit sürücü C satın alacağım, sabit sürücü B'den sabit sürücü C'ye kopyalayacağım ve muhtemelen B veya C'den birini kullanmaya başlayacağım. bu, SuperDuper'in yaptığı gibi kullanılması gereken bir yedekleme türü değildir. Sadece fotoğraflarım bir değil iki yerde daha iyi.
Manuel

4

Şu anki cevaplardan tamamen memnun değilim, ama burada web'de güzel bir kurulum bulmaya çalışırken gördüğüm olasılıkların bir kısmını ele almaya çalışacağım rsync.

Ve bu arada, biri kopya gibi Time Machine ile ilgileniyorsa, var rsnapshot. İki yönlü senkronizasyon için de Unison var . Ayrıca, aslında Backup Utility ve arRsync gibi birkaç GUI vardır ; tam olarak aradığım şey değil ama birileri için işi yapabilirler.

İlk olarak, tek amacım fotoğrafları ve videoları çoğaltmaktı, bu yüzden tam kopyaya gerek yoktu, bu yüzden çok fazla önemsemeye gerek yok . Aslında şüphelerimin çoğu, her şeyi hariç tutabiliyor olsaydım (internetten bir fotoğraf indirirsem, sadece bir .png indiririm, diğer her şey indirilmez, ancak otomatik olarak oluşturulur ).

İşte dikkate almak isteyebileceğiniz yapılandırılmamış düşünce listesi

  • Dizüstü bilgisayarınızın uyku moduna geçmediğinden emin olmak istiyorum caffeinate, işlemi yapmak isteyebilirsiniz caffeinate -s rsync -av .... Buradan alındı .

  • Eğer benim durumumda gibi yerel kopyalarını yapıyorsanız, ya da internet bağlantısı çok yavaş olmasa bile, sen gerekir değil kullanmak -zseçeneği (sıkıştırma) ve kullanımını -W(yerine delta transferleri daha transferi tüm dosyayı; bu varsayılan olduğunda yerel) ve muhtemelen --inplacetransferleri hızlı yapmak için kullanın . Buradan alındı .

  • Sen kullanabilirsiniz --delete-afterherhangi bir dosya ilk transfer ve ardından hedef taşındı (ve orijinal bir silinmiş) ve transfer öncesi veya nakil sırasında silme daha güvenlidir edilecektir böylece.

  • Aktarımı tuşuna basarak ctrl + Cdurdurabilirsiniz ve temiz bir şekilde duracaktır. Buradan alındı . Bu SuperDuper! İle olan korkularımdan biriydi, eğer bir aktarımı durdurmanız gerekiyorsa “Sabit sürücüyü bilinmeyen bir durumda bırakacaksınız…” mesajını alıyorsunuz.

  • Son sürümlerde --info=progress2, daha da fazla ayrıntı ekleyen var -v.

  • Orada -P(eşittir hangi --partialve --progress(nedense bir kerede senkronizasyonu bitemez varsa) işlemi yeniden başlattığınızda sürdürebilirsiniz yüzden orada orta transfer dosyaları bırakacağını).

  • Kopyalamadan önce Spotlight veya TimeMachine'ı durdurmak ve aktarımdan sonra yeniden etkinleştirmek ilginizi çekebilir. Harici disk için Spotlight'ı bile devre dışı bırakın.

  • Tüm bu referansların kullanılan diğer seçenekler şunlardır -x(veya --one-file-system), -E( --executability), -H( --hard-links), -X( --xattrs), -A( --acls), ve --sparse, --hfs-compression, --protect-decmpfs. Onlara bakmak isteyebilirsiniz.

Benim için temel bir komut benziyor (daha fazla seçenek kullanabilirim, ancak bu bir örnek için yeterlidir):

caffeinate -s rsync -av --delete-after --progress --stats --exclude-from 'excludefile.txt' \
  "/Volumes/SrcHDD/" "/Volumes/DstHDD" # note the trailing slash / after the source

Şimdi benim durumumda sadece dahil edebilirim {*.jpg,*.png,*.mp4,*.txt,*.pdf,…}ve hiç kimse “sistem dosyalarına da ihtiyacınız var” demez ama dosyalarım olan tüm olası dosya türünü almak için arama yapmak istemediğim için hariç tutmayı tercih ederim. Ve olabilir ama sadece şeyler vardır elverişli görünüyor dışlamak için.

Birkaç bağlantı buldum, istediğini al:

  1. https://bombich.com/kb/ccc4/some-files-and-folders-are-automatically-excluded-from-backup-task

  2. https://gist.github.com/tvwerkhoven/4541989

  3. https://github.com/necolas/dotfiles

  4. https://gist.github.com/shkm/5531679

  5. http://www.hackurmac.com/2014/08/backing-up-and-restoring-your-hackintosh.html

  6. https://github.com/jedda/Counterpart

  7. http://alanwsmith.com/rsync-exclude-list-for-mac-osx

Ve oradan muhtemelen görmezden gelmenin güvenliğini ya da aklını başına getirebilirsin. İşte tam liste (Sadece kopyaları kaldırdım)

.HFS+ Private Directory Data*
/.journal
/.journal_info_block
.AppleDouble
.AppleDB
/lost+found

.metadata_never_index
.metadata_never_index_unless_rootfs
/.com.apple.timemachine.donotpresent
.VolumeIcon.icns
/System/Library/CoreServices/.disk_label*
/TheVolumeSettingsFolder

.DocumentRevisions-V100*
.Spotlight-V100
/.fseventsd
/.hotfiles.btree
/private/var/db/systemstats

/private/var/db/dyld/dyld_*
/System/Library/Caches/com.apple.bootstamps/*
/System/Library/Caches/com.apple.corestorage/*
/System/Library/Caches/com.apple.kext.caches/*

/.com.apple.NetBootX

/Volumes/*
/dev/*
/automount/*
/Network/*
/.vol/*
/net

/private/var/folders/zz/*
/private/var/vm/*
/private/tmp/*
/cores/*

.Trash
.Trashes

/Backups.backupdb
/.MobileBackups
/.MobileBackups.trash
/.MobileBackups.trash

Library/Mobile Documents.*
.webtmp

/Library/Caches/CrashPlan
/PGPWDE01
/PGPWDE02
/.bzvol
/Library/Application Support/Comodo/AntiVirus/Quarantine
/private/var/spool/qmaster
$Recycle.Bin
Saved Application State
Library/Preferences/ByHost/com.apple.loginwindow*

.AppleDesktop
.com.apple.timemachine.supported
Network Trash Folder
/Library/Caches/*
/private/var/spool/postfix/*
$RECYCLE.BIN
/stuff/*
/afs/*
/private/var/run/*
/Previous Systems.localized
/tmp/*
.dbfseventsd
.DS_Store
.PKInstallSandboxManager
.SymAV*
.symSchedScanLockxz
.TemporaryItems
Desktop DB
Desktop DF
hiberfil.sys
pagefile.sys
Recycled
RECYCLER
System Volume Information
Temporary Items
Thumbs.db
AUTORUN.INF
Autorun.inf
autorun.inf

3

Çeşitli işlerde yedeklemeler için rsync kullandım ve evde kullanıyorum.

Kesinlikle tavsiye ederim, ancak bazı değişiklikler ile. Bir yedekleme aracı olarak harika, ama bir arşivleme aracı olarak biraz düz düşüyor. Evet, her şeyi kopyalar, ancak her şeyin sürümlerini almazsınız, her zaman yalnızca en son sürümleri alırsınız.

Bu kılavuzu http://www.mikerubel.org/computers/rsync_snapshots/ bir atlama noktası olarak kullandım. Tüm sayfayı okuyun. Seçenekleri açıklamak için harika bir iş çıkarır ve artımlı yedeklemeleri nasıl uygulayabileceğinizi açıklar. Ve şaşırtıcı bir şekilde, makale 10 yaşın üzerindedir, ancak bugün hala uygulanabilir. Unix'i sevmeliyim.


1
Teşekkürler. Her halükarda, birinin Mac OS X altında ele almak isteyebileceği özel hususları ele almak istedim rsync. Gerçekten sadece bir rehber istemedim . Her durumda, iyi bir bağlantı, bu bir sürü kapsar rsyncama tam olarak bunu yapmak için bir araç bugün itibariyle vardır: rsnapshot.
Manuel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.