Apakah rsync menghapus file, folder di tujuan secara default?

44

File

Misalkan /foo/srchanya berisi A.cdan yang /foo/destmengandung keduanya A.cdan B.c. Dan seandainya saya menjalankan perintah berikut:

rsync /foo/src/ /foo/dest

Akan rsyncdihapus B.c?

Folder

Sekarang anggaplah itu /foo/srcberisi direktori Adengan beberapa file di dalamnya dan yang /foo/destberisi direktori Adan B, masing-masing dengan beberapa file di dalamnya. Dan misalkan saya menjalankan perintah berikut (opsi -a termasuk -r, rekursif):

rsync -a /foo/src/ /foo/dest

Akan rsyncdihapus Bdan isinya?

Crowder
sumber
Anda membutuhkan --deletesakelar.
fideli

Jawaban:

51

Secara default, rsync tidak menghapus file tetapi itu tergantung pada opsi perintah yang Anda tentukan. Anda dapat menggunakan hal-hal berikut jika Anda INGIN menghapus file:

  • −−del (alias untuk −−delete − selama)
  • −−delete (menghapus file asing dari direktori tujuan)
  • −−delete − before (penerima dihapus sebelum xfer [default])
  • −−delete − selama (penerima menghapus saat xfer, bukan sebelumnya)
  • −−delete − after (penerima menghapus setelah xfer, bukan sebelumnya)
  • −−delete − dikecualikan (juga hapus file yang dikecualikan dari dest dirs)
  • −−max − delete = NUM ​​(jangan hapus lebih dari NUM file)

Karena Anda secara khusus memanggil opsi -a , inilah yang dikatakan halaman manual

−a, −−archive >

Ini sama dengan −rlptgoD . Ini adalah cara cepat untuk mengatakan bahwa Anda ingin rekursi dan ingin mempertahankan hampir semua hal (dengan −H merupakan kelalaian yang menonjol). Satu-satunya pengecualian untuk kesetaraan di atas adalah ketika ilesfile − dari ditentukan, dalam hal ini −r tidak tersirat.

Perhatikan bahwa −a tidak menyimpan hardlink , karena menemukan file yang ditautkan dengan banyak tautan mahal. Anda harus menentukan secara terpisah −H .

Jadi sepertinya jawaban untuk pertanyaan Anda adalah TIDAK, itu tidak akan dihapus dengan memberikan contoh Anda.
HTH

SaxDaddy
sumber