Laman » bagaimana untuk » Panduan Bukan Pemula untuk Menyelaras Data dengan Rsync

    Panduan Bukan Pemula untuk Menyelaras Data dengan Rsync

    Protokol rsync boleh menjadi mudah untuk digunakan untuk kerja sandaran / penyegerakan biasa, tetapi beberapa ciri yang lebih canggihnya mungkin mengejutkan anda. Dalam artikel ini, kami akan menunjukkan betapa pun penyimpan data terbesar dan penggemar sandaran boleh menggunakan rsync sebagai satu penyelesaian untuk semua keperluan redundansi data mereka.

    Amaran: Geeks Lanjutan sahaja

    Jika anda duduk di sana berfikir "Apa sih rsync?" Atau "Saya hanya menggunakan rsync untuk tugas-tugas yang sangat mudah," anda mungkin ingin menyemak artikel sebelumnya tentang cara menggunakan rsync untuk membuat sandaran data anda di Linux, yang memberikan pengenalan kepada rsync, membimbing anda melalui pemasangan, dan mempamerkan fungsi yang lebih asas. Sebaik sahaja anda mempunyai pemahaman yang tegas mengenai cara menggunakan rsync (jujur, itu tidak begitu rumit) dan selesa dengan terminal Linux, anda sudah bersedia untuk meneruskan panduan lanjutan ini.

    Running rsync pada Windows

    Pertama, mari kita dapatkan pembaca Windows kami pada halaman yang sama dengan guru Linux kami. Walaupun rsync dibina untuk berjalan pada sistem seperti Unix, tidak ada alasan bahawa anda tidak boleh menggunakannya seperti mudah pada Windows. Cygwin menghasilkan API Linux yang hebat yang boleh kita gunakan untuk menjalankan rsync, jadi pergi ke laman web mereka dan muat turun versi 32-bit atau 64-bit, bergantung pada komputer anda.

    Pemasangan adalah mudah; anda boleh menyimpan semua opsyen pada nilai lalai mereka sehingga anda sampai ke skrin "Pilih Pakej".

    Kini anda perlu melakukan langkah yang sama untuk Vim dan SSH, tetapi pakej akan kelihatan agak berbeza apabila anda pergi untuk memilihnya, jadi berikut adalah beberapa tangkapan skrin:

    Memasang Vim:

    Memasang SSH:

    Selepas anda memilih tiga pakej tersebut, teruskan mengklik seterusnya sehingga anda menyelesaikan pemasangan. Kemudian anda boleh membuka Cygwin dengan mengklik pada ikon yang dipasang di desktop anda.

    rsync Perintah: Mudah untuk Advanced

    Sekarang bahawa pengguna Windows berada pada halaman yang sama, mari kita lihat arahan rsync yang mudah, dan tunjukkan bagaimana penggunaan sesetengah suis maju dengan cepat dapat menjadikannya kompleks.

    Katakan anda mempunyai sekumpulan fail yang perlu disokong - siapa yang tidak hari ini? Anda memasangkan cakera keras mudah alih anda supaya anda boleh membuat sandaran fail komputer anda, dan mengeluarkan arahan berikut:

    rsync -a / home / geek / files / / mnt / usb / files /

    Atau, cara ia akan kelihatan pada komputer Windows dengan Cygwin:

    rsync -a / cygdrive / c / files / / cygdrive / e / files /

    Cukup mudah, dan pada ketika itu benar-benar tidak perlu menggunakan rsync, kerana anda hanya boleh seret dan lepas fail. Walau bagaimanapun, jika cakera keras anda yang lain sudah mempunyai beberapa fail dan hanya memerlukan versi terkini ditambah dengan fail yang telah dibuat sejak penyegerakan yang terakhir, perintah ini berguna kerana ia hanya menghantar data baru ke cakera keras. Dengan fail besar, dan terutamanya memindahkan fail melalui internet, itu adalah masalah besar.

    Menyandarkan fail anda ke cakera keras luaran dan kemudian menyimpan cakera keras di lokasi yang sama dengan komputer anda adalah idea yang sangat buruk, jadi mari kita lihat apa yang diperlukan untuk mula menghantar fail anda melalui internet ke komputer lain ( yang telah anda sewa, ahli keluarga, dll).

    rsync -av --delete -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files /

    Perintah di atas akan menghantar fail anda ke komputer lain dengan alamat IP 10.1.1.1. Ia akan memadamkan fail luaran dari destinasi yang tidak lagi ada dalam direktori sumber, output nama fail yang dipindahkan supaya anda mempunyai idea tentang apa yang berlaku, dan rsync terowongan melalui SSH di port 12345.

    The -a -v -e --delete suis adalah antara yang paling asas dan biasa digunakan; anda sepatutnya tahu banyak perkara tentang mereka jika anda membaca tutorial ini. Mari kita pergi ke beberapa suis lain yang kadang-kadang diabaikan tetapi amat berguna:

    --kemajuan - Tukar ini membolehkan kami melihat kemajuan pemindahan setiap fail. Ia berguna terutamanya apabila memindahkan fail besar melalui internet, tetapi boleh menghasilkan jumlah maklumat yang tidak masuk akal apabila hanya memindahkan fail-fail kecil merentasi rangkaian yang pantas.

    Perintah rsync dengan --kemajuan suis sebagai sandaran sedang dijalankan:

    --sebahagiannya - Ini adalah suis lain yang sangat berguna apabila memindahkan fail besar melalui internet. Sekiranya rsync terputus atas apa-apa sebab di tengah-tengah pemindahan fail, fail yang dipindahkan sebahagiannya disimpan dalam direktori destinasi dan pemindahan itu diteruskan di mana ia berhenti apabila arahan rsync dijalankan lagi. Apabila memindahkan fail besar melalui internet (katakan, beberapa gigabait), tidak ada yang lebih buruk daripada mempunyai pemecatan internet beberapa saat, skrin biru, atau kesilapan manusia perjalanan sehingga pemindahan fail anda dan harus bermula sekali lagi.

    -P - suis ini menggabungkan --kemajuan dan --sebahagiannya, jadi gunakannya dan ia akan menjadikan arahan rsync anda lebih kemas.

    -z atau --memampatkan - Suis ini akan membuat rsync memampatkan data fail kerana ia dipindahkan, mengurangkan jumlah data yang perlu dihantar ke destinasi. Ia sebenarnya suis yang agak biasa tetapi jauh daripada penting, hanya benar-benar memberi manfaat kepada anda pada pemindahan antara sambungan lambat dan tidak berbuat apa-apa untuk jenis fail berikut: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

    -h atau --manusia boleh dibaca - Jika anda menggunakannya --kemajuan beralih, anda pasti mahu menggunakan yang ini juga. Iaitu, melainkan jika anda ingin menukar bait ke megabait dengan cepat. The -h suis menukarkan semua nombor output ke format yang boleh dibaca manusia, jadi anda sebenarnya dapat memahami jumlah data yang dipindahkan.

    -n atau --kering - Suis ini penting untuk mengetahui apabila anda mula-mula menulis skrip rsync anda dan mengujinya. Ia menjalankan satu percubaan tetapi tidak benar-benar membuat sebarang perubahan - perubahan yang akan dilakukan masih normal seperti biasa, jadi anda boleh membacanya dan pastikan ia kelihatan baik sebelum melancarkan skrip anda ke dalam pengeluaran.

    -R atau --saudara - Suis ini mesti digunakan jika direktori destinasi belum ada. Kami akan menggunakan pilihan ini kemudian dalam panduan ini supaya kami dapat membuat direktori pada mesin sasaran dengan cap waktu dalam nama folder.

    --tidak termasuk-dari - Suis ini digunakan untuk memaut ke senarai tidak termasuk yang mengandungi laluan direktori yang anda tidak mahu disandarkan. Ia hanya memerlukan fail teks biasa dengan direktori atau laluan fail pada setiap baris.

    --termasuk-dari - Sama seperti --tidak termasuk-dari, tetapi ia menghubungkan ke fail yang mengandungi direktori dan laluan fail data yang anda mahu disandarkan.

    --statistik - Tidak semestinya suis penting dengan apa cara sekalipun, tetapi jika anda seorang sysadmin, ia boleh menjadi berguna untuk mengetahui statistik terperinci bagi setiap sandaran, jadi anda boleh memantau jumlah lalu lintas yang dihantar melalui rangkaian anda dan seperti.

    --fail log - Ini membolehkan anda menghantar output rsync ke fail log. Kami pasti mengesyorkan ini untuk backup automatik di mana anda tidak berada di sana untuk membaca melalui output sendiri. Sentiasa berikan fail log sekali lagi dalam masa lapang anda untuk memastikan semuanya berjalan dengan lancar. Juga, suis penting untuk digunakan oleh sysadmin, jadi anda tidak tertanya-tanya bagaimana backup anda gagal semasa anda meninggalkan penanggung jawab yang bertanggungjawab.

    Mari lihat pada arahan rsync kami sekarang bahawa kami mempunyai beberapa suis tambahan 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 / fail / [email protected]: / home / geek2 / files /

    Perintah ini masih cukup mudah, tetapi kami masih belum membuat penyelesaian sandaran yang baik. Walaupun file kami kini berada dalam dua lokasi fizikal yang berbeza, sandaran ini tidak melakukan apa-apa untuk melindungi kami daripada salah satu punca utama kehilangan data: kesalahan manusia.

    Backup Snapshot

    Sekiranya anda membuang fail secara tidak sengaja, virus merosakkan mana-mana fail anda, atau sesuatu yang lain di mana fail anda tidak dapat diubah dengan wajar, dan kemudian anda menjalankan skrip sandaran rsync anda, data yang disandarkan akan ditimpa dengan perubahan yang tidak diingini. Apabila sesuatu sedemikian berlaku (bukan jika, tetapi bila), penyelesaian sandaran anda tidak melakukan apa-apa untuk melindungi anda daripada kehilangan data anda.

    Pencipta rsync menyedari ini, dan menambah --sandaran dan --backup-dir hujah supaya pengguna dapat menjalankan backup differential. Contoh pertama di laman web rsync menunjukkan skrip di mana sandaran penuh dijalankan setiap tujuh hari, dan kemudian perubahan pada file tersebut disandarkan dalam direktori berasingan setiap hari. Masalah dengan kaedah ini ialah untuk memulihkan fail anda, anda perlu memulihkannya dengan berkesan tujuh kali. Selain itu, kebanyakan geeks menjalankan backup mereka beberapa kali sehari, jadi anda boleh dengan mudah mempunyai 20 + direktori sandaran yang berbeza pada bila-bila masa. Bukan hanya memulihkan fail anda sekarang kesakitan, tetapi hanya melihat data anda yang disokong dapat memakan waktu yang sangat lama - anda perlu tahu kali terakhir fail diubah untuk mencari salinan yang disandarkan yang paling terkini. Selain itu, ia tidak cekap untuk berjalan hanya seminggu (atau kurang kerap dalam sesetengah kes) back up tambahan.

    Backup snapshot untuk penyelamatan! Backup snapshot tidak lebih daripada backup tambahan, tetapi mereka menggunakan hardlink untuk mengekalkan struktur fail sumber asal. Itu mungkin sukar untuk membungkus kepala anda pada mulanya, jadi mari kita lihat contohnya.

    Berpura-pura kami mempunyai skrip sandaran yang berfungsi secara automatik memulangkan data kami setiap dua jam. Setiap kali rsync melakukan ini, nama setiap sandaran dalam format: Backup-month-day-year-time.

    Oleh itu, pada akhir hari biasa, kami akan mempunyai senarai folder dalam direktori destinasi seperti ini:

    Apabila melintasi mana-mana direktori tersebut, anda akan melihat setiap fail dari direktori sumber tepat pada masa itu. Namun, tidak ada salinan di dua direktori. rsync dapat menyelesaikan masalah ini dengan menggunakan hardlink melalui --pautan-dest = DIR hujah.

    Sudah tentu, untuk mempunyai nama direktori yang bagus dan kemas kini, kami perlu menaikkan skrip rsync kami sedikit. Mari kita lihat apa yang diperlukan untuk mencapai penyelesaian sandaran seperti ini, dan kemudian kita akan menerangkan skrip dengan lebih terperinci:

    #! / bin / bash

    #copy old time.txt ke time2.txt

    ya | cp ~ / backup / time.txt ~ / backup / time2.txt

    #overwrite fail time.txt lama dengan masa yang baru

    echo 'date + "% F-% I% p"'> ~ / backup / time.txt

    #membuat fail log

    echo ""> ~ / backup / rsync-fate + "% F-% I% p" 'log

    perintah #rsync

    rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --delete --stats --log-file = ~ / backup / rsync-fate + "% F-% I% p "'.log --exclude-from' ~ / exclude.txt '--link-dest = / home / geek2 / files /' cat ~ / backup / time2.txt '-e' ssh -p 12345 '/ home / geek / fail / [email protected]: / home / geek2 / files / 'date + "% F-% I% p"' /

    # jangan lupa untuk mencatat fail log dan masukkannya dengan sandaran

    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 tipikal. Sekiranya kami kehilangan anda di suatu tempat, mari membedahnya dengan sekeping:

    Baris pertama skrip kami menyalin kandungan time.txt ke time2.txt. Paip ya adalah untuk mengesahkan bahawa kita ingin menimpa fail tersebut. Seterusnya, kami mengambil masa semasa dan memasukkannya ke time.txt. Fail-fail ini akan berguna pada masa akan datang.

    Baris seterusnya menjadikan fail log rsync, menamakannya rsync-date.log (tarikhnya ialah tarikh dan masa sebenar).

    Kini, perintah rsync kompleks yang kami telah memberi amaran kepada anda mengenai:

    -avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest - Hanya suis yang kita bincangkan sebelumnya; tatal ke atas jika anda memerlukan penyegar semula.

    --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r - Ini adalah kebenaran untuk direktori destinasi. Oleh kerana kami membuat direktori ini di tengah skrip rsync kami, kami perlu menentukan kebenaran supaya pengguna kami boleh menulis fail kepadanya.

    Penggunaan tarikh dan perintah kucing

    Kami akan pergi ke setiap penggunaan tarikh dan perintah kucing di dalam perintah rsync, mengikut urutan yang berlaku. Nota: kami menyedari bahawa terdapat cara lain untuk mencapai fungsi ini, terutamanya dengan penggunaan mengisytiharkan pemboleh ubah, tetapi untuk tujuan panduan ini, kami telah memutuskan untuk menggunakan kaedah ini.

    Fail log dinyatakan sebagai:

    ~ / backup / rsync-fate + "% F-% I% p" 'log

    Sebagai alternatif, kita boleh menentukannya sebagai:

    ~ / sandaran / rsync-'cat ~ / backup / time.txt'.log

    Sama ada cara, yang --fail log arahan harus dapat mencari fail log bertarikh yang telah dibuat sebelumnya dan tulis kepadanya.

    Fail destinasi pautan ditentukan sebagai:

    --pautan-dest = / home / geek2 / files / 'cat ~ / backup / time2.txt'

    Ini bermakna bahawa --pautan-dest arahan diberi direktori sandaran sebelumnya. Jika kami menjalankan sandaran setiap dua jam, dan jam 4:00 petang pada waktu kami menjalankan skrip ini, maka --pautan-dest arahan mencari direktori yang dibuat pada jam 2:00 petang dan hanya memindahkan data yang telah berubah sejak itu (jika ada).

    Untuk mengulangi, itu sebabnya time.txt disalin ke time2.txt pada permulaan skrip, jadi --pautan-dest arahan boleh merujuk masa itu kemudian.

    Direktori destinasi ditentukan sebagai:

    [email protected]: / home / geek2 / files / 'date + "% F-% I% p"'

    Perintah ini hanya meletakkan fail sumber ke direktori yang mempunyai tajuk tarikh dan masa semasa.

    Akhirnya, kami pastikan salinan fail log diletakkan di dalam sandaran.

    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 selamat di port 12345 untuk mengambil log rsync dan meletakkannya di direktori yang betul. Untuk memilih fail log yang betul dan pastikan ia berakhir di tempat yang betul, fail time.txt mesti dirujuk melalui arahan kucing. Sekiranya anda tertanya-tanya mengapa kami membuat keputusan untuk kucing time.txt dan bukannya hanya menggunakan arahan tarikh, itu kerana banyak masa yang mungkin berlaku semasa perintah rsync dijalankan, jadi untuk memastikan kami mempunyai masa yang tepat, kami hanya kucing dokumen teks yang kami buat sebelum ini.

    Automasi

    Gunakan Cron pada Linux atau Penjadual Tugas pada Windows untuk mengautomasikan skrip rsync anda. Satu perkara yang perlu anda berhati-hati ialah memastikan anda mengakhiri mana-mana proses rsync yang sedang berjalan sebelum meneruskan yang baru. Penjadual Tugas seolah-olah menutup apa-apa yang sudah berjalan contoh secara automatik, tetapi untuk Linux anda perlu menjadi sedikit lebih kreatif.

    Kebanyakan pengedaran Linux boleh menggunakan arahan pkill, jadi pastikan anda menambah yang berikut ke permulaan skrip rsync anda:

    pkill -9 rsync

    Penyulitan

    Tidak, kita belum selesai. Kami akhirnya mempunyai penyelesaian sandaran hebat (dan percuma!) Di tempatnya, tetapi semua fail kami masih terdedah kepada kecurian. Mudah-mudahan, anda membuat sandaran fail anda ke beberapa tempat beratus batu jauhnya. Tidak kira betapa selamatnya tempat yang jauh ini, kecurian dan penggodaman selalu menjadi masalah.

    Dalam contoh kami, kami telah melancarkan semua lalu lintas rsync kami melalui SSH, jadi ini bermakna semua fail kami dienkripsi semasa dalam transit ke destinasi mereka. Walau bagaimanapun, kita perlu memastikan destinasi sama selamat. Perlu diingat bahawa rsync hanya menyulitkan data anda kerana ia sedang dipindahkan, tetapi fail terbuka lebar sebaik sahaja mereka mencapai destinasi mereka.

    Salah satu ciri terbaik rsync ialah ia hanya memindahkan perubahan dalam setiap fail. Sekiranya anda mempunyai semua fail anda yang disulitkan dan membuat satu perubahan kecil, keseluruhan fail itu perlu dihantar semula sebagai hasil penyulitan sepenuhnya menyusun semua data selepas sebarang perubahan.

    Oleh sebab itu, yang terbaik / termudah untuk menggunakan beberapa jenis penyulitan cakera, seperti BitLocker untuk Windows atau dm-crypt untuk Linux. Dengan cara itu, data anda dilindungi sekiranya berlaku kecurian, tetapi fail boleh dipindahkan dengan rsync dan penyulitan anda tidak akan menghalang prestasinya. Ada pilihan lain yang boleh berfungsi sama seperti rsync atau bahkan melaksanakan beberapa bentuk seperti Duplicity, tetapi mereka tidak mempunyai ciri-ciri yang ditawarkan oleh rsync.

    Selepas anda menyediakan sandaran sandaran anda di lokasi luar tapak dan menyulitkan sumber dan destinasi cakera keras anda, berikan diri anda di belakang untuk menguasai rsync dan melaksanakan penyelesaian sandaran data yang paling lemah mungkin.