การใช้เชลล์สคริปต์เพื่อตรวจสอบว่า rsync ทำการเปลี่ยนแปลงหรือไม่


10

ฉันมีสคริปต์ทุบตีที่ rsync สองไดเรกทอรี บางครั้งมีการเปลี่ยนแปลงโอกาสก็ไม่มีอะไร

ฉันต้องการรันคำสั่งเฉพาะในกรณีที่ rsync ทำการเปลี่ยนแปลงจริง (เพิ่ม / อัปเดตไฟล์) มิฉะนั้นฉันต้องการข้าม มีการตอบกลับที่ฉันควรจะดูหรือไม่?

คำตอบ:


11

หากคุณใช้ตัวเลือก -i (และไม่ใช้ตัวเลือก -v) rsync จะพิมพ์บรรทัดไปที่ STDOUT สำหรับการเปลี่ยนแปลงที่ทำไว้เท่านั้น ขึ้นอยู่กับสคริปต์ของคุณซึ่งอาจมีลักษณะเช่นนี้

if [ -n "$(rsync -i /dir1 /dir2)" ]; then
  run_command;
fi

ดูเหมือนว่าจะทำสิ่งที่ฉันต้องการ ... ขอบคุณ ไม่คิดว่าจะใช้แฟล็ก -i อย่างนั้น
raccettura

ชี้แจงถ้าคุณต้องการที่จะเรียกใช้สคริปต์เท่านั้นถ้ามีการเปลี่ยนแปลงที่ถูกสร้างขึ้นมาแล้วควรจะเป็น== !=
hamx0r

อย่างที่มันเป็นรหัสนี้ผิดจากสิ่งที่ฉันได้เห็น สำหรับรหัสนั้นคุณจะได้รับมัน Rsync ใช้งาน FINE หรือ HAS ERROR แต่รหัสนี้ไม่ได้ตรวจสอบว่ามีการเปลี่ยนแปลงหรือไม่ ฉันไม่รู้ว่า Rsync เวอร์ชันอื่นสามารถทำได้หรือไม่ แต่ฉันกำลังใช้ RSYNC ใน Raspbmc (การติดตั้งเก่าที่เรามี) และ OSMC นี่เป็นเรื่องน่าเศร้าเนื่องจาก RSYNC ดูเหมือนจะเป็นเครื่องมือที่ยอดเยี่ยม

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