Menggunakan Rsync untuk mencadangkan ke drive eksternal

17

Saya membeli hard drive eksternal untuk membuat cadangan komputer di rumah saya (akhirnya !!). Saya berharap menggunakan rsync. Saya telah melihat contoh yang melakukan (atau tampaknya melakukan) persis apa yang saya inginkan. Sesuatu seperti ini:

rsync -aE --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Namun, ketika melihat dokumentasi dan contoh rsync dan sebagainya, segalanya mulai terlihat JAUH lebih rumit dari itu. Jaringan dan daemon dan jargon, oh my!

Saya berasumsi bahwa tidak ada hal-hal yang diperlukan selama saya hanya melakukan sinkronisasi dari komputer ke drive eksternal yang terhubung dengan firewire. Saya salah dalam menganggap itu? Apakah hal-hal yang benar-benar akan menjadi lebih rumit daripada perintah tidak berbahaya itu?

stalepretzel
sumber

Jawaban:

10

Rsync berfungsi dengan baik di seluruh drive lokal. Namun, jika mendeteksi jalur lokal secara otomatis masuk ke mode --whole-file yang tidak menyalin diffs, tetapi hanya menyalin file sumber di atas file tujuan. Rsync masih akan mengabaikan file yang tidak berubah sama sekali. Ketika bandwidth antara sumber dan tujuan tinggi (seperti dua disk lokal) ini jauh lebih cepat daripada membaca kedua file, kemudian menyalin hanya bit yang diubah.

kbyrd
sumber
2
s / Namun / Untungnya / ketika file bersifat lokal, membaca keduanya dan melakukan semua sihir diff untuk menulis yang baru dengan bagian keduanya (membacanya lagi) jauh lebih banyak pekerjaan daripada sekadar sumber bacaan, tujuan menulis.
Javier
tidak tahu apakah saya harus masuk ke dalam jawaban saya. Saya akan menambahkannya sekarang.
kbyrd
31

Saya menggunakan rsync dengan flag-flag berikut mudah diingat sebagai 'glop' dan 'trunc' dan 'v'.

rsync -gloptrunc $srcdir $dstdir

Panduan singkat:

  • g - menyimpan info kepemilikan grup
  • l - salin symlink sebagai symlink
  • o - menyimpan info pemilik
  • p - menjaga izin
  • t - menyimpan stempel waktu
  • r - rekur melalui direktori
  • u - perbarui, lewati semua file yang lebih baru
  • [n] - tidak, jangan lakukan ini, lakukan lari kering sebagai gantinya
  • c - checksum, coba checksum pada blok file jika memungkinkan (*)
    catatan: pada sistem file lokal, ini akan diganti dan seluruh file disalin sebagai gantinya.
  • v - verbose

Saya selalu menjalankan di atas untuk memastikan itu berfungsi, lalu menghapus bendera 'n' yang pernah saya senang dengan hasilnya.

Fitur utama dari kombinasi di atas:

  • Saya menjalankannya dalam KEDUA arah antara dua (atau lebih) server, sehingga menyinkronkan dalam KEDUA arah. Anda memperbarui mana pun yang Anda rasakan adalah master pada saat itu.
  • Memungkinkan untuk menjadi master, dengan peringatan penting bahwa jika Anda ingin menghapus sesuatu, Anda harus menghapusnya pada keduanya untuk memastikan itu benar-benar hilang, kalau tidak itu akan kembali.

Saya menggunakan ini untuk menjaga dua mesin tetap sinkron, atau untuk menjaga subdirs dalam sinkronisasi (seperti membuat cadangan ke drive USB).

Seperti yang dikatakan salah satu posting lain sebelumnya, 'checksum' sebenarnya dapat dimatikan jika Anda berurusan dengan drive lokal.

Dalam beberapa kasus yang jarang terjadi, saya harus menambahkan parameter tambahan ke akun untuk perubahan akun login di mesin jarak jauh, mengubah port, dan bahkan menentukan di mana 'rsync' tinggal di host jarak jauh ... tetapi itu tidak langsung berlaku untuk Anda pertanyaan.

ericslaw
sumber
3
Bukankah flag-a ke rsync melakukan semua hal di atas?
Rory
2
Saya bukan penggemar berat menggunakan bendera 'meta' ketika saya tidak tahu pasti apa yang mereka lakukan. Manapage untuk rsync menunjukkan bahwa '-a' sebenarnya -rlptgoD di kotak saya, yang melompati 'u' dan 'v' tetapi termasuk 'D'. dari mereka, tampaknya, bagi saya, penambahan 'u' adalah satu-satunya perbedaan utama.
ericslaw
Bagaimana cara memaksanya untuk mencerminkan dari sumber ke tujuan (menghapus apa pun di tujuan yang tidak ada di sumber), daripada menyalin dua arah?
Gabriel Staples
1
Sepertinya Anda harus menggunakannya rsync -gloptrunc --delete --delete-excluded $srcdir $dstdir. Kata --deletemengatakan untuk menghapus apa pun di tujuan yang tidak ada di sumber, dan --delete-excludedmengatakan juga menghapus file yang dikecualikan di tujuan yang biasanya tidak akan dilacak atau disalin. Jika Anda menggunakan --delete-excluded, secara teknis Anda tidak perlu juga menggunakan --delete, tetapi tidak apa-apa untuk menggunakan keduanya. Detail ada di halaman manual di sini: linux.die.net/man/1/rsync .
Gabriel Staples
Catatan: untuk penggunaan rsync umum sekarang saya telah menulis tutorial ini untuk diri saya sendiri, jadi saya dapat merujuknya sesuai kebutuhan: Cara menggunakan rsync
Gabriel Staples
4

Tidak ada yang diperlukan, Anda dapat menggunakan rsync tanpa daemon atau konfigurasi apa pun lainnya HANYA HALUS!

Cukup gunakan perintah rsync dan Anda siap melakukannya.

OldJim
sumber
2

Menilai oleh path di perintah rsync Anda, apakah saya benar dalam berpikir Anda menggunakan Mac OS X?

Secara pribadi, saya akan memilih untuk menggunakan Time Machine (jika Anda menggunakan Leopard), atau Carbon Copy Cloner ( http://www.bombich.com/software/ccc.html ) yang menggunakan rsync.

Jauh lebih mudah daripada mencoba memperbaiki skrip Anda sendiri. Salah satu keuntungannya adalah Time Machine dan CCC keduanya akan memberi Anda cadangan tambahan.

Steve Folly
sumber
2

Contoh yang Anda gunakan sepertinya berfungsi dengan baik untuk cadangan.

Satu hal yang mungkin ingin Anda pertimbangkan ketika menggunakan rsync adalah menggunakan opsi --link-dest. Ini memungkinkan Anda menyimpan beberapa cadangan, tetapi menggunakan tautan keras untuk file apa pun yang tidak berubah, sehingga secara efektif membuat semua cadangan mengambil ruang tambahan. Contoh penggunaannya adalah:

rsync -aE --link-dest=/mnt/external_disk/backup_20090612 dir_to_backup \
    /mnt/external_disk/backup_20090613

Ini mengasumsikan Anda memiliki cadangan tanggal untuk 12 Juni dan Anda ingin membuat yang baru pada 13 Juni. Anda mungkin ingin menghilangkan opsi -v jika Anda tidak ingin printout dari setiap file.

Menandai
sumber
1
rsnapshot adalah sistem cadangan yang menggunakan tautan-dest seperti yang Anda jelaskan untuk menjaga cadangan versi lengkap dengan cara yang efisien dalam ruang.
Rory
1

Itu benar-benar tergantung pada apakah Anda menjalankan database atau tidak. Rsync akan mengambil snapshot dari setiap file, dan mengabaikan tulisan yang campur tangan. Jika Anda ingin mencadangkan database, Anda harus melihat menyiapkan filter abaikan dan menjalankan alat dump DB sebelum rsync.

jldugger
sumber
1

Perintah Anda sebagai tertulis harus berfungsi, namun Anda mungkin ingin melihat program yang disebut rsnapshot yang dibangun di atas rsync dan menyimpan beberapa versi file sehingga Anda dapat kembali dan melihat berbagai hal seperti minggu lalu atau bulan lalu. Konfigurasi ini cukup mudah dan sangat bagus dalam optimasi ruang jadi kecuali Anda memiliki banyak churn, itu tidak memakan banyak ruang lebih dari satu cadangan.

Catherine MacInnes
sumber
1

Anda tidak menyebutkan sistem Operasi Anda. Pergi dengan asumsi bahwa OS berbasis * nix, perintah Anda baik.

Namun, jika salah satu atau kedua drive berformat NTFS, sedang diakses dari * nix atau bahkan dari dalam Windows menggunakan Mobaxterm / cygwin, maka fungsi rsync incremental tidak akan bekerja dengan baik dengan rsync -a (archive flag)

Jika drive NTFS terlibat, Anda dapat menggunakan:

rsync -rvh --size-only --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Unduh klien Mobaxterm ssh untuk memiliki fungsionalitas rsync pada Windows.

Berikut ini informasi lebih lanjut tentang penggunaan rsync dengan drive NTFS

Raman Kathpalia
sumber
0

Saya mencoba menggunakan rsync untuk cadangan tetapi akhirnya menjadi berantakan. rsync lebih cocok untuk 'menyinkronkan' daripada untuk membuat cadangan. Dan itu berlangsung selamanya untuk membandingkan file besar.

Saya meneliti sedikit dan mencoba beberapa yang (pada dasarnya menguji semua orang dari cadangan pencarian apt-cache di ubuntu).

Akhirnya saya berakhir dengan ' backup2l - low-maintenance backup / restore tool', mudah. Saya suka cara mengelola perencanaan dan rotasi (dalam level). Saya menjalankannya setiap kali saya memiliki drive eksternal USB saya terpasang dari baris perintah tetapi Anda juga dapat mengotomatiskannya.

chmeee
sumber
0

Coba dirvish untuk melakukan backup. http://www.dirvish.org/
Menggunakan hardlink dari rsync di dalam apa yang disebut vaults. Anda dapat menyimpan sebanyak mungkin kesedihan lama seperti pada disk USB. Atau atur secara otomatis.

Setelah Anda memahami ide dirvish itu lebih nyaman untuk digunakan daripada rsync dengan semua opsi itu sendiri.

Michèle
sumber
rsnapshot tidak mirip dengan dirvish
Rory
0

Saya menemukan solusi untuk komputer berbasis Windows: http://www.itefix.no/i2/node/10650

Untuk menyalin D: \ partisi ke drive eksternal K: \

rsync -aE --delete --progress /cygdrive/d/* /cygdrive/k


sumber