Apa yang akan --delete-exclude lakukan untuk rsync?

32

Saya menggunakan rsync dengan senang hati untuk membuat cadangan server saya, meskipun saya punya pertanyaan tentang --delete-excludedparameter.

/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded     --rsh=/usr/bin/ssh root@server01:/etc /.snapshot/hourly.0/server01

Dari man rsync:

 --delete-excluded       also delete excluded files from dest dirs

Bagi saya, yang bukan asli bahasa Inggris, ini berarti bahwa rsync akan menghapus direktori yang dikecualikan dari direktori tujuan aktual pada server jarak jauh, jadi jika saya memiliki /home/backupdan /home/settingsdalam folder pengecualian saya, folder tersebut akan dihapus dari server jarak jauh ,.

Dari beberapa sumber lain tampaknya akan menghapus file dari folder cadangan lokal untuk menghemat ruang. Misalnya, Anda dapat membuat cadangan kecil di server itu sendiri dan mengecualikan data ini, sehingga Anda tidak akan membuang-buang ruang penyimpanan.

Sangat penting bagi saya meskipun rsync akan melakukan pekerjaan itu hanya satu arah karena orang mengatakan itu dimaksudkan untuk bekerja, saya tidak ingin mengambil risiko dalam memiliki perangkat lunak yang menghapus file / direktori pada server jarak jauh.

ujjain
sumber

Jawaban:

37

Penafsiran Anda benar. Jika Anda memiliki file atau direktori yang dikecualikan dari ditransfer, --delete-dikecualikan akan menghapusnya dari sisi tujuan (ini tidak harus menjadi "server jauh", Anda dapat menggunakan rsyncuntuk menyalin dari server ke komputer lokal) jika itu menemukan mereka di sana. Misalnya, jika Anda menggunakan --exclude=*.o --delete-excluded, maka jika rsync menemukan file yang berakhiran .o di sisi tujuan, ia akan menghapusnya apakah ada di direktori sumber atau tidak.

DerfK
sumber
1
Jadi itu akan menghapus direktori / file dari /.snapshot/hourly.0/server01 dan bukan server jauh?
ujjain
3
@ Syncoz Jika Anda menyalin dari server jauh ke komputer lokal, maka tujuannya adalah komputer lokal. Jika Anda menyalin dari komputer lokal ke server jarak jauh, maka tujuannya adalah server jarak jauh. Tujuan inilah yang penting di sini. Jika tujuannya adalah server jarak jauh, maka itu akan menghapus file dari server jarak jauh.
DerfK
Konfirmasi di sini: comentum.com/rsync.html
SDsolar
1
Saya baru-baru ini menemukan bahwa "--delete-dikecualikan" sepenuhnya sama dengan "--delete --delete-dikecualikan". Dalam contoh jawaban yang diberikan di atas, file jarak jauh yang tidak ada di sisi sumber juga akan dihapus.
Wayne