Bagaimana saya bisa mengecualikan file secara default dengan rsync?


12

Bagaimana saya bisa mengecualikan file secara default dengan rsync? Berikut adalah bagaimana sintaks rsync normal saya dimulai:

rsync --exclude ".ht*" --exclude "error_log" --exclude ".DS*" --exclude "old" ...

Saya telah melihat banyak menyebutkan konfigurasi /etc/rsyncd.conffile, tapi mungkin itu lebih untuk daemon daripada perintah rsync.

Apakah mungkin untuk memiliki beberapa pengecualian standar untuk rsync ketika dipanggil dari baris perintah seperti pada sintaks default saya di atas?

Jawaban:


10

Tambahkan pengecualian Anda ke file, lalu gunakan --exclude-from = / path / ke / exclude_file

misalnya

# cat rsync.excludes
.ht*
error_log
.DS*
old
...

# rsync --exclude-from=rsync.excludes

1
Sepertinya sintaksnya --exclude-fromdan tidak --exclude-filetetapi sebaliknya ini tampaknya menjadi tiket. Terima kasih!
cwd

5

Tidak, rsynctidak memiliki file konfigurasi default yang akan dibaca setelah pemanggilan. Yang terbaik yang dapat Anda lakukan adalah apa yang dikatakan @ frogstarr78 dan buat file teks dengan pola, nama file dan direktori untuk dikecualikan, lalu arahkan rsyncke sana dengan --exclude-from=filename.


2
rsync does not have a default configuration file- itu mengecewakan
cwd

3

Meskipun rsync tidak membiarkan Anda menetapkan opsi default, Anda dapat membuat skrip wrapper dan menempatkannya lebih tinggi di $ PATH Anda daripada biner rsync.

Ini adalah pembungkus rsync saya yang hidup di ~/bin/rsync

#!/bin/sh

# Set path to the rsync binary
RSYNC=/usr/bin/rsync

# Look for these exclude files
IGNORE_FILES=(~/.rsyncignore ./.gitignore ./.rsyncignore)

EXCLUDE_FROM=""
for f in ${IGNORE_FILES[@]}; do
  if [[ -e $f ]]; then
    EXCLUDE_FROM="$EXCLUDE_FROM --exclude-from=$f "
  fi
done
$RSYNC $EXCLUDE_FROM "$@"

Ini akan mencari ~/.rsyncignore, ./.gitignore, ./.rsyncignorefile dan, jika salah satu dari mereka ada, menggunakannya sebagai default --exclude-fromargumen.

Cukup ganti RSYNC dan IGNORE_FILES agar sesuai dengan lingkungan dan preferensi Anda.


0

--exclude "/ *" akan mengecualikan semuanya secara default. Berikut ini sebuah contoh:

rsync -av --include "bin /" --exclude "/ *" / source_dir / / dest_dir /
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.