rsync ile yedeklemekKomut: rsync -aE --delete ~/Documents/ /Volumes/Backup/Documents/
-E macOS'a özgü yarıdır ve onu dışarıda bırakmak genişletilmiş öznitelikleri ve kaynak çatallarını sessizce kaybettirir.
-a arşiv modudur: alt dizinlere iner ve izinleri, sahipliği, zaman damgalarını ve sembolik bağlantıları korur. Herkesin bildiği seçenektir.-E macOS genişletilmiş özniteliklerini ve kaynak çatallarını korur. Finder etiketleri, karantina işaretleri, özel simgeler ve uygulama meta verilerinin önemli bir kısmı orada durur. Bu seçenek olmadan hepsi gider ve hiçbir şey size söylemez.--delete, kaynaktan kaybolan dosyaları hedeften kaldırır. Kopyayı bir aynalama yapan budur ve üzerinde en çok düşünülmesi gereken seçenektir.-v, deneme çalıştırması için -n. İçinde --delete olan bir komutu ilk seferde her zaman deneme olarak çalıştırın.~/Documents klasörü hedefin içine kopyalar ve size /Volumes/Backup/Documents/Documents verir. ~/Documents/ ise içeriğini kopyalar; neredeyse her zaman kastettiğiniz budur. Aynı zamanda --delete içeren bir komutta bunu yanlış yapmak, hedefte başka ne varsa siler.--exclude: --exclude '.DS_Store', --exclude 'node_modules', --exclude 'Library/Caches'.macOS, bu iş için yeterli bir rsync sürümüyle gelir. Daha yeni üst kaynak sürümünü istiyorsanız Homebrew'da var ve macOS'ta ACL işlemesi daha iyidir.
rsync hedefi kaynağa benzetir. Bu bir kopyadır ve bir kopya geçmiş değildir. Geçen salı sildiğiniz bir belge, bir sonraki çalıştırmada yedekten de gider. Sonradan üzerine yazdığınız bir dosyanın sağlam sürümü de, iş tetiklenmeden önce fidye yazılımının ulaştığı her şey de öyle.
--delete seçeneğini kaldırmak bunu düzeltmez. Size, sahip olduğunuz her dosyayı biriktiren, yine her birinin tam olarak bir sürümünü tutan ve neyin güncel olduğunu anlamanın hiçbir yolu olmayan bir hedef verir.
--link-dest ile sürümlerStandart yöntem, her çalıştırmada tarihli yeni bir dizin oluşturmak ve değişmeyen dosyaları öncekine sabit bağlantıyla bağlamaktır; böylece aynı dosyalar hiç yer kaplamaz:
DEST=/Volumes/Backup
TODAY=$(date +%F)
rsync -aE --delete \
--link-dest="$DEST/latest" \
~/Documents "$DEST/$TODAY"
ln -snf "$DEST/$TODAY" "$DEST/latest"
Artık her tarihli klasör tam bir yedek gibi görünür ve yalnızca değişen dosyalar yer kaplar. Time Machine'in üzerine kurulduğu fikir kabaca budur.
İki uyarı. Sabit bağlantılar, kopyaların bağımsız olmadığı anlamına gelir: alttaki bloktaki bir bozulma onu paylaşan her anlık görüntüyü etkiler. Ayrıca sabit bağlantı desteği olan bir dosya sistemi gerekir; bu yüzden harici bir sürücüde çalışır, çoğu bulut klasörünün içinde çalışmaz.
rsync dururken hiçbir şeyi şifrelemez. Hedef bir bulut klasörü veya binadan çıkan bir sürücüyse, yazmadan önce şifreleyin:
tar -cJf - ~/Documents | openssl enc -aes-256-cbc -pbkdf2 -out /Volumes/Backup/documents.tar.xz.enc
Bu, içi görünmeyen tek bir arşivdir: artımlı kopyalama yok, her şeyi açmadan tek bir dosyayı geri yüklemek yok ve sizinle her şey arasında tek bir parola var. Bu ödünleşim önemlidir ve çoğu kişinin işi elle yapmayı bıraktığı noktadır.
cron macOS'ta hâlâ var ama desteklenen yol launchd'dir. ~/Library/LaunchAgents/ içinde StartCalendarInterval içeren bir plist, betiğinizi her gün çalıştırır. macOS, onu çalıştıran şey için Tam Disk Erişimi ister, çünkü Belgeler ve Masaüstü'nü okumak korumalıdır.
Neyi programlarsanız programlayın, sonucunu gerçekten göreceğiniz bir yere yazdırın ve yedeğin yeni olduğunu kontrol edin:
find /Volumes/Backup -type f -newermt '-7 days' | head
Sessiz bir iş, asıl arıza biçimidir. Ekranınızda bir hatayla durmaz, dört ay önce bir gece durur.
Yukarıdaki komutlar kopyalamayı kapsar. Kapsamadıkları şey, bir şey ters gittiği gün gerçekten istediğiniz şeydir: bir aynalama çalıştırmasından sağ çıkan sürümler, yine de tek bir dosyayı geri yüklemenize izin veren şifreleme, her parçayı karmasına göre denetleyen bir geri okuma ve sürücü bir haftadır görülmediğinde size söyleyen bir şey.
Bunların her biri bir hafta sonu betik yazmak demektir ve sonra bakımı size kalır. Copy Shelter, bu parçalar yerleşik olarak aynı fikirdir ve tek bir konum için ücretsizdir.
rsync kopyam neden Finder etiketlerini kaybediyor?Çünkü macOS'ta -a tek başına genişletilmiş öznitelikleri taşımaz. -E ekleyin. ACL'lere de ihtiyacınız varsa -A kullanın ve bunları sistemdekinden daha güvenilir işleyen Homebrew sürümünü düşünün.
Evet, ya /Volumes altında bağlanmış bir paylaşıma ya da SSH üzerinden doğrudan NAS'a. SSH üzerinden daha hızlıdır ve bağlantı noktasının mevcut olmasına bağlı değildir; birçok NAS cihazında rsync yerleşiktir.
sudo gerekir mi?Kendi ev klasörünüz için hayır. Ancak macOS'un Belgeler, Masaüstü ve İndirilenler'i okumasına izin vermesi için Terminal'e veya launchd'nin çalıştırdığı şeye Tam Disk Erişimi vermeniz gerekir.
--delete tehlikeli mi?Tam olarak istediğinizi yapıyor; tehlikeli kısım da bu. İlk seferde -n ile deneme çalıştırması yapın ve hedef yolunun doğru olduğundan emin olun: yanlış dizine yönlendirilmiş --delete ile bir yazım hatası oradaki dosyaları kaldırır.
Evet, rsync tam da bunun içindir. Yeniden çalıştırın, yalnızca eksik veya değişeni aktarır. Yarım aktarılmış büyük bir dosyanın tutulup devam ettirilmesi için --partial ekleyin.
Sonraki: kopyanın gerçekten okunabildiği nasıl denetlenir.