Protokol rsync dapat sangat mudah digunakan untuk pekerjaan backup / sinkronisasi biasa, tetapi beberapa fitur yang lebih canggih mungkin mengejutkan Anda. Dalam artikel ini, kita akan menunjukkan bagaimana bahkan penumpuk data dan penggemar cadangan terbesar dapat menggunakan rsync sebagai solusi tunggal untuk semua kebutuhan redundansi data mereka.
Jika Anda duduk di sana berpikir "Apa sih rsync?" Atau "Saya hanya menggunakan rsync untuk tugas-tugas yang sangat sederhana," Anda mungkin ingin memeriksa artikel kami sebelumnya tentang cara menggunakan rsync untuk mem-backup data Anda di Linux, yang memberi pengantar rsync, memandu Anda melalui instalasi, dan menampilkan fungsi-fungsinya yang lebih mendasar. Setelah Anda memahami bagaimana menggunakan rsync (jujur, tidak begitu rumit) dan merasa nyaman dengan terminal Linux, Anda siap untuk melanjutkan ke panduan lanjutan ini.
Pertama, mari pembaca Windows kami di halaman yang sama dengan para ahli Linux kami. Meskipun rsync dibangun untuk dijalankan pada sistem mirip Unix, tidak ada alasan bahwa Anda tidak dapat menggunakannya dengan mudah di Windows. Cygwin menghasilkan API Linux yang luar biasa yang dapat kita gunakan untuk menjalankan rsync, jadi pergilah ke situs web mereka dan unduh versi 32-bit atau 64-bit, tergantung pada komputer Anda.
Instalasi sangat mudah; Anda dapat menyimpan semua opsi pada nilai standarnya sampai Anda masuk ke layar "Pilih Paket".
Sekarang Anda perlu melakukan langkah yang sama untuk Vim dan SSH, tetapi paket-paketnya akan terlihat sedikit berbeda ketika Anda memilihnya, jadi di sini adalah beberapa screenshot:
Memasang Vim:
Memasang SSH:
Setelah Anda memilih ketiga paket tersebut, terus klik di samping sampai Anda menyelesaikan instalasi. Kemudian Anda dapat membuka Cygwin dengan mengklik ikon yang dipasang penginstal pada desktop Anda.
Sekarang setelah pengguna Windows berada di halaman yang sama, mari kita lihat perintah rsync sederhana, dan tunjukkan bagaimana penggunaan beberapa switch canggih dapat dengan cepat menjadikannya kompleks.
Katakanlah Anda memiliki banyak file yang perlu dicadangkan - siapa yang tidak hari ini? Anda mencolokkan hard drive portabel Anda sehingga Anda dapat membuat cadangan file komputer Anda, dan jalankan perintah berikut:
rsync -a / home / geek / file / / mnt / usb / file /
Atau, cara itu akan terlihat pada komputer Windows dengan Cygwin:
rsync -a / cygdrive / c / files / / cygdrive / e / files /
Cukup sederhana, dan pada saat itu benar-benar tidak perlu menggunakan rsync, karena Anda hanya dapat menyeret dan menjatuhkan file. Namun, jika hard drive Anda yang lain sudah memiliki beberapa file dan hanya perlu versi yang diperbarui ditambah file yang telah dibuat sejak sinkronisasi terakhir, perintah ini berguna karena hanya mengirim data baru ke hard drive. Dengan file-file besar, dan terutama mentransfer file melalui internet, itu adalah masalah besar.
Mencadangkan 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 akan 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-file asing dari tujuan yang tidak lagi ada di direktori source, menampilkan nama file yang dipindahkan sehingga Anda memiliki gambaran tentang apa yang terjadi, dan tunnel rsync melalui SSH pada port 12345.
Itu -a -v -e --delete
switch adalah beberapa yang paling dasar dan umum digunakan; Anda seharusnya sudah tahu banyak tentang mereka jika Anda membaca tutorial ini. Mari kita membahas beberapa tombol lain yang terkadang diabaikan tetapi sangat berguna:
--kemajuan
- Switch ini memungkinkan kita untuk melihat perkembangan transfer dari setiap file. Ini sangat berguna ketika mentransfer file besar melalui internet, tetapi dapat menghasilkan jumlah informasi yang tidak masuk akal ketika hanya mentransfer file kecil di jaringan yang cepat.
Perintah rsync dengan --kemajuan
beralih sebagai cadangan sedang berlangsung:
--sebagian
- Ini adalah saklar lain yang sangat berguna ketika mentransfer file besar melalui internet. Jika rsync terputus karena alasan apa pun di tengah transfer file, file yang ditransfer sebagian disimpan di direktori tujuan dan transfer dilanjutkan kembali setelah perintah rsync dijalankan lagi. Ketika mentransfer file besar melalui internet (katakanlah, beberapa gigabyte), tidak ada yang lebih buruk daripada memiliki beberapa pemadaman internet kedua, layar biru, atau kesalahan manusia dalam perjalanan transfer file Anda dan harus mulai dari awal lagi.
-P
- switch ini menggabungkan --kemajuan
dan --sebagian
, jadi gunakan saja dan itu akan membuat perintah rsync Anda sedikit lebih rapi.
-z
atau --kompres
- Switch ini akan membuat data file kompres rsync saat ditransfer, mengurangi jumlah data yang harus dikirim ke tujuan. Ini sebenarnya adalah saklar yang cukup umum tetapi jauh dari penting, hanya benar-benar menguntungkan Anda pada transfer antara koneksi lambat, dan tidak melakukan apa pun untuk jenis file berikut ini: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.
-h
atau - manusia terbaca
- Jika Anda menggunakan --kemajuan
beralih, Anda pasti ingin menggunakan yang ini juga. Yaitu, kecuali Anda ingin mengonversi byte ke megabyte dengan cepat. Itu -h
switch mengkonversi semua nomor yang dikeluarkan ke format yang dapat dibaca manusia, sehingga Anda dapat benar-benar memahami jumlah data yang ditransfer.
-n
atau --keluar
- Switch ini penting untuk mengetahui kapan Anda pertama kali menulis skrip rsync dan mengujinya. Ini menjalankan uji coba tetapi tidak benar-benar membuat perubahan - perubahan yang diharapkan masih dikeluarkan seperti biasa, sehingga Anda dapat membaca semuanya dan memastikannya terlihat baik-baik saja sebelum meluncurkan skrip Anda ke dalam 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 dalam nama folder.
--exclude-from
- Switch ini digunakan untuk menautkan ke daftar pengecualian yang berisi jalur direktori yang tidak Anda inginkan untuk dicadangkan. Itu hanya membutuhkan file teks biasa dengan direktori atau path file di setiap baris.
--termasuk dari
- Mirip dengan --exclude-from
, tetapi tautan ke file yang berisi direktori dan jalur file data yang ingin Anda cadangkan.
--stats
- Tidak benar-benar sebuah tombol penting dengan cara apa pun, tetapi jika Anda seorang sysadmin, itu bisa berguna untuk mengetahui statistik rinci dari setiap cadangan, supaya Anda dapat memantau jumlah lalu lintas yang dikirim melalui jaringan Anda dan semacamnya.
--log-file
- Ini memungkinkan Anda mengirim output rsync ke file log. Kami merekomendasikan ini untuk cadangan otomatis di mana Anda tidak ada di sana untuk membaca sendiri hasilnya. Selalu berikan file log sekali lagi di waktu luang Anda untuk memastikan semuanya berfungsi dengan benar. Juga, ini adalah tombol penting untuk digunakan sysadmin, jadi Anda tidak perlu bertanya-tanya bagaimana cadangan Anda gagal ketika Anda meninggalkan magang yang bertanggung jawab.
Mari kita lihat perintah rsync kita sekarang setelah kita memiliki beberapa switch tambahan:
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, pencadangan ini tidak melakukan apa pun untuk melindungi kami dari salah satu penyebab utama kehilangan data: kesalahan manusia.
Jika Anda tidak sengaja menghapus file, virus merusak file Anda, atau sesuatu yang lain yang mengubah file Anda secara tidak diinginkan, dan kemudian Anda menjalankan skrip cadangan rsync Anda, data yang dicadangkan akan 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 --backup-dir
argumen sehingga pengguna dapat menjalankan cadangan diferensial. Contoh pertama di situs web rsync menunjukkan skrip di mana pencadangan penuh dijalankan setiap tujuh hari, dan kemudian perubahan ke file tersebut dicadangkan dalam direktori terpisah setiap hari. Masalah dengan metode ini adalah bahwa untuk memulihkan file Anda, Anda harus secara efektif memulihkannya tujuh kali berbeda. Selain itu, sebagian besar geek menjalankan cadangannya beberapa kali sehari, sehingga Anda dapat dengan mudah memiliki lebih dari 20 direktori cadangan yang berbeda pada waktu tertentu. Tidak hanya memulihkan file Anda sekarang rasa sakit, tetapi bahkan hanya melihat melalui data yang dicadangkan dapat sangat memakan waktu - Anda harus tahu kapan terakhir kali file diubah untuk menemukan salinan cadangan yang paling baru. Di atas semua itu, itu tidak efisien untuk hanya menjalankan cadangan incremental mingguan (atau bahkan kurang sering dalam beberapa kasus).
Snapshot backup untuk menyelamatkan! Snapshot backup tidak lebih dari incremental backup, tetapi mereka menggunakan hardlink untuk mempertahankan struktur file dari sumber aslinya. Mungkin sulit untuk memusingkan kepala Anda terlebih dahulu, jadi mari kita lihat contohnya.
Anggap kami memiliki skrip cadangan yang secara otomatis mencadangkan data kami setiap dua jam. Kapan pun rsync melakukan ini, 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 tersebut, Anda akan melihat setiap file dari direktori sumber persis seperti pada saat itu. Namun, tidak akan ada duplikat di dua direktori. rsync menyelesaikan ini dengan menggunakan hardlink melalui --link-dest = DIR
argumen.
Tentu saja, untuk memiliki nama-nama direktori yang bagus dan rapi ini, kita harus memperkuat skrip rsync kita sedikit. Mari kita lihat apa yang diperlukan untuk menyelesaikan solusi cadangan seperti ini, dan kemudian kami akan menjelaskan skrip secara lebih detail:
#! / bin / bash
#copy time.txt lama 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 --delete --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 menyimpannya 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 khas. Jika kami kehilangan Anda di suatu tempat, mari kita membedahnya sepotong demi sepotong:
Baris pertama skrip kami menyalin isi time.txt ke time2.txt. Ya pipa adalah untuk mengkonfirmasi bahwa kami ingin menimpa file. Selanjutnya, kita mengambil waktu sekarang dan memasukkannya ke dalam time.txt. File-file ini akan berguna nantinya.
Baris berikutnya membuat file log rsync, menamakannya rsync-date.log (di mana tanggal adalah tanggal dan waktu aktual).
Sekarang, perintah rsync kompleks yang telah kami beri peringatan kepada Anda tentang:
-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest
- Hanya tombol yang kita bicarakan sebelumnya; gulir ke atas jika Anda membutuhkan 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 dalamnya.
Penggunaan tanggal dan perintah kucing
Kita akan membahas setiap penggunaan tanggal dan perintah kucing di dalam perintah rsync, sesuai urutannya. Catatan: kami sadar bahwa ada cara lain untuk mencapai fungsi ini, terutama dengan penggunaan mendeklarasikan variabel, tetapi untuk tujuan panduan ini, kami telah memutuskan untuk menggunakan metode ini.
File log ditetapkan sebagai:
~ / backup / rsync-'date + "% F-% I% p" '. log
Alternatifnya, kita bisa menetapkannya sebagai:
~ / backup / rsync-'cat ~ / backup / time.txt'.log
Either way, the --log-file
perintah harus dapat menemukan file log tanggal yang dibuat sebelumnya dan menulis ke sana.
File tujuan tautan ditetapkan sebagai:
--link-dest = / home / geek2 / files / 'cat ~ / backup / time2.txt'
Ini berarti bahwa --link-dest
perintah diberikan direktori dari cadangan sebelumnya. Jika kami menjalankan pencadangan setiap dua jam, dan sekarang pukul 16:00 waktu kami menjalankan skrip ini, maka --link-dest
perintah mencari direktori yang dibuat pada 2:00 PM dan hanya mentransfer data yang telah berubah sejak saat itu (jika ada).
Untuk mengulangi, itulah sebabnya time.txt disalin ke time2.txt di awal skrip, jadi --link-dest
perintah bisa referensi waktu itu nanti.
Direktori tujuan ditentukan sebagai:
[email protected]: / home / geek2 / files / 'date + ”% F-% I% p”'
Perintah ini hanya menempatkan file sumber ke dalam 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 rsync log dan letakkan di direktori yang tepat. Untuk memilih file log yang benar dan memastikannya berakhir di tempat yang tepat, file time.txt harus dirujuk melalui perintah cat. Jika Anda bertanya-tanya mengapa kami memutuskan untuk cat time.txt daripada hanya menggunakan perintah tanggal, itu karena banyak waktu bisa terjadi ketika perintah rsync sedang berjalan, jadi untuk memastikan kami memiliki waktu yang tepat, kami hanya kucing dokumen teks yang kami buat sebelumnya.
Gunakan Cron di Linux atau Task Scheduler di Windows untuk mengotomatiskan skrip rsync Anda. Satu hal yang harus Anda waspadai adalah memastikan bahwa Anda mengakhiri proses rsync yang sedang berjalan sebelum melanjutkan yang baru. Penjadwal Tugas tampaknya menutup semua instance yang sudah berjalan secara otomatis, tetapi untuk Linux Anda harus sedikit lebih kreatif.
Kebanyakan distribusi Linux dapat menggunakan perintah pkill, jadi pastikan untuk menambahkan yang berikut ini ke awal skrip rsync Anda:
pkill -9 rsync
Tidak, kita belum selesai. Kami akhirnya memiliki solusi cadangan yang fantastis (dan gratis!) Di tempat, tetapi semua file kami masih rentan terhadap pencurian. Semoga, Anda mem-backup file Anda ke suatu tempat yang berjarak 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 itu berarti semua file kami dienkripsi saat transit ke tujuan mereka. Namun, kita perlu memastikan tujuannya sama amannya. Perlu diingat bahwa rsync hanya mengenkripsi data Anda saat ditransfer, tetapi file terbuka lebar setelah mencapai tujuan.
Salah satu fitur terbaik rsync adalah hanya mentransfer perubahan dalam setiap file. Jika Anda memiliki semua file Anda dienkripsi dan membuat satu perubahan kecil, seluruh file harus ditransmisikan sebagai hasil dari enkripsi sepenuhnya mengacak semua data setelah perubahan apa pun.
Untuk alasan ini, sebaiknya / gunakan beberapa jenis enkripsi disk, seperti BitLocker untuk Windows atau dm-crypt untuk Linux. Dengan cara itu, data Anda dilindungi dalam hal pencurian, tetapi file dapat ditransfer dengan rsync dan enkripsi Anda tidak akan menghambat kinerjanya. Ada pilihan lain yang tersedia yang bekerja sama dengan rsync atau bahkan mengimplementasikan beberapa bentuknya, seperti Duplicity, tetapi mereka tidak memiliki beberapa fitur yang ditawarkan rsync.
Setelah Anda men-setup cadangan snapshot Anda di lokasi offsite dan mengenkripsi hard drive sumber dan tujuan Anda, beri diri Anda tepukan di belakang untuk menguasai rsync dan mengimplementasikan solusi backup data yang paling mudah dibobol mungkin.