rsync จะลบไฟล์โฟลเดอร์ที่ปลายทางโดยค่าเริ่มต้นหรือไม่?


44

ไฟล์

สมมติว่า/foo/srcมีเพียงA.cและ/foo/destมีทั้งและA.c B.cและสมมติว่าฉันใช้คำสั่งต่อไปนี้:

rsync /foo/src/ /foo/dest

จะrsyncลบB.cหรือไม่

โฟลเดอร์

ตอนนี้สมมติว่า/foo/srcมีไดเรกทอรีที่Aมีไฟล์อยู่ข้างในและ/foo/destมีทั้งไดเรกทอรีAและBแต่ละไฟล์มีบางส่วนอยู่ในนั้น และสมมติว่าฉันรันคำสั่งต่อไปนี้ (ตัวเลือก -a รวมถึง -r, เรียกซ้ำ)

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

จะrsyncลบBและเนื้อหาของมันหรือไม่


คุณต้องการ--deleteสวิตช์
fideli

คำตอบ:


51

โดยค่าเริ่มต้น rsync จะไม่ลบไฟล์ แต่ขึ้นอยู่กับตัวเลือกคำสั่งที่คุณระบุ คุณสามารถใช้สิ่งต่อไปนี้หากคุณต้องการลบไฟล์:

  • −−del (นามแฝงสำหรับ eldelete − ระหว่าง)
  • eldelete (ลบไฟล์ที่ไม่เกี่ยวข้องจาก dest dirs)
  • eldelete − before (ตัวรับลบก่อน xfer [ค่าเริ่มต้น])
  • −−delete − ระหว่าง (ผู้รับลบระหว่าง xfer ไม่ใช่ก่อนหน้า)
  • eldelete − after (ผู้รับลบหลังจาก xfer ไม่ใช่ก่อนหน้า)
  • eldelete − แยกออก (รวมถึงลบไฟล์ที่แยกออกจาก dest dirs)
  • −−max − delete = NUM ​​(อย่าลบมากกว่า NUM ไฟล์)

เมื่อคุณเรียกใช้ตัวเลือก-aโดยเฉพาะนี่คือสิ่งที่หน้า man พูด

,a, −−archive >

นี้จะเทียบเท่ากับ-rlptgoD มันเป็นวิธีที่รวดเร็วในการบอกว่าคุณต้องการเรียกซ้ำและต้องการรักษาเกือบทุกอย่าง (โดยที่ beingH เป็นสิ่งที่น่าสังเกต) ข้อยกเว้นสำหรับความเท่ากันข้างต้นคือเมื่อระบุ −− ไฟล์ − จากในกรณีที่ −r ไม่ได้บอกเป็นนัย

โปรดทราบว่า−a ไม่เก็บรักษาลิงก์ถาวรเนื่องจากการค้นหาไฟล์ที่เชื่อมโยงหลายรายการมีราคาแพง คุณต้องแยกระบุ-H

ดังนั้นดูเหมือนว่าคำตอบสำหรับคำถามของคุณคือไม่มันจะไม่ถูกลบออกจากตัวอย่างของคุณ
HTH

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.