Menggunakan rsync untuk cadangan

13

Saat ini saya mencadangkan konten hard drive eksternal A dengan (1) menghapus semua yang ada di hard drive eksternal B dan (2) menyalin segala sesuatu dari A ke B (di Finder). Hard drive eksternal hanya berisi "data dasar" (folder, gambar, video, dokumen, dll.), Tidak ada yang mewah / aneh.

Tetapi dengan semua alat gratis luar biasa yang ada di luar sana saya tidak dapat menemukan yang layak untuk dicadangkan (saran diterima).

Saya ingin mengotomatiskan ini. Setelah beberapa pencarian, sepertinya saya bisa menggunakannya rsync. Saya kemudian ingin mengotomatiskan ini dengan menggunakan rsyncuntuk menghindari menyalin file yang sudah ada di hard drive tujuan (tentu saja, jika perubahan telah dibuat, saya ingin memperbarui file / folder; sama dengan file yang dihapus / folder atau file baru / folder; idenya adalah untuk meniru apa yang biasanya saya lakukan secara manual dengan Finder).

Saya sampai pada titik ini

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

Sekarang log penuh file yang namanya dimulai dengan .atau ._atau bahkan ._.. Apakah itu perlu?

Pertanyaan

Bagaimana saya bisa menyalin hanya file yang penting, meninggalkan semua yang tidak penting. Misalnya, jika saya memiliki photo.pngsaya berharap untuk menyalin photo.png, tidak ._photo.pngatau banyak file.

Apa --excludeatau --exclude-fromdapat digunakan dengan aman di Mac? Mungkin aturan yang baik adalah "salin apa saja yang ditunjukkan oleh Finder" yang akan saya salin jika saya melewati secara manual semua folder.

 Pertanyaan ekstra

Apakah -av --progress --deletecukup? Apakah saya melakukan kejahatan atau mempertaruhkan sejumlah data? Opsi apa yang akan Anda gunakan.

Tolong, balas jawaban Anda dengan beberapa argumen, saya sangat menghargainya.

Saya mencari cara untuk mengotomatisasi rsyncyang tampaknya cukup kuat dan gratis untuk digunakan.

Manuel
sumber
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
bmike
Pada strategi yang dijelaskan pada paragraf 1, apa yang terjadi jika setelah (1) - menghapus semuanya dalam B - masalah serius terjadi pada A? Anda bisa kehilangan akses ke data pada A dan pada cadangan sebelumnya. Jika penyimpanan cadangan Anda memiliki cukup ruang, bagaimana dengan menghapus cadangan hanya setelah cadangan yang lebih baru berhasil diselesaikan?
Ricardo
1
Tautan @ bmike ke percakapan yang dipindahkan ke obrolan rusak.
Merchako

Jawaban:

17

Untuk Keamanan Maksimal, Salin Segalanya

The paling aman pilihan adalah untuk menyalin semua , termasuk file meta-data yang tak terlihat.

File cenderung ada karena suatu alasan dan ketika perangkat lunak berubah, demikian juga keberadaan, tujuan, dan isi dari file meta-data ini. Menyalin semuanya akan mengurangi beban perawatan dan menawarkan kemudahan pikiran bahwa tidak ada yang hilang.

File log yang dibuat oleh rsyncakan secara teknis terlibat oleh sifat rsyncmenjadi alat baris perintah. Pertimbangkan untuk menyajikan keluaran meta-data yang sudah dirapikan, difilter, dan bahkan mungkin diberi kode warna untuk diperiksa oleh pengguna. Anda bisa melakukan ini dengan berbagai alat dan bahasa scripting. Silakan ajukan lebih banyak pertanyaan di sini di Ask Different dan StackOverflow jika Anda memerlukan bantuan dengan pendekatan ini.

Hapus Terakhir & Salin Sumber Daya OS X

Mengenai rsyncbendera, lihat pertanyaan Cara tercepat dan teraman untuk menyalin data besar-besaran dari satu drive eksternal ke drive lain . Dalam pertanyaan ini, beberapa bendera tambahan digunakan dan dijelaskan:

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

Dalam situasi ini, Eakan memastikan garpu sumber daya dan properti spesifik Mac lainnya disalin.

Anda mungkin ingin mempertimbangkan --delete-afteruntuk tidak menghapus sampai salinannya selesai; harap dicatat bahwa pendekatan ini berpotensi memerlukan drive tujuan dua kali ukuran sumber.

Kemungkinan Pengecualian

Sebuah jawaban untuk pertanyaan terkait, Bagaimana saya bisa menghilangkan File Render FCPX dari cadangan Time Machine? , asalkan tautan berguna file dan folder OS X yang dapat dikecualikan dari sebagian besar cadangan . Tautan ini menyediakan daftar praktis pola file, folder, dan jalur yang dapat Anda kecualikan.

Sertakan File dot

Ada alasan bagus untuk membuat cadangan file yang dimulai dengan titik, .*mencocokkan file.

Beberapa perangkat lunak menyimpan preferensi, pengaturan, dan informasi lain yang bernilai di folder di bagian atas folder pengguna di folder awalan titik tak terlihat. Menjalankan ls -la ~/akan mengungkapkan folder dan file ini.

Jika ada pengguna yang menggunakan atau memiliki perangkat lunak yang pada gilirannya menggunakan perangkat lunak kontrol versi, pastikan untuk membuat cadangan file dot. Perangkat lunak seperti subversi dan git keduanya menyimpan informasi penting dalam folder dot mereka. Folder tersembunyi ini dapat tersebar di seluruh sistem file Anda, di mana pun proyek diperiksa.

Spotlight dan Akses Disk

Spotlight adalah layanan pencarian OS X. Spotlight menggunakan mdworkerproses untuk mengindeks dan memperbarui katalog pencarian. Jika Anda khawatir tentang kemungkinan kerusakan disk atau salinan lambat, menonaktifkanmdworker saat menjalankan rsyncdapat membantu. Secara pribadi, saya membiarkan Spotlight bekerja sambil menjalankan rsynctransfer besar .

Graham Miln
sumber
3
Opsi teraman adalah menyalin semuanya, termasuk file meta-data yang tidak terlihat. Tetapi tautan yang sama dari Carbon Copy Cloner mengatakan bahwa ada file tertentu yang dibuat secara otomatis sehingga bahkan dapat merusaknya jika Anda salin rsync.
Manuel
1
Anda dapat menambahkan contoh lengkap untuk pembaca masa depan. Saya menemukan dua sumber, satu dan dua (ditambah yang ketiga yang Anda tautkan); Saya meninggalkan mereka di sini untuk referensi di masa mendatang.
Manuel
1
"Ada alasan bagus untuk mencadangkan file yang dimulai dengan titik": ya! File-file ini disembunyikan (dari Finder for the dummies) tetapi sebagian besar waktu ini adalah file yang sangat penting.
dan
1
The Edan --delete-afteradalah poin kunci yang membuat jawaban ini satu pemenang.
dan
1
@danielAzuelos Pada -E, dalam versi yang lebih baru ada -Xyang saya lihat direkomendasikan di beberapa tempat, mana yang benar? Atau keduanya? Saya ingin yang terbaru, pseudo-complete yang mencakup sebagian besar kekhawatiran umum. Apakah menyalin file Spotlight lebih mudah dan lebih cepat daripada membiarkannya dihasilkan? Bagaimana saya bisa menghentikan Spotlight agar tidak berantakan? Bagaimana caffeinatedengan prosesnya? Atau mungkin jika itu hanya daftar cadangan membuatnya tidak dapat diindeks oleh Spotlight, apalagi kekhawatiran, dll. Banyak dari pertanyaan ini telah dijawab dengan pasti.
Manuel
5

Jika Anda menggunakan rsyncversi 3.0.6 sesuai Carbon Copy Cloner atau 3.1.2 sesuai Homebrew, Anda bisa mengambil petunjuk dari argumen Carbon Copy Cloner:

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>

kamu akan menyatu
sumber
--protect-decmpfstidak tersedia pada 3.1.3 lagi, lihat github.com/Homebrew/homebrew-core/pull/23415 .
user74686
4

Saya menyarankan agar tidak memangkas meta-data selama pencadangan, khususnya file-file dot misalnya ._$filename, namun jika Anda benar-benar ingin mengecualikan file-file dot dari rsyncperintah Anda, tambahkan --exclude '.*'ke dalamnya.

rsync -av --exclude '.*' --progress --delete /Volumes/A/ /Volumes/B
pengguna3439894
sumber
Ini bagus. Saya tidak yakin apakah menghapus semua file dot akan bermasalah (omong-omong, apakah ada perbedaan antara '.*'dan '/.*'?). Saya tidak berpikir Finder menyalin semuanya, mungkin hanya beberapa yang terkait. Dalam hal ini saya lebih suka untuk mengecualikan hanya mereka yang tidak perlu (misalnya, .DS_Store). Dan ya, yang mungkin penting, tetapi yang tidak ingin saya miliki di log saya dapat memfilter dengan ekspresi reguler.
Manuel
1
Apa salinan Finder tidak berdokumen, dan ini adalah sumber masalah semua orang ketika membangun kebijakan cadangan. Anda harus menyimpan salinan semua file jika Anda ingin cadangan yang dapat digunakan tepat di tempat Adisk.
dan
@danielAzuelos Yang tidak demikian, dalam kasus hard drive utama A mati, maka saya akan membeli hard drive ketiga C, salin dari hard drive B ke hard drive C dan mungkin mulai menggunakan salah satu B atau C. Saya katakan lagi, bahwa ini bukan jenis cadangan yang harus digunakan seperti apa yang SuperDuper lakukan. Hanya saja foto saya lebih baik di dua tempat daripada hanya satu.
Manuel
4

Saya tidak sepenuhnya senang dengan jawaban saat ini, tetapi saya akan mencoba untuk menutupi di sini sedikit kemungkinan yang saya lihat di web mencoba menemukan pengaturan yang bagus untuk rsync.

Dan, omong-omong, jika ada yang tertarik dengan Time Machine seperti salinan, ada rsnapshot. Dan ada juga Unison untuk sinkronisasi dua arah. Plus, sebenarnya ada beberapa GUI, seperti Backup Utility dan arRsync ; tidak persis apa yang saya cari tetapi mereka mungkin melakukan pekerjaan untuk seseorang.

Pertama, satu-satunya niat saya adalah untuk menggandakan foto dan video, jadi salinan yang tepat tidak diperlukan, karenanya tidak perlu terlalu peduli . Sebenarnya sebagian besar keraguan saya adalah apakah saya dapat mengecualikan semuanya (sama dengan yang akan terjadi jika, katakanlah, saya mengunduh foto dari internet, saya hanya mengunduh .png, yang lainnya tidak diunduh tetapi di-autogenerasi ).

Berikut adalah daftar pemikiran yang tidak terstruktur yang mungkin ingin Anda pertimbangkan

  • Jika Anda ingin memastikan laptop Anda tidak tidur, Anda mungkin ingin caffeinateprosesnya caffeinate -s rsync -av .... Diambil dari sini .

  • Jika Anda melakukan salinan lokal, seperti dalam kasus saya, atau bahkan jika koneksi internet tidak terlalu lambat, Anda tidak boleh menggunakan -zopsi (kompresi), dan menggunakan -W(transfer seluruh file, daripada transfer delta; ini adalah default saat lokal) dan mungkin digunakan --inplaceuntuk melakukan transfer dengan cepat. Diambil dari sini .

  • Anda dapat menggunakan --delete-aftersehingga file apa pun akan ditransfer terlebih dahulu, dan kemudian dipindahkan di tempat tujuan (dan dihapus yang asli) dan lebih aman daripada menghapus sebelum transfer atau selama transfer.

  • Anda dapat menghentikan transfer dengan menekan ctrl + C, dan itu akan berhenti dengan bersih. Diambil dari sini . Ini adalah salah satu ketakutan saya dengan SuperDuper !, jika Anda perlu menghentikan transfer, Anda mendapatkan pesan "Anda akan meninggalkan hard drive dalam keadaan yang tidak dikenal ...".

  • Di versi terbaru ada --info=progress2yang menambahkan lebih detail -v.

  • Ada -P(yang sama dengan --partialdan --progress) yang akan meninggalkan file yang ditransfer di sana sehingga Anda dapat melanjutkan ketika Anda me-restart proses (jika karena alasan tertentu Anda tidak dapat mengakhiri sinkronisasi sekaligus).

  • Orang mungkin tertarik menghentikan Spotlight atau TimeMachine sebelum melakukan penyalinan, dan mengaktifkannya kembali setelah transfer. Dan bahkan menonaktifkan Spotlight untuk disk eksternal.

  • Pilihan lain yang digunakan dalam semua referensi yang meliputi -x(atau --one-file-system), -E( --executability), -H( --hard-links), -X( --xattrs), -A( --acls), dan --sparse, --hfs-compression, --protect-decmpfs. Anda mungkin ingin melihatnya.

Bagi saya, sebuah perintah dasar terlihat (saya mungkin menggunakan lebih banyak opsi, tetapi ini cukup sebagai contoh):

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

Sekarang dalam kasus saya, saya hanya bisa memasukkan {*.jpg,*.png,*.mp4,*.txt,*.pdf,…}dan tidak ada yang akan mengatakan "Anda juga perlu file sistem" tetapi karena saya tidak ingin mencari untuk mendapatkan semua jenis file yang saya miliki, saya lebih suka mengecualikan. Dan ada hal-hal yang tidak hanya bisa tetapi tampaknya nyaman untuk dikecualikan.

Saya menemukan beberapa tautan, ambil yang Anda inginkan:

  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

Dan dari sana Anda mungkin bisa mendapatkan apa yang aman atau waras untuk diabaikan. Ini daftar lengkapnya (saya baru saja menghapus duplikatnya)

.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
Manuel
sumber
3

Saya telah menggunakan rsync untuk backup di beberapa pekerjaan, dan saya menggunakannya di rumah.

Saya sangat merekomendasikannya, tetapi dengan beberapa modifikasi. Sebagai alat cadangan, itu bagus, tetapi sebagai alat pengarsipan itu jatuh agak datar. Ya, ini menyalin segalanya, tetapi Anda tidak mendapatkan versi dari semuanya, Anda selalu mendapatkan versi terbaru saja.

Saya menggunakan panduan ini http://www.mikerubel.org/computers/rsync_snapshots/ sebagai titik awal. Baca seluruh halaman. Itu pekerjaan yang baik menjelaskan opsi, dan menguraikan bagaimana Anda dapat menerapkan cadangan tambahan. Dan yang menakjubkan, artikel ini sudah berusia lebih dari 10 tahun tetapi masih berlaku sampai sekarang. Harus cinta unix.

sevis127
sumber
1
Terima kasih. Bagaimanapun saya ingin membahas pertimbangan khusus yang mungkin ingin diambil di bawah Mac OS X. Saya tidak benar-benar menginginkan hanya panduan rsync. Dalam kasus apapun, link bagus, mencakup banyak rsynctetapi ada pada hari ini alat untuk melakukan hal itu: rsnapshot.
Manuel