GNU/Linux >> Belajar Linux >  >> Linux

Cara menyalin direktori secara rekursif menggunakan rsync sambil mengecualikan file tertentu

Pertanyaan :Bagaimana cara menyalin folder secara rekursif sambil mengecualikan folder/file tertentu saat menggunakan rsync?

Pada umumnya kita menggunakan perintah 'cp' untuk menyalin file, namun sayangnya perintah 'cp' tidak memiliki fitur "exclude", jadi kita perlu menulis beberapa skrip untuk mengecualikan file yang tidak diinginkan, atau kita dapat menggunakan alat lain ' rsync'.

Dari halaman manual perintah rsync:

$ man rsync
...
  -r, --recursive             recurse into directories
  --exclude=PATTERN           exclude files matching PATTERN

Sintaks perintah rsync untuk menyalin direktori sementara mengecualikan file/direktori tertentu adalah seperti yang ditunjukkan di bawah ini:

$ rsync -r --exclude 'file_path' 'SRC' 'DEST'

Misalnya, jika kita tidak ingin menyalin semua file folder oracle ke oraclebak kecuali ‘oracle/oradata/rmanbackup’:

$ du -sh oracle/*
40K oracle/extapi
1.1G oracle/oradata                    ------> sub directory of oracle
4.0K oracle/test1
4.0K oracle/test2
4.0K oracle/test3
4.0K oracle/test4
4.0K oracle/test5
# du -sh oracle/oradata/*
4.0K oracle/oradata/date1
4.0K oracle/oradata/date2
4.0K oracle/oradata/date3
4.0K oracle/oradata/date4
4.0K oracle/oradata/date5
1.1G oracle/oradata/rmanbackup  -------> we need to exclude this directory

Jalur pengecualian adalah jalur relatif file di bawah 'SRC', mis. kami ingin mengecualikan "oracle/oradata/rmanbackup", dan direktori induknya adalah oracle, jadi jalur pengecualiannya adalah 'oradata/rmanbackup':

# rsync -r --exclude 'oradata/rmanbackup' oracle/ oraclebak
# du -sh oraclebak/oracle/*
40K oraclebak/oracle/extapi
24K oraclebak/oracle/oradata
4.0K oraclebak/oracle/test1
4.0K oraclebak/oracle/test2
4.0K oraclebak/oracle/test3
4.0K oraclebak/oracle/test4
4.0K oraclebak/oracle/test5

Anda juga dapat menggunakan opsi “–exclude-from=FILE ” jika Anda memiliki lebih banyak file/direktori untuk dikecualikan. Dalam hal ini, Anda hanya perlu membuat daftar file/direktori yang akan dikecualikan dalam file dan memberikan jalur file ke opsi “–exclude-from="

# man rsync
--exclude-from=FILE     read exclude patterns from FILE

Misalnya:

# rsync -r --exclude-file=/tmp/exclude_list oracle/ oraclebak

Di sini,
/tmp/exclude_list berisi daftar file/direktori yang akan dikecualikan saat menyalin yang lain.


Linux
  1. Bagaimana Cara Menyalin File Secara Rekursif Dengan Ekstensi File??

  2. Menggunakan rsync untuk Menyinkronkan File

  3. Cara menyalin banyak file secara bersamaan menggunakan scp

  1. Bagaimana cara menggunakan perintah Rsync di linux?

  2. Bagaimana cara menyalin direktori ke direktori menggunakan install di bash?

  3. Bisakah scp menyalin direktori secara rekursif?

  1. Cara Menyalin File dan Direktori di Linux

  2. Cara Menggunakan rsync untuk Mengecualikan File dan Direktori dalam Transfer Data

  3. Cara Mengecualikan Direktori Tertentu Dari Menyalin Di Linux