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, mempertahankanmtime
, 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 jikamtime
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. ]