Panduan Non-Pemula untuk Menyinkronkan Data dengan Rsync
Protokol rsync bisa sangat mudah digunakan untuk pekerjaan pencadangan / sinkronisasi biasa, tetapi beberapa fitur yang lebih canggih mungkin mengejutkan Anda. Pada artikel ini, kita akan menunjukkan bagaimana penimbun data dan penggemar cadangan terbesar sekalipun dapat menggunakan rsync sebagai solusi tunggal untuk semua kebutuhan redundansi data mereka.
Peringatan: Geeks Khusus Saja
Jika Anda duduk di sana berpikir "Apa-apaan itu rsync?" Atau "Saya hanya menggunakan rsync untuk tugas-tugas yang sangat sederhana," Anda mungkin ingin memeriksa artikel kami sebelumnya tentang cara menggunakan rsync untuk membuat cadangan data Anda di Linux, yang memberikan pengantar rsync, memandu Anda melalui instalasi, dan menampilkan fungsi yang lebih mendasar. Setelah Anda memahami cara menggunakan rsync (jujur, tidak rumit) dan nyaman dengan terminal Linux, Anda siap untuk pindah ke panduan lanjutan ini.
Menjalankan rsync di Windows
Pertama, mari kita dapatkan pembaca Windows kita di halaman yang sama dengan guru Linux kita. Meskipun rsync dibuat untuk berjalan pada sistem mirip Unix, tidak ada alasan Anda tidak dapat menggunakannya dengan mudah di Windows. Cygwin menghasilkan API Linux yang luar biasa yang dapat kita gunakan untuk menjalankan rsync, jadi kunjungi situs web mereka dan unduh versi 32-bit atau 64-bit, tergantung pada komputer Anda.
Instalasi mudah; Anda dapat menyimpan semua opsi pada nilai standarnya hingga Anda tiba di layar "Select Packages".
Sekarang Anda perlu melakukan langkah-langkah yang sama untuk Vim dan SSH, tetapi paket-paket tersebut akan terlihat sedikit berbeda ketika Anda memilihnya, jadi inilah beberapa tangkapan layar:
Menginstal Vim:
Menginstal SSH:
Setelah Anda memilih ketiga paket tersebut, terus klik berikutnya hingga Anda menyelesaikan instalasi. Kemudian Anda dapat membuka Cygwin dengan mengeklik ikon yang dipasang oleh penginstal di desktop Anda.
Perintah rsync: Sederhana ke Lanjutan
Sekarang pengguna Windows berada di halaman yang sama, mari kita lihat perintah rsync sederhana, dan tunjukkan bagaimana penggunaan beberapa switch canggih dapat dengan cepat membuatnya rumit.
Katakanlah Anda memiliki banyak file yang perlu dicadangkan - siapa yang tidak dewasa ini? Anda mencolokkan hard drive portabel Anda sehingga Anda dapat membuat cadangan file komputer Anda, dan mengeluarkan perintah berikut:
rsync -a / home / geek / file / / mnt / usb / files /
Atau, cara tampilannya di komputer Windows dengan Cygwin:
rsync -a / cygdrive / c / file / / cygdrive / e / files /
Cukup sederhana, dan pada saat itu benar-benar tidak perlu menggunakan rsync, karena Anda hanya bisa menarik dan melepaskan file. Namun, jika hard drive Anda yang lain sudah memiliki beberapa file dan hanya perlu versi terbaru ditambah file yang telah dibuat sejak sinkronisasi terakhir, perintah ini berguna karena hanya mengirim data baru ke hard drive. Dengan file besar, dan terutama mentransfer file melalui internet, itu masalah besar.
Membuat cadangan file Anda ke hard drive eksternal dan kemudian menyimpan hard drive di lokasi yang sama dengan komputer Anda adalah ide yang sangat buruk, jadi mari kita lihat apa yang diperlukan untuk mulai mengirim file Anda melalui internet ke komputer lain ( yang Anda sewa, anggota keluarga, dll).
rsync -av --delete -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files /
Perintah di atas akan mengirim file Anda ke komputer lain dengan alamat IP 10.1.1.1. Itu akan menghapus file asing dari tujuan yang tidak lagi ada di direktori sumber, menampilkan nama file yang ditransfer sehingga Anda memiliki gagasan tentang apa yang terjadi, dan terowongan rsync melalui SSH pada port 12345.
Itu -a -v -e --delete
sakelar adalah beberapa yang paling dasar dan umum digunakan; Anda harus sudah tahu banyak tentang mereka jika Anda membaca tutorial ini. Mari kita beralih ke beberapa switch lain yang terkadang diabaikan tetapi sangat berguna:
--kemajuan
- Switch ini memungkinkan kita untuk melihat progres transfer setiap file. Ini sangat berguna saat mentransfer file besar melalui internet, tetapi dapat menampilkan sejumlah informasi yang tidak masuk akal ketika hanya mentransfer file kecil di jaringan yang cepat.
Perintah rsync dengan --kemajuan
beralih saat cadangan sedang berlangsung:
--sebagian
- Ini adalah switch lain yang sangat berguna saat mentransfer file besar melalui internet. Jika rsync akan terputus karena alasan apa pun di tengah transfer file, file yang ditransfer sebagian disimpan di direktori tujuan dan transfer dilanjutkan di mana ia tinggalkan begitu perintah rsync dieksekusi lagi. Saat mentransfer file besar melalui internet (katakanlah, beberapa gigabytes), tidak ada yang lebih buruk daripada memiliki penghentian internet beberapa detik, layar biru, atau kesalahan manusia yang meningkatkan transfer file Anda dan harus memulai dari awal lagi.
-P
- saklar ini bergabung --kemajuan
dan --sebagian
, jadi gunakan saja dan itu akan membuat perintah rsync Anda sedikit lebih rapi.
-z
atau --kompres
- Switch ini akan membuat kompres rsync data file saat sedang ditransfer, mengurangi jumlah data yang harus dikirim ke tujuan. Ini sebenarnya saklar yang cukup umum tetapi jauh dari esensial, hanya benar-benar menguntungkan Anda pada transfer antara koneksi yang lambat, dan itu tidak melakukan apa pun untuk jenis file berikut: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.
-h
atau --dapat dibaca manusia
- Jika Anda menggunakan --kemajuan
beralih, Anda pasti ingin menggunakan yang ini juga. Yaitu, kecuali Anda ingin mengonversi byte ke megabita dengan cepat. Itu -h
switch mengubah semua angka yang dikeluarkan ke format yang dapat dibaca manusia, sehingga Anda dapat benar-benar memahami jumlah data yang ditransfer.
-n
atau --lari kering
- Peralihan ini penting untuk diketahui saat Anda pertama kali menulis skrip rsync Anda dan mengujinya. Itu menjalankan percobaan tetapi tidak benar-benar membuat perubahan - calon perubahan masih dikeluarkan seperti biasa, sehingga Anda dapat membaca semuanya dan memastikan itu terlihat baik-baik saja sebelum menggulung skrip Anda menjadi produksi.
-R
atau --relatif
- Switch ini harus digunakan jika direktori tujuan belum ada. Kami akan menggunakan opsi ini nanti dalam panduan ini sehingga kami dapat membuat direktori pada mesin target dengan cap waktu di nama folder.
--kecualikan-dari
- Sakelar ini digunakan untuk menautkan ke daftar pengecualian yang berisi jalur direktori yang tidak ingin Anda buat cadangannya. Itu hanya membutuhkan file teks biasa dengan direktori atau path file di setiap baris.
--termasuk-dari
- Mirip dengan --kecualikan-dari
, tetapi tautan ke file yang berisi direktori dan jalur file data yang ingin Anda buat cadangannya.
--statistik
- Sebenarnya bukan saklar yang penting dengan cara apa pun, tetapi jika Anda seorang sysadmin, mungkin berguna untuk mengetahui statistik terperinci dari setiap cadangan, hanya agar Anda dapat memantau jumlah lalu lintas yang dikirim melalui jaringan Anda dan semacamnya..
--file log
- Ini memungkinkan Anda mengirim output rsync ke file log. Kami merekomendasikan ini untuk backup otomatis di mana Anda tidak di sana untuk membaca sendiri hasilnya. Selalu berikan file log sekali lagi di waktu luang Anda untuk memastikan semuanya berfungsi dengan baik. Juga, ini merupakan saklar penting untuk digunakan sysadmin, jadi Anda tidak perlu bertanya-tanya bagaimana cadangan Anda gagal saat Anda meninggalkan intern yang bertanggung jawab.
Mari kita lihat perintah rsync kita sekarang karena kita memiliki beberapa switch lagi yang ditambahkan:
rsync -avzhP --delete --stats --log-file = / home / geek / rsynclogs / backup.log --exclude-from '/home/geek/exclude.txt' -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files /
Perintahnya masih cukup sederhana, tetapi kami masih belum membuat solusi cadangan yang layak. Meskipun file kami sekarang berada di dua lokasi fisik yang berbeda, cadangan ini tidak melindungi kami dari salah satu penyebab utama hilangnya data: kesalahan manusia.
Cadangan Snapshot
Jika Anda secara tidak sengaja menghapus file, virus merusak salah satu file Anda, atau sesuatu yang lain terjadi ketika file Anda tidak dapat diubah, dan kemudian Anda menjalankan skrip cadangan rsync Anda, data cadangan Anda ditimpa dengan perubahan yang tidak diinginkan. Ketika hal seperti itu terjadi (bukan jika, tetapi ketika), solusi cadangan Anda tidak melakukan apa pun untuk melindungi Anda dari kehilangan data Anda.
Pencipta rsync menyadari hal ini, dan menambahkan --cadangan
dan --dir-backup
argumen sehingga pengguna dapat menjalankan cadangan diferensial. Contoh pertama di situs web rsync menunjukkan sebuah skrip di mana pencadangan penuh dijalankan setiap tujuh hari, dan kemudian perubahan pada file-file tersebut dicadangkan di direktori terpisah setiap hari. Masalah dengan metode ini adalah untuk memulihkan file Anda, Anda harus memulihkannya secara efektif tujuh kali berbeda. Selain itu, sebagian besar Geeks menjalankan cadangan mereka beberapa kali sehari, sehingga Anda dapat dengan mudah memiliki 20+ direktori cadangan yang berbeda pada waktu tertentu. Tidak hanya memulihkan file Anda sekarang menjadi masalah, tetapi bahkan hanya dengan melihat melalui data yang dicadangkan dapat sangat memakan waktu - Anda harus tahu kapan terakhir kali file diubah untuk menemukan salinan cadangan yang terakhir. Di atas semua itu, tidak efisien untuk hanya menjalankan pencadangan inkremental setiap minggu (atau bahkan lebih jarang).
Cadangan snapshot untuk menyelamatkan! Backup snapshot tidak lebih dari backup inkremental, tetapi mereka menggunakan hardlink untuk mempertahankan struktur file sumber aslinya. Mungkin awalnya sulit untuk membungkus kepala Anda, jadi mari kita lihat sebuah contoh.
Berpura-puralah kami menjalankan skrip cadangan yang secara otomatis mencadangkan data kami setiap dua jam. Setiap kali rsync melakukan ini, ia memberi nama setiap cadangan dalam format: Backup-bulan-hari-tahun-waktu.
Jadi, pada akhirnya hari-hari biasa, kami akan memiliki daftar folder di direktori tujuan kami seperti ini:
Ketika melintasi salah satu direktori itu, Anda akan melihat setiap file dari direktori sumber persis seperti waktu itu. Namun, tidak akan ada duplikat di dua direktori. rsync menyelesaikan ini dengan menggunakan hardlinking melalui --link-dest = DIR
argumen.
Tentu saja, untuk mendapatkan nama direktori yang tertata dengan baik dan rapi ini, kita harus sedikit memperkuat skrip rsync kita. Mari kita lihat apa yang diperlukan untuk mencapai solusi cadangan seperti ini, dan kemudian kita akan menjelaskan skripnya secara lebih rinci:
#! / bin / bash
#copy old time.txt ke time2.txt
ya | cp ~ / backup / time.txt ~ / backup / time2.txt
#overwrite file time.txt lama dengan waktu baru
echo 'date + ”% F-% I% p”'> ~ / backup / time.txt
#membuat file log
echo ""> ~ / backup / rsync-'date + "% F-% I% p" '. log
Perintah #rsync
rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --hapus --stats --log-file = ~ / backup / rsync-'date + ”% F-% I% p "'. log --exclude-from' ~ / exclude.txt '--link-dest = / home / geek2 / files /' cat ~ / backup / time2.txt '-e' ssh -p 12345 '/ home / geek / files / [email protected]: / home / geek2 / files / 'date + ”% F-% I% p”' /
# jangan lupa untuk scp file log dan memasukkannya dengan cadangan
scp-P 12345 ~ / backup / rsync-'cat ~ / backup / time.txt'.log [email protected]: / home / geek2 / files / 'cat ~ / backup / time.txt' / rsync-'cat ~ / backup / time.txt'.log
Itu akan menjadi skrip rsync snapshot yang khas. Jika kami kehilangan Anda di suatu tempat, mari membedahnya sepotong demi sepotong:
Baris pertama dari skrip kami menyalin konten time.txt ke time2.txt. Pipa yes adalah untuk mengonfirmasi bahwa kami ingin menimpa file. Selanjutnya, kami mengambil waktu saat ini dan memasukkannya ke time.txt. File-file ini akan berguna nanti.
Baris berikutnya membuat file log rsync, menamainya rsync-date.log (di mana tanggal adalah tanggal dan waktu aktual).
Sekarang, perintah rsync kompleks yang telah kami beri peringatan tentang:
-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest
- Hanya saklar yang kita bicarakan sebelumnya; gulir ke atas jika Anda memerlukan penyegaran.
--chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r
- Ini adalah izin untuk direktori tujuan. Karena kami membuat direktori ini di tengah-tengah skrip rsync kami, kami perlu menentukan izin sehingga pengguna kami dapat menulis file ke sana.
Penggunaan perintah tanggal dan kucing
Kita akan membahas setiap penggunaan perintah date dan cat di dalam perintah rsync, sesuai urutannya. Catatan: kami menyadari bahwa ada cara lain untuk mencapai fungsionalitas ini, terutama dengan penggunaan variabel deklarasi, tetapi untuk tujuan panduan ini, kami telah memutuskan untuk menggunakan metode ini.
File log ditentukan sebagai:
~ / backup / rsync-'date + ”% F-% I% p” '. log
Atau, kita dapat menentukannya sebagai:
~ / backup / rsync-'cat ~ / backup / time.txt'.log
Bagaimanapun, itu --file log
perintah harus dapat menemukan file log tanggal yang dibuat sebelumnya dan menulisnya.
File tujuan tautan ditetapkan sebagai:
--link-dest = / home / geek2 / files / 'cat ~ / backup / time2.txt'
Ini berarti bahwa --tautan-dest
perintah diberikan direktori cadangan sebelumnya. Jika kami menjalankan pencadangan setiap dua jam, dan sekarang pukul 16:00 pada saat kami menjalankan skrip ini, maka --tautan-dest
perintah mencari direktori yang dibuat pada jam 2:00 siang dan hanya mentransfer data yang telah berubah sejak saat itu (jika ada).
Untuk mengulangi, itu sebabnya time.txt disalin ke time2.txt di awal skrip, jadi itu --tautan-dest
perintah dapat merujuk waktu itu nanti.
Direktori tujuan ditetapkan sebagai:
[email protected]: / home / geek2 / files / 'date + ”% F-% I% p”'
Perintah ini hanya menempatkan file sumber ke direktori yang memiliki judul tanggal dan waktu saat ini.
Akhirnya, kami memastikan bahwa salinan file log ditempatkan di dalam cadangan.
scp-P 12345 ~ / backup / rsync-'cat ~ / backup / time.txt'.log [email protected]: / home / geek2 / files / 'cat ~ / backup / time.txt' / rsync-'cat ~ / backup / time.txt'.log
Kami menggunakan salinan aman pada port 12345 untuk mengambil log rsync dan menempatkannya di direktori yang tepat. Untuk memilih file log yang benar dan memastikan itu berakhir di tempat yang tepat, file time.txt harus dirujuk melalui perintah cat. Jika Anda bertanya-tanya mengapa kami memutuskan untuk menggunakan time.txt alih-alih hanya menggunakan perintah tanggal, itu karena banyak waktu dapat terjadi saat perintah rsync berjalan, jadi untuk memastikan kami memiliki waktu yang tepat, kami hanya memberi cat dokumen teks yang kami buat sebelumnya.
Otomatisasi
Gunakan Cron di Linux atau Penjadwal Tugas di Windows untuk mengotomatiskan skrip rsync Anda. Satu hal yang harus Anda perhatikan adalah memastikan bahwa Anda mengakhiri proses rsync yang sedang berjalan sebelum melanjutkan yang baru. Penjadwal Tugas tampaknya menutup setiap instance yang sudah berjalan secara otomatis, tetapi untuk Linux Anda harus sedikit lebih kreatif.
Sebagian besar distribusi Linux dapat menggunakan perintah pkill, jadi pastikan untuk menambahkan yang berikut ke awal skrip rsync Anda:
pkill -9 rsync
Enkripsi
Tidak, kita belum selesai. Kami akhirnya memiliki solusi cadangan yang fantastis (dan gratis!), Tetapi semua file kami masih rentan terhadap pencurian. Mudah-mudahan, Anda membuat cadangan file Anda ke beberapa tempat yang jauhnya ratusan mil. Tidak peduli seberapa aman tempat yang jauh itu, pencurian dan peretasan selalu bisa menjadi masalah.
Dalam contoh kami, kami telah menyalurkan semua lalu lintas rsync kami melalui SSH, sehingga berarti semua file kami dienkripsi saat dalam perjalanan ke tujuan mereka. Namun, kita perlu memastikan tujuan sama amannya. Perlu diingat bahwa rsync hanya mengenkripsi data Anda saat sedang ditransfer, tetapi file-file tersebut terbuka lebar begitu mereka mencapai tujuan mereka..
Salah satu fitur terbaik rsync adalah bahwa ia hanya mentransfer perubahan di setiap file. Jika Anda memiliki semua file yang dienkripsi dan membuat satu perubahan kecil, seluruh file harus dikirim ulang karena enkripsi sepenuhnya mengacak semua data setelah perubahan apa pun..
Untuk alasan ini, yang terbaik / termudah untuk menggunakan beberapa jenis enkripsi disk, seperti BitLocker untuk Windows atau dm-crypt untuk Linux. Dengan begitu, data Anda dilindungi jika terjadi pencurian, tetapi file dapat ditransfer dengan rsync dan enkripsi Anda tidak akan menghalangi kinerjanya. Ada opsi lain yang tersedia yang berfungsi mirip dengan rsync atau bahkan mengimplementasikan beberapa bentuknya, seperti Duplicity, tetapi mereka kekurangan beberapa fitur yang ditawarkan rsync.
Setelah Anda mengatur cadangan snapshot Anda di lokasi di luar lokasi dan mengenkripsi hard drive sumber dan tujuan Anda, beri tepukan pada diri Anda sendiri untuk menguasai rsync dan menerapkan solusi pencadangan data yang paling mudah mungkin..