GNU/Linux >> Belajar Linux >  >> Linux

Cara menggunakan rsync lanjutan untuk cadangan Linux besar

Tampaknya jelas bahwa backup selalu menjadi topik hangat di dunia Linux. Kembali pada tahun 2017, David Both menawarkan tip pembaca Opensource.com tentang "Menggunakan rsync untuk mencadangkan sistem Linux Anda," dan awal tahun ini, ia menerbitkan jajak pendapat yang menanyakan kepada kami, "Apa strategi cadangan utama Anda untuk direktori / home di Linux? " Dalam jajak pendapat lain tahun ini, Don Watkins bertanya, "Solusi pencadangan open source mana yang Anda gunakan?"

Tanggapan saya adalah rsync. Saya sangat suka rsync! Ada banyak alat besar dan kompleks di pasaran yang mungkin diperlukan untuk mengelola tape drive atau perangkat perpustakaan penyimpanan, tetapi alat baris perintah open source sederhana mungkin yang Anda butuhkan.

rsinkronisasi dasar

Saya mengelola sistem penyimpanan biner untuk organisasi global yang memiliki sekitar 35.000 pengembang dengan beberapa terabyte file. Saya secara teratur memindahkan atau mengarsipkan ratusan gigabyte data sekaligus. Rsync digunakan. Pengalaman ini memberi saya kepercayaan diri pada alat sederhana ini. (Jadi, ya, saya menggunakannya di rumah untuk mencadangkan sistem Linux saya.)

Perintah dasar rsync sederhana.

rsync -av SRC DST

Memang, perintah rsync yang diajarkan dalam tutorial apa pun akan berfungsi dengan baik untuk sebagian besar situasi umum. Namun, misalkan kita perlu membuat cadangan data dalam jumlah yang sangat besar. Sesuatu seperti direktori dengan 2.000 sub-direktori, masing-masing menyimpan data mulai dari 50GB hingga 700GB. Menjalankan rsync di direktori ini bisa memakan banyak waktu, terutama jika Anda menggunakan opsi checksum, yang saya sukai.

Performa cenderung menurun jika kami mencoba menyinkronkan data dalam jumlah besar atau menyinkronkan di seluruh koneksi jaringan yang lambat. Mari saya tunjukkan beberapa metode yang saya gunakan untuk memastikan kinerja dan keandalan yang baik.

rsync lanjutan

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Salah satu baris pertama yang muncul saat rsync berjalan adalah:"mengirim daftar file tambahan." Jika Anda melakukan pencarian untuk baris ini, Anda akan melihat banyak pertanyaan menanyakan hal-hal seperti:mengapa butuh waktu lama? atau mengapa tampaknya menutup telepon?

Berikut adalah contoh berdasarkan skenario ini. Katakanlah kita memiliki direktori bernama /storage yang ingin kami cadangkan ke perangkat USB eksternal yang dipasang di /media/WDPassport .

Jika kita ingin mencadangkan /storage ke drive eksternal USB, kita dapat menggunakan perintah ini:

rsync -cav /storage /media/WDPassport

c option memberi tahu rsync untuk menggunakan checksum file alih-alih cap waktu untuk menentukan file yang diubah, dan ini biasanya membutuhkan waktu lebih lama. Untuk memecah /penyimpanan direktori, saya menyinkronkan menurut subdirektori, menggunakan temukan memerintah. Ini contohnya:

find /storage -type d -exec rsync -cav {} /media/WDPassport \;

Ini terlihat OK, tetapi jika ada file di /storage direktori, mereka tidak akan disalin. Jadi, bagaimana kita bisa menyinkronkan file di /storage ? Ada juga nuansa kecil di mana opsi tertentu akan menyebabkan rsync menyinkronkan . direktori, yang merupakan akar dari direktori sumber; ini berarti ia akan menyinkronkan subdirektori dua kali, dan kami tidak menginginkannya.

Singkat cerita, solusi yang saya pilih adalah skrip "tambahan ganda". Ini memungkinkan saya untuk memecah direktori, misalnya, merusak /home ke direktori home masing-masing pengguna atau jika Anda memiliki beberapa direktori besar, seperti musik atau foto keluarga.

Berikut adalah contoh skrip saya:

HOMES="alan"
DRIVE="/media/WDPassport"

for HOME in $HOMES; do
     cd /home/$HOME
     rsync -cdlptgov --delete . /$DRIVE/$HOME
     find . -maxdepth 1 -type d -not -name "." -exec rsync -crlptgov --delete {} /$DRIVE/$HOME \;
done

Perintah rsync pertama menyalin file dan direktori yang ditemukan di direktori sumber. Namun, direktori tersebut dibiarkan kosong sehingga kami dapat mengulanginya menggunakan find memerintah. Ini dilakukan dengan melewatkan d argumen, yang memberitahu rsync untuk tidak mengulang direktori.

-d, --dirs                  transfer directories without recursing

menemukan perintah kemudian meneruskan setiap direktori ke rsync satu per satu. Rsync kemudian menyalin konten direktori. Ini dilakukan dengan melewatkan r argumen, yang memberitahu rsync untuk mengulang direktori.

-r, --recursive             recurse into directories

Ini menjaga file kenaikan yang digunakan rsync ke ukuran yang dapat dikelola.

Kebanyakan tutorial rsync menggunakan a (atau arsip ) argumen untuk kenyamanan. Ini sebenarnya adalah argumen majemuk.

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

Argumen lain yang saya sampaikan akan disertakan dalam a; itu adalah l , p , t , g , dan o .

-l, --links                 copy symlinks as symlinks
-p, --perms                 preserve permissions
-t, --times                 preserve modification times
-g, --group                 preserve group
-o, --owner                 preserve owner (super-user only)

--hapus opsi memberitahu rsync untuk menghapus file apa pun di tujuan yang tidak lagi ada di sumbernya. Dengan cara ini, hasilnya adalah duplikasi yang tepat. Anda juga dapat menambahkan pengecualian untuk .Sampah direktori atau mungkin .DS_Store file yang dibuat oleh MacOS.

-not -name ".Trash*" -not -name ".DS_Store"

Hati-hati

Satu rekomendasi terakhir:rsync bisa menjadi perintah yang merusak. Untungnya, penciptanya yang bijaksana memberikan kemampuan untuk melakukan "lari kering". Jika kami menyertakan n pilihan, rsync akan menampilkan output yang diharapkan tanpa menulis data apapun.

rsync -cdlptgovn --delete . /$DRIVE/$HOME

Skrip ini dapat diskalakan untuk ukuran penyimpanan yang sangat besar dan latensi yang besar atau situasi tautan yang lambat. Saya yakin masih ada ruang untuk perbaikan, seperti yang selalu ada. Jika Anda memiliki saran, silakan bagikan di komentar.


Linux
  1. Cara menggunakan BusyBox di Linux

  2. Cara menggunakan systemd-nspawn untuk pemulihan sistem Linux

  3. Cara Menggunakan Rsync untuk Menyinkronkan File Baru atau Berubah/Dimodifikasi di Linux

  1. Cara menggunakan Perintah Su di Linux

  2. Perintah rsync Linux:cara menggunakannya

  3. Linux – Bagaimana Cara Menggunakan Ruang Swap Untuk Keadaan Darurat Saja?

  1. Cara menggunakan kdump untuk Analisis Kernel Crash Linux

  2. Bagaimana cara menggunakan rsync dari PC Windows ke server Linux jarak jauh?

  3. Sistem file rock-stable untuk file besar (cadangan) untuk linux