ใช้ rsync ซ้ำ - เอาต์พุตที่รันช้าเพื่อเพิ่มความเร็วในการถ่ายโอนจริงในภายหลัง


23

ฉันมักจะทำก่อนที่จะทำจริงrsync -n rsyncสิ่งคือฉันจะทำให้การรันครั้งที่สองโดยอัตโนมัติเพื่อนำรายการที่สร้างขึ้นมาใหม่ได้--dry-runอย่างไร

ฉันหมายความว่าถ้าฉันวิ่งrsync -nแล้วฉันจะได้รับการจำลองว่าrsyncจะทำอย่างไรความคิดของฉันก็คือเอาผลลัพธ์นั้นมาประมวลผลมันก็จะสร้างrsyncเฉพาะ--include-fromผลผลิตนั้นดังนั้นรายการทั้งหมดจะต้องคำนวณเพียงครั้งเดียว

หากนี่ไม่สมเหตุสมผลโปรดแจ้งให้เราทราบ

rsync -hva --progress --stats --delete --exclude-from "$EXCLUDEFILE"โดยวิธีการที่ฉันมักจะใช้ หากคุณมีข้อเสนอแนะเกี่ยวกับตัวเลือกที่คุณจะใช้โปรดแจ้งให้เราทราบ ฉันพยายามทำซ้ำเนื้อหาของฮาร์ดไดรฟ์ภายนอก (ซึ่งมีเฉพาะภาพวิดีโอและเอกสาร) ไปยังฮาร์ดไดรฟ์ภายนอกอื่น


คุณอาจจะลองเปลี่ยนเส้นทางออกจากที่--dry-runคำสั่งลงในไฟล์ (เช่นrsync --dry-run -avz SOURCE DEST > include.txt) ลบทุกสายที่ไม่ได้ไฟล์ / เส้นทางจาก include.txt rsync --include-from include.txtและทำงาน
ThatGuy

rsync --include-from include.txt --exclude=* SOURCE DESTคำสั่งสุดท้ายที่ควรจะเป็น ดูstackoverflow.com/a/19296415/1765910สำหรับรายละเอียด
ThatGuy

ใช่มันเป็นความคิด แต่ฉันไม่รู้ว่าจะทำอย่างไร (จริง ๆ แล้วฉันต้องการได้รับการอนุมัติจากใครบางคนที่รู้ว่าเขากำลังทำอะไรอยู่) ฉันแค่ใช้rsyncแต่ไม่รู้อะไรเลยจาก shell script / bash …
Manuel

คำตอบ:


18

เป็นไปได้อย่างแน่นอนที่จะใช้รายการไฟล์ที่สร้างขึ้นในระหว่างการรันแบบแห้งเป็นไฟล์รวม อย่างไรก็ตามในอุดมคติแล้วควรลบบรรทัดพิเศษที่ด้านบนและด้านล่างของเอาต์พุตแบบรันไทม์

ตัวอย่างผลลัพธ์:

sending incremental file list
[LIST OF FILES]

sent 226 bytes  received 34 bytes  520.00 bytes/sec
total size is 648,373,274  speedup is 2,493,743.36 (DRY RUN)

ในการลบบรรทัดเหล่านี้ท่อrsyncส่งออกเข้าสู่head tailจากนั้นบันทึกเอาต์พุตที่ประมวลผลไปยังไฟล์ include:

rsync --dry-run -avz source/ destination/ | head --lines=-3 | tail --lines=+3 > include.txt

สุดท้ายบอกrsyncให้ใช้ไฟล์รวมที่สร้างขึ้น (เพิ่มตัวเลือกเพิ่มเติมตามต้องการ):

rsync --include-from=include.txt --exclude=* source/ dest/


ปัญหานี้คือมันไม่ได้รับมือกับไฟล์ที่ควรจะลบ และเป็นวิธีการtail/ headที่แข็งแกร่งพอที่จะให้แน่ใจว่ามีเพียงรายการไฟล์หรือไม่
มานูเอล

การเพิ่ม--deleteสาเหตุจะทำให้ไฟล์ถูกลบออกจากไดเรกทอรีต้นทางที่จะลบออกจากไดเรกทอรีปลายทางเช่นกันอย่างน้อยในคอมพิวเตอร์ที่ฉันลองใช้ คุณสามารถออกจากtail/ headส่วนทั้งหมด rsyncตีความแต่ละบรรทัดในไฟล์รวมเป็นชื่อไฟล์และไม่สนใจไฟล์ที่ไม่มีอยู่ดังนั้นจะไม่มีอะไรเกิดขึ้นถ้าคุณเก็บบรรทัดเพิ่มเติม (เว้นแต่คุณจะมีไฟล์ชื่อ "ส่งรายชื่อไฟล์แบบเพิ่มหน่วย") ฯลฯ ไฟล์เหล่านี้จะถูกคัดลอกเช่นกัน)
ThatGuy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.