Score:1

ไม่ได้รับผลลัพธ์ที่ถูกต้องเมื่อใช้ rsync --delete

ธง ng

ฉันพยายามลบไฟล์โดยใช้ rsync --delete แต่ฉันยังคงได้รับผลลัพธ์นี้

ภาพหน้าจอของ cli

sudodus avatar
jp flag
`rsync` ไม่ใช่เครื่องมือลบทั่วไป เป็นเครื่องมือคัดลอกเพื่อคัดลอก/อัปเดตแผนผังไดเร็กทอรีเป้าหมายด้วยไฟล์ใหม่หรือไฟล์ที่อัปเดตในแผนผังไดเร็กทอรีต้นทางที่เกี่ยวข้อง ตัวเลือก `--delete` คือ 'only' เพื่อซิงโครไนซ์ นั่นคือการลบไฟล์ในเป้าหมาย หากไฟล์ที่เกี่ยวข้องในซอร์สถูกลบไปแล้ว
sudodus avatar
jp flag
`rm` 'remove' เป็นเครื่องมือ Linux มาตรฐานในการลบนามแฝง ลบไฟล์: ตามภาพหน้าจอของคุณ คุณสามารถลอง `rm /tmp/backup/foto3.txt` หรือใช้จุดตรวจสอบเพื่อยืนยัน `rm -i /tmp /backup/foto3.txt`
Siebren De Coster avatar
ng flag
@sudodus เพื่อที่จะใช้ --delete ฉันต้องลบไฟล์ต้นฉบับออกจากไดเร็กทอรีดั้งเดิมหรือไม่
Score:0
ธง jp

rsync -- ลบ

@sudodus เพื่อที่จะใช้ --delete ฉันต้องลบไฟล์ต้นฉบับออกจากไดเร็กทอรีดั้งเดิมหรือไม่

ใช่แต่ฉันจะบอกว่าความตั้งใจนั้นตรงกันข้าม: มันจะช่วยให้คุณลบไฟล์ในเป้าหมาย เมื่อคุณลบไฟล์ที่เกี่ยวข้องในต้นทางแล้ว

หากคุณต้องการหลีกเลี่ยงการคัดลอกไฟล์บางไฟล์ (แต่เก็บไว้ในแหล่งที่มา) คุณสามารถใช้ --ไม่รวม.


รีซิงค์ ไม่ใช่เครื่องมือลบทั่วไป เป็นเครื่องมือคัดลอกเพื่อคัดลอก/อัปเดตแผนผังไดเร็กทอรีเป้าหมายด้วยไฟล์ใหม่หรือไฟล์ที่อัปเดตในแผนผังไดเร็กทอรีต้นทางที่เกี่ยวข้อง เดอะ --ลบ ตัวเลือกคือ 'เท่านั้น' เพื่อซิงโครไนซ์ นั่นคือการลบไฟล์ในเป้าหมาย หากไฟล์ที่เกี่ยวข้องในต้นทางถูกลบไปแล้ว

ดูคำอธิบายโดยละเอียดในคู่มือ ผู้ชาย rsync

        --delete ลบไฟล์ที่ไม่เกี่ยวข้องออกจาก dest dirs
        --delete-before receiver ลบก่อน xfer ไม่ใช่ระหว่าง
        --delete-during ผู้รับ ลบระหว่างการถ่ายโอน
        --delete-delay ค้นหาการลบระหว่าง ลบหลัง
        --delete-after receiver ลบหลังจากการโอน ไม่ใช่ระหว่าง
        --delete-excluded ยังลบไฟล์ที่แยกออกจาก dest dirs
        --ignore-missing-args ละเว้น args ที่มาที่ขาดหายไปโดยไม่มีข้อผิดพลาด
        --delete-missing-args ลบ args ต้นทางที่ขาดหายไปจากปลายทาง


   --ลบ
          สิ่งนี้บอกให้ rsync ลบไฟล์ที่ไม่เกี่ยวข้องออกจากการรับ
          ฝั่ง (ที่ไม่ใช่ฝั่งส่ง) แต่สำหรับฝั่งนั้นเท่านั้น
          ไดเร็กทอรีที่กำลังซิงโครไนซ์ คุณต้องถามแล้ว
          rsync เพื่อส่งไดเร็กทอรีทั้งหมด (เช่น "dir" หรือ "dir/") โดยไม่ต้อง
          การใช้ไวด์การ์ดสำหรับเนื้อหาของไดเร็กทอรี (เช่น "dir/*")
          เนื่องจากไวด์การ์ดถูกขยายโดยเชลล์และ rsync จึงได้รับ
          คำขอโอนแต่ละไฟล์ ไม่ใช่ไฟล์หลัก
          ไดเรกทอรี ไฟล์ที่ไม่รวมอยู่ในการถ่ายโอนก็เช่นกัน
          ยกเว้นจากการถูกลบ เว้นแต่คุณจะใช้ --delete-excluded
          ตัวเลือกหรือทำเครื่องหมายกฎว่าตรงกับด้านการส่งเท่านั้น
          (ดูตัวแก้ไขรวม/ไม่รวมในส่วนกฎตัวกรอง)

          ก่อน rsync 2.6.7 ตัวเลือกนี้จะไม่มีผลเว้นแต่
          --recursive ถูกเปิดใช้งาน เริ่มตั้งแต่ 2.6.7 การลบจะ
          ยังเกิดขึ้นเมื่อเปิดใช้งาน --dirs (-d) แต่สำหรับไดเร็กทอรีเท่านั้น
          ที่มีการคัดลอกเนื้อหา

          ตัวเลือกนี้อาจเป็นอันตรายได้หากใช้ไม่ถูกต้อง! มันเป็นมาก
          เป็นความคิดที่ดีที่จะลองรันโดยใช้ตัวเลือก --dry-run (-n) เป็น
          ดูว่าไฟล์ใดที่จะถูกลบ

          หากฝ่ายส่งตรวจพบข้อผิดพลาด I/O แสดงว่าทำการลบ
          ไฟล์ใดๆ ที่ปลายทางจะถูกปิดโดยอัตโนมัติ
          นี่คือการป้องกันความล้มเหลวของระบบไฟล์ชั่วคราว (เช่น NFS
          ข้อผิดพลาด) ที่ฝั่งส่งจากการทำให้เกิดการลบจำนวนมาก
          ไฟล์ที่ปลายทาง คุณสามารถลบล้างสิ่งนี้ด้วย
          --ignore-ข้อผิดพลาดตัวเลือก

          ตัวเลือก --delete อาจรวมกับตัวเลือกใดตัวเลือกหนึ่ง
          --delete-WHEN ตัวเลือกที่ไม่มีข้อขัดแย้งเช่นเดียวกับ
          --ลบ-ไม่รวม อย่างไรก็ตามหากไม่มี --delete-WHEN
          มีการระบุตัวเลือก rsync จะเลือก --delete-during
          อัลกอริทึมเมื่อพูดคุยกับ rsync 3.0.0 หรือใหม่กว่า และ
          --delete-before อัลกอริทึมเมื่อพูดคุยกับ rsync ที่เก่ากว่า ดู
          ยัง --delete-delay และ --delete-after

rm 'remove' เป็นเครื่องมือ Linux มาตรฐานในการลบ alias ลบไฟล์

สอดคล้องกับภาพหน้าจอของคุณ คุณสามารถลอง

rm /tmp/backup/foto3.txt

หรือมีด่านเพื่อยืนยัน

rm -i /tmp/backup/foto3.txt
Jags avatar
kp flag
สวัสดี @sudodus คุณช่วยขยายความใน `--exclude` ได้โปรด สมมติว่า "แหล่งที่มา" และ "เป้าหมาย" ซิงค์กันโดยใช้ "rsync" ทั้งสองมี 3 ไฟล์: `a.txt b.txt c.txt` ตอนนี้ฉันต้องการเก็บ `a.txt` ไว้ใน `source` แต่ไม่อยู่ใน `target` และต้องการลบ `c.txt` ออกจาก `source` แต่ต้องการเก็บไว้ใน `target` ดังนั้นฉันควรใช้ `--exclude` อย่างไร ขอบคุณมาก.
sudodus avatar
jp flag
@Jags โปรดสร้างคำถามของตัวเองและเชื่อมโยงไปยังคำถามนี้ เพื่อให้ฉันค้นหาได้ง่าย และฉันจะพยายามอธิบาย

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา