GNU/Linux >> Belajar Linux >  >> Linux

Alat Sysadmin:Menggunakan rsync untuk mengelola pencadangan, pemulihan, dan sinkronisasi file

Sebagai sysadmin, saya menghabiskan sebagian besar energi saya untuk dua hal (selain memastikan ada kopi):Khawatir tentang memiliki cadangan dan mencari cara paling sederhana dan terbaik untuk melakukan sesuatu. Salah satu alat favorit saya untuk menyelesaikan kedua masalah ini disebut rsync .

Rsync diciptakan oleh salah satu orang yang sama yang menemukan Samba, Andrew Tridgell. Ini adalah alat yang sangat berguna dan fleksibel yang disertakan dalam setiap versi Linux dan telah di-porting ke sistem operasi lain. Paling sederhana, rsync adalah alat untuk menyalin file. Namun, itu jauh lebih kuat dari itu.

  • Ini membuat dua set file tetap terbarui dan tersinkronisasi.
  • Ini berjalan sebagai perintah dan dapat dituliskan.
  • Ini mengompresi dan mengenkripsi aliran data.
  • Ini menggunakan beberapa jenis klien akses jarak jauh (SSH dan RSH, misalnya).

Jadi, tidak mengherankan jika ini menjadi favorit banyak administrator sistem.

Dasar-dasar

Seperti mv dan cp perintah, dalam bentuk paling dasar rsync hanya membutuhkan sumber dan tujuan:

[root@milo enable]# rsync ./foo/testfoo ./bar/

[root@milo enable]# ls -ilR
.:
total 8
5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:15 bar
5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:08 foo

./bar:
total 8
5001398 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testbar
4982446 -rw-rw-r-- 1 root       root       8 Jun 11 15:15 testfoo

./foo:
total 4
5001268 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testfoo

Kami menyalin testfoo ke bar direktori. Bukan masalah besar, sungguh.

Sekarang, mari tambahkan file ke ./foo dan sinkronkan ulang:

[root@milo enable]# touch ./foo/bat.txt

[root@milo enable]# rsync ./foo/* ./bar/
[root@milo enable]# ls -ilR
.:
total 8
5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:45 bar
5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:25 foo

./bar:
total 8
4992599 -rw-r--r-- 1 root       root       0 Jun 11 15:45 bat.txt
5001398 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testbar
4992604 -rw-rw-r-- 1 root       root       8 Jun 11 15:45 testfoo

./foo:
total 4
5002591 -rw-r--r-- 1 root       root       0 Jun 11 15:25 bat.txt
5001268 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testfoo

Pada titik ini, kami ingin mencatat beberapa hal. Pertama, ketika kita menjalankan kembali rsync , itu disalin ulang testfoo dan memperbarui atime . Juga, setiap kali menyalin file, itu memberikan file inode baru nomor. Oleh karena itu, sejauh menyangkut sistem file, ini adalah file yang sama sekali berbeda (karena itu—itu menyalin semua informasi setiap kali). Terakhir, perhatikan bahwa ketika kita rsync file, itu mengubah kepemilikan ke pengguna yang menjalankan perintah (root, dalam hal ini).

Semua ini penting jika kita ingin membuat backup. Perilaku ini sama dengan cp memerintah. Kita juga bisa menggunakan cp perintah untuk menyalin direktori secara rekursif, serta mempertahankan atribut dan kepemilikan. Perbedaan besarnya adalah rsync dapat melakukan checksum file dan membandingkan file sumber dan tujuan, di mana cp lihat saja atime nilai. Rsync fungsionalitas tambahan berguna untuk menjaga integritas cadangan (kita akan membahas integritas nanti di seri ini).

Jadi, mari perbarui salah satu file ini dan lihat apa yang rsync melakukan:

[root@milo enable]# echo 'this is new text'>>./foo/testfoo
 
[root@milo enable]# ls -al ./foo
 
-rw-rw-r-- 1 skipworthy skipworthy   25 Jun 11 16:13 testfoo

[root@milo enable]# rsync -aruv ./foo/* ./bar/
sending incremental file list
testfoo

sent 194 bytes  received 35 bytes  458.00 bytes/sec
total size is 25  speedup is 0.11

[root@milo enable]# ls -ilR
.:
total 8
5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 16:16 bar
5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:56 foo

./bar:
total 8
4992599 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
4998080 -rw-r--r-- 1 root       root        0 Jun 11 15:56 footoo.txt
5001398 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
4983541 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

./foo:
total 4
5002591 -rw-r--r-- 1 root       root        0 Jun 11 15:25 bat.txt
4997949 -rw-rw-r-- 1 skipworthy skipworthy  0 Jun 11 15:56 footoo.txt
5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

Perhatikan bahwa kali ini kami menggunakan beberapa sakelar:

  • -a Mode arsip, mempertahankan mtime , izin, dan symlink.
  • -r Mode rekursif, menelusuri direktori mana pun dan menyinkronkannya (harus berlebihan dengan -a beralih, tapi saya selalu menentukannya).
  • -u Hanya memperbarui file jika mtime pada sumbernya lebih baru.
  • -v Mode verbose, memberi tahu Anda apa yang dilakukannya (selalu menyenangkan dapat memantau apa yang terjadi. Trik lain yang berguna adalah menyalurkan output ini ke file dan memeriksanya nanti).

Pulihkan file dengan rsync

Jadi mari kita berpura-pura itu beberapa minggu kemudian. CFO menelepon dan mengatakan ada yang tidak beres—banyak file hilang dari direktori /foo-nya.

./foo:
total 8
5002591 -rw-r--r-- 1 root       root        0 Jun 11 15:25 bat.txt
4997949 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

Kami melihat cadangan, dan melihat file yang hilang:

./bar:
total 12
4992599 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
4994298 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
4994359 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles1.txt
4994367 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles2.txt
4994374 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles3.txt
4994413 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles4.txt
5001398 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
4983541 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

rsync quick cepat pulihkan:

[root@milo enable]# rsync -aruv ./bar/* ./foo
sending incremental file list
bat.txt
laterfiles1.txt
laterfiles2.txt
laterfiles3.txt
laterfiles4.txt
testbar

Dan:

./foo:
total 12
4994387 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
4997949 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
4994562 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles1.txt
4994564 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles2.txt
4994565 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles3.txt
4994567 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles4.txt
4994579 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

File yang hilang dipulihkan atau diperbarui dari cadangan yang lebih baru, tetapi file yang ada—yang tidak berubah—dibiarkan begitu saja. Perhatikan juga bahwa kepemilikan footoo.txt dipertahankan.

Menutup

Saya mendorong Anda untuk melihat (seperti biasa) di halaman manual untuk rsync , dan coba perintah yang berguna ini.

Berikut adalah beberapa sakelar lain yang perlu dipertimbangkan:

  • -r (rekursif)
  • -b (cadangan)
  • -R (kerabat)
  • -u (perbarui - salin hanya file yang diubah)
  • -P (kemajuan)
  • -c (kompres)
  • -p (pertahankan izin)

Pada artikel berikutnya dalam seri ini, kita akan melangkah lebih jauh dan melihat rsync jarak jauh dan beberapa fitur lanjutan lainnya dari perintah ini.

[ Kursus online gratis:Tinjauan teknis Red Hat Enterprise Linux. ]


Linux
  1. Cara Mencadangkan dan Memulihkan Repositori SVN di Linux

  2. Cara Mencadangkan dan Memulihkan Basis Data di PostgreSQL

  3. Backup dan Restore Database MySQL menggunakan mysqlhotcopy

  1. Kelola startup menggunakan systemd

  2. MySQL:Cara Backup (Dump) dan Restore Database Menggunakan mysqldump

  3. Cara Mencadangkan Dan Mengembalikan Pengaturan Aplikasi Menggunakan Mackup Pada Sistem Linux yang Baru Diinstal

  1. Panduan Ansible:Kelola File menggunakan Ansible

  2. Cara Backup dan Restore Database MySQL Menggunakan Command Line

  3. Menggunakan Rsync sertakan dan kecualikan opsi untuk menyertakan direktori dan file berdasarkan pola