Rsync adalah alat yang sangat kuat untuk mengambil cadangan, atau menyinkronkan file dan direktori antara dua lokasi (atau server) yang berbeda.
Anda sudah mengetahuinya, karena kami telah memberikan contoh praktis tentang rsync kepada Anda sebelumnya.
Dalam situasi pencadangan biasa, Anda mungkin ingin mengecualikan satu atau lebih file (atau direktori) dari cadangan. Anda mungkin juga ingin mengecualikan jenis file tertentu dari rsync.
Artikel ini menjelaskan cara mengabaikan banyak file dan/atau direktori selama rsync dengan contoh.
Pertama, buat contoh struktur direktori seperti yang ditunjukkan di bawah ini (dengan beberapa file kosong) yang dapat digunakan untuk tujuan pengujian.
$ cd ~ $ mkdir -p source/dir1/dir2 $ mkdir -p source/dir3 $ touch source/file1.txt $ touch source/file2.txt $ touch source/dir1/dir2/file3.txt $ touch source/dir3/file4.txt
Perintah di atas akan membuat direktori sumber (di bawah direktori home Anda) dengan struktur berikut.
source - file1.txt - file2.txt - dir1 - dir2 - file3.txt - dir3 - file4.txt
1. Kecualikan direktori tertentu
Jika Anda tidak ingin menyinkronkan dir1 (termasuk semua subdirektorinya) dari sumber ke folder tujuan, gunakan opsi rsync –exclude seperti yang ditunjukkan di bawah ini.
$ rm -rf destination $ rsync -avz --exclude 'dir1' source/ destination/ building file list ... done created directory dest ./ file1.txt file2.txt dir3/ dir3/file4.txt
Verifikasi untuk memastikan dir1 tidak disalin dari direktori sumber ke direktori tujuan.
$ find destination destination destination/file2.txt destination/file1.txt destination/dir3 destination/dir3/file4.txt
2. Kecualikan beberapa direktori yang cocok dengan suatu pola
Contoh berikut akan mengecualikan direktori (atau subdirektori) apa pun di bawah source/ yang cocok dengan pola “dir*”
$ rm -rf destination $ rsync -avz --exclude 'dir*' source/ destination/ building file list ... done created directory destination ./ file1.txt file2.txt
Verifikasi direktori tujuan untuk memastikan tidak menyalin direktori yang memiliki kata kunci “dir” di dalamnya.
$ find destination destination destination/file2.txt destination/file1.txt
3. Kecualikan file tertentu
Untuk mengecualikan file tertentu, gunakan jalur relatif file dalam opsi kecualikan seperti yang ditunjukkan di bawah ini.
$ rm -rf destination $ rsync -avz --exclude 'dir1/dir2/file3.txt' source/ destination/ building file list ... done created directory destination ./ file1.txt file2.txt dir1/ dir1/dir2/ dir3/ dir3/file4.txt
Verifikasi direktori tujuan untuk memastikan tidak menyalin file tertentu ( dir1/dir2/file3.txt dalam contoh ini).
$ find destination destination destination/file2.txt destination/file1.txt destination/dir1 destination/dir1/dir2 destination/dir3 destination/dir3/file4.txt
4. Kecualikan jalur selalu relatif
Jika Anda tidak hati-hati, Anda mungkin melakukan kesalahan ini.
Dalam contoh berikut, opsi pengecualian tampaknya memiliki jalur lengkap (yaitu /dir1/dir2/file3.txt). Tapi, dari sudut pandang rsync, mengecualikan path selalu relatif, dan akan diperlakukan sebagai dir1/dir2/file3.txt. Pada contoh di bawah, rsync akan mencari dir1 di bawah direktori sumber (dan bukan di bawah / direktori root).
$ rsync -avz --exclude '/dir1/dir2/file3.txt' source/ destination/
Jadi, perintah di atas persis sama dengan yang berikut ini. Untuk menghindari kebingungan (dan agar mudah dibaca), jangan beri / di depan jalur pengecualian.
$ rsync -avz --exclude 'dir1/dir2/file3.txt' source/ destination/
5. Kecualikan jenis file tertentu
Untuk mengecualikan jenis file tertentu yang memiliki ekstensi tertentu, gunakan pola yang sesuai. Misalnya, untuk mengecualikan semua file yang berisi .txt sebagai ekstensi, lakukan hal berikut.
$ rsync -avz --exclude '*.txt' source/ destination/ building file list ... done created directory destination ./ dir1/ dir1/dir2/ dir3/
Verifikasi direktori tujuan untuk memastikan tidak menyalin file *.txt.
$ find destination destination destination/dir1 destination/dir1/dir2 destination/dir3
Catatan: Hal di atas sangat membantu, ketika Anda ingin membuat cadangan direktori home Anda, tetapi mengecualikan semua file gambar dan video besar yang memiliki ekstensi file tertentu.
6. Kecualikan beberapa file dan direktori secara bersamaan
Saat Anda ingin mengecualikan beberapa file dan direktori, Anda selalu dapat menentukan beberapa opsi pengecualian rsync di baris perintah seperti yang ditunjukkan di bawah ini.
$ rsync -avz --exclude file1.txt --exclude dir3/file4.txt source/ destination/
Tunggu. Bagaimana jika saya memiliki banyak file yang ingin saya kecualikan dari rsync?
Saya tidak dapat terus menambahkannya di baris perintah menggunakan multiple –exclude, yang sulit dibaca, dan sulit untuk menggunakan kembali perintah rsync untuk nanti.
Jadi, cara yang lebih baik adalah dengan menggunakan opsi rsync –exclude-from seperti yang ditunjukkan di bawah ini, di mana Anda dapat membuat daftar semua file (dan direktori) yang ingin Anda kecualikan dalam sebuah file.
Pertama, buat file teks dengan daftar semua file dan direktori yang tidak ingin Anda cadangkan. Ini adalah daftar file dan direktori yang ingin Anda kecualikan dari rsync.
$ vim exclude-list.txt file1.txt dir3/file4.txt
Selanjutnya, jalankan rsync menggunakan opsi –exclude-from dengan exception-list.txt seperti yang ditunjukkan di bawah ini.
$ rm -rf destination $ rsync -avz --exclude-from 'exclude-list.txt' source/ destination/ building file list ... done created directory destination ./ file2.txt dir1/ dir1/dir2/ dir1/dir2/file3.txt dir3/
Verifikasi direktori tujuan untuk memastikan file dan direktori yang tercantum dalam file exception-list.txt tidak dicadangkan.
$ find destination destination destination/file2.txt destination/dir1 destination/dir1/dir2 destination/dir1/dir2/file3.txt destination/dir3