ใครสามารถบอกฉันว่าสิ่งนี้ทำอะไร?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
มันลบbkp01
และoffbk2
และส่งบันทึกไปoffbkp01.log
?
ใครสามารถบอกฉันว่าสิ่งนี้ทำอะไร?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
มันลบbkp01
และoffbk2
และส่งบันทึกไปoffbkp01.log
?
คำตอบ:
หากต้องการแยกส่วนนี้ออกเป็นส่วน ๆ มีสองส่วนหลักตามด้วยบทสรุปและบันทึกย่อ:
rsync
สั่ง:rsync -uva --delete /srv/bkp01 /srv/offbk2/
rsync-command > ~/offbkp01.log
rsync
คำสั่ง:rsync
- ฉันถือว่าสิ่งนี้ไม่จำเป็นต้องมีคำอธิบายใด ๆ-uva
- ชุดตัวเลือกอักขระเดียวเป็น (แบบสั้นและยาวที่แสดง):
-u
--update
- บอก rsync ว่าการปรับเปลี่ยนทั้งหมดควรใช้กับไฟล์บนปลายทางที่มีอายุเท่ากัน (และขนาดต่างกัน) หรือเก่ากว่าเก่ากว่าที่อยู่บนแหล่งที่มา นั่นคือ rsync ควรส่งต่อการเปลี่ยนแปลงจากแหล่งที่จะอัปเดตปลายทาง แต่ไม่ควรทำการเปลี่ยนแปลงใด ๆ ที่จะทำให้ไฟล์ปลายทางกลายเป็นเวอร์ชันเก่ากว่า
มีข้อยกเว้นบางประการ ความแตกต่างของประเภท (เช่นหนึ่งไฟล์เป็นอีกแฟ้มหนึ่งเป็นไดเรกทอรี) จะทำให้เกิดการอัปเดตโดยไม่คำนึงถึงวันที่ Symlinks และไฟล์พิเศษอื่น ๆ ไม่สนใจตัวเลือกนี้ และที่สำคัญสิ่งนี้ไม่ส่งผลกระทบต่อไฟล์ที่ถูกลบ
-v
--verbose
- เพิ่มจำนวนของข้อมูล rsync ที่พิมพ์ออกมาในขณะที่ดำเนินการ หากไม่มีสิ่งนี้ rsync จะพิมพ์ (เกือบ?) ไม่มีอะไร ด้วยตัวเลือกนี้ as-is, rsync จะบอกคุณว่าไฟล์ใดที่กำลังถูกถ่ายโอนและใส่บทสรุปในตอนท้าย เพิ่มเติมv
s เพิ่มข้อมูลที่พิมพ์แม้ว่าหน้าคนพูดมากกว่าสองv
ควรนำมาใช้เฉพาะเมื่อการแก้จุดบกพร่อง -a
--archive
- นี่เทียบเท่ากับตัวเลือกอื่น ๆ ( -rlptgD
) ที่รวมกัน ตามชื่อแบบยาวมันเป็นวิธีที่รวดเร็วในการตั้งค่าตัวเลือกทั่วไปมากมายสำหรับการเก็บถาวรไฟล์และไดเรกทอรี มันจะ:-r
--recursive
- บอก rsync เพื่อคัดลอกไดเรกทอรีซ้ำ หากไม่มี-d
--dirs
ตัวเลือกนี้หรือตัวเลือกที่เจาะจงมากขึ้นrsync ก็จะข้ามไดเรกทอรีใด ๆ ที่พบ (และบอกคุณเกี่ยวกับมันในเอาต์พุต) -l
--links
- เมื่อแหล่งที่มาคือ symlink สร้าง symlink บนปลายทาง ขึ้นอยู่กับตัวเลือกอื่น ๆ symlink อาจถูกข้ามหรือทำเป็นสำเนาแยกต่างหาก (เช่นไดเรกทอรีจริงที่มีเนื้อหา (หรือสำเนาของไฟล์อื่น) แทน symlink) -p
--perms
- ตั้งค่าการอนุญาตของไฟล์ปลายทางให้เหมือนกับไฟล์ต้นฉบับ -t
--times
- ตั้งค่าเวลาการแก้ไขของไฟล์ปลายทางให้เหมือนกับไฟล์ต้นฉบับ เนื่องจากการซิงค์เวลาเหล่านี้ทำให้อัลกอริทึม rsync มีประสิทธิภาพมากขึ้นโดยทั่วไปคุณต้องการให้ใช้อย่างชัดเจนหรือโดยปริยาย -g
--group
- ตั้งค่าแอตทริบิวต์กลุ่มของปลายทางให้เหมือนกับแหล่งที่มา เชื่อมโยงโดยใช้ชื่อตามค่าเริ่มต้น แต่จะถอยกลับไปยังหมายเลข ID กลุ่มในบางสถานการณ์ หากการรับ rsync ไม่ได้ทำงานในฐานะผู้ใช้ขั้นสูง (หรือแกล้งทำด้วย--fake-super
) เฉพาะกลุ่มที่ผู้ใช้ที่เรียกใช้ rsync ที่ด้านการรับเท่านั้นที่สามารถเป็นสมาชิกได้ มิฉะนั้นกลุ่มจะถูกตั้งค่าเป็นกลุ่มเริ่มต้นของผู้ใช้เดียวกันที่กล่าวถึงก่อนหน้านี้ -D
- เทียบเท่ากับตัวเลือก--devices
และ--specials
ร่วมกัน พวกเขาหมายถึง:--devices
- ถ่ายโอนไฟล์ตัวละครและอุปกรณ์บล็อก จะไม่มีผลใด ๆ หากrsync ที่ได้รับนั้นไม่ได้ทำงานแบบผู้ใช้ระดับสูง (หรือแกล้งทำด้วย--fake-super
) --specials
- ถ่ายโอนไฟล์พิเศษ (เช่นซ็อกเก็ต) (ไม่เช่นนั้นจะเป็น) --delete
- บอก rsync เพื่อลบไฟล์ที่อยู่ในปลายทาง แต่ไม่ได้อยู่ในแหล่งที่มา สิ่งนี้ไม่ได้รับผลกระทบจากตัวเลือกการอัปเดตที่ตั้งไว้ข้างต้น (จริง ๆ แล้วมันเป็นอย่างไรบ้างเนื่องจากระบบไฟล์ส่วนใหญ่จะไม่เก็บข้อมูลที่จำเป็นเพื่อดูว่าการกระทำใดที่ใหม่กว่า? ตัวเลือกนี้ทำงานกับแหล่งที่มาหลังจากการขยาย wildcard / glob ดังนั้น dir / * จึงไม่เหมือนกับ dir / หมายเหตุสำคัญบางประการ:--dry-run
ตัวเลือกก่อนซึ่งจะทำการโอนหลอกที่ช่วยให้คุณมั่นใจได้ว่าไม่มีการเปลี่ยนแปลงที่ไม่ตั้งใจ --ignore-errors
ตัวเลือกแม้ว่าคุณอาจไม่ต้องการ / ไม่ต้องการทำเช่นนั้น--delete-during
จะมีการใช้อัลกอริทึม หากตัวรับสัญญาณมีอายุมากกว่า--delete-before
จะใช้งาน หากเป็นสิ่งสำคัญที่ไฟล์จะต้องมีความสอดคล้องที่แน่นอนควรเกิดข้อผิดพลาด (เช่นไม่ลบอะไรเลยจนกว่าจะมีการเปลี่ยนแปลงอื่น ๆ ทั้งหมด) คุณควรใช้ตัวเลือกที่เฉพาะเจาะจงมากกว่าแบบเริ่มต้น/srv/bkp01
- ไฟล์ต้นฉบับหรือไดเรกทอรี มีกฎบางอย่างโดยละเอียดเกี่ยวกับความหมายถ้ามี / ไม่มีเครื่องหมายสแลชที่ท้ายไดเรกทอรีและถ้ามีไดเรกทอรีอื่นอยู่ คุณสามารถดูส่วนการใช้งานของหน้า man สำหรับรายละเอียด แต่ที่นี่ขาดเครื่องหมายทับหมายความว่าไดเรกทอรีนี้จะถูกคัดลอกไปยังปลายทางมากกว่าเนื้อหาของไดเรกทอรีนี้จะถูกคัดลอกไปยังปลายทาง เหมือนกันถ้านี่เป็นไฟล์แทนที่จะเป็นไดเร็กตอรี่/srv/offbk2/
- ไดเรกทอรีปลายทาง โดยทั่วไปนี่จะเป็นรายการสุดท้ายที่ปรากฏในส่วนคำสั่ง rsync ยกเว้นว่ามีการใช้ตัวเลือกเพื่อระบุที่อื่นในคำสั่ง>
- สิ่งนี้จะเปลี่ยนเส้นทาง stdout (เอาต์พุตมาตรฐาน) จากสิ่งที่อยู่ทางซ้ายไปยังไฟล์ทางด้านขวากลายเป็นเนื้อหาและสร้างไฟล์ (ถ้าเป็นไปได้) หากยังไม่มีอยู่ หมายเหตุบางส่วน:2>&1
ไปยังส่วนท้ายสุดของคำสั่งด้านบน การสั่งซื้อเป็นสิ่งสำคัญดังนั้นโปรดใช้ความระมัดระวังในการวางตำแหน่งที่จะวางไว้ หมายเลขเวทย์มนตร์1
หมายถึง stdout 2
หมายถึง stderr &
คือ "ที่อยู่ของ" และส่วนคำสั่งเต็มหมายถึง "เปลี่ยนเส้นทางการส่งออกของ stderr ไปสู่สตรีม stdout" >>
แทน วิธีการเปลี่ยนเส้นทาง stderr ไปยังตำแหน่งเดิมยังคงเหมือนเดิม 1> stdout_file 2> stderr_file
ไปยังสถานที่ที่แตกต่างกันโดยใช้ คุณยังสามารถใช้>>
แทน>
คำสั่งนั้นในการทำเช่นนั้นโดยการผนวกแทนการแทนที่~
- นี่เป็นการจดชวเลขสำหรับไดเรกทอรีหลักของผู้ใช้ปัจจุบันและเป็นส่วนหนึ่งของบิตถัดไป~/offbkp01.log
- ไฟล์ offbkp01.log ภายในโฮมไดเรกทอรีของผู้ใช้ปัจจุบัน นี่คือที่การส่งออกของคำสั่ง rsync >
จะใส่เพราะการเปลี่ยนเส้นทางด้วยโดยสรุปคำสั่งนี้จะ:
/srv/bkp01
, /srv/offbk2/bkp01
, และจะลบสิ่ง/srv/offbk2/
ที่ไม่ได้อยู่ใน/srv/bkp01
เงื่อนไขต่อไปนี้:
/srv/offbk2/
ที่ใหม่กว่าปรับเปลี่ยนเวลาในวันที่/srv/bkp01
, มันจะไม่ได้รับการปรับปรุง , ถ้าทั้งสองรายการยังคงเป็นประเภทเดียวกัน (ปกติไฟล์ไดเรกทอรีหรือ symlink (? )) นอกจากนี้rsync จะพิมพ์ออกมาข้อมูลบางอย่างเกี่ยวกับสิ่งที่ทำ (เฉพาะไฟล์ที่ถูกโอนและบทสรุปสุดท้าย ) ซึ่งเปลือกจะเขียน ลงในแฟ้ม ~/offbkp01.log
ไฟล์บันทึกดังกล่าวจะถูกสร้างขึ้นใหม่หากยังไม่มีอยู่และจะถูกเขียนทับหากมีอยู่แล้ว
หมายเหตุ: --fake-super
เป็นตัวเลือกที่ใช้ในการทำให้ rsync จำลองกิจกรรมผู้ใช้ขั้นสูง ทำได้โดยใช้แอตทริบิวต์เพิ่มเติมของไฟล์เพื่อจัดเก็บแอตทริบิวต์ที่ไม่สามารถตั้งค่าได้หากไม่มีสิทธิ์ที่มากกว่า เวอร์ชันจริงของแต่ละแอตทริบิวต์นั้นถูกตั้งค่าเป็นอะไรก็ตามที่สมเหตุสมผลเนื่องจากตัวเลือกและสิทธิพิเศษที่มีให้ แม้ว่าสิ่งนี้จะทำให้การสำรองข้อมูลบางอย่างสะดวกแม้ว่าคุณจะไม่มีสิทธิ์พิเศษสำหรับผู้ใช้ แต่ก็ควรทราบว่าอาจมีความเสี่ยงด้านความปลอดภัยมากกว่าการใช้ rsync โดยทั่วไปเนื่องจากอาจไม่มีการตั้งค่าแอตทริบิวต์ความปลอดภัยที่แท้จริง อย่างถูกต้องแม้ว่าข้อมูลเกี่ยวกับพวกเขาจะถูกสำรองไว้
จากคู่มือ:
--ลบ
สิ่งนี้จะบอก rsync ให้ลบไฟล์ที่ไม่เกี่ยวข้องออกจากด้านที่รับ (ไฟล์ที่ไม่ได้อยู่ในฝั่งที่ส่ง) แต่เฉพาะสำหรับไดเรกทอรีที่กำลังซิงโครไนซ์ คุณต้องมี rsync เพื่อส่งไดเรกทอรีทั้งหมด (เช่น "dir" หรือ "dir /") โดยไม่ต้องใช้ wildcard สำหรับเนื้อหาของไดเรกทอรี (เช่น "dir / *") เนื่องจาก wildcard ถูกขยายโดยเชลล์และ rsync จึงได้รับการร้องขอ เพื่อถ่ายโอนไฟล์แต่ละไฟล์ไม่ใช่ไดเรกทอรีหลักของไฟล์ ไฟล์ที่ถูกแยกออกจากการถ่ายโอนนั้นจะถูกแยกออกจากการถูกลบด้วยเว้นแต่ว่าคุณจะใช้ตัวเลือก --delete-แยกหรือทำเครื่องหมายกฎว่าเป็นการจับคู่เฉพาะในฝั่งการส่งเท่านั้น (ดูตัวดัดแปลงรวม / แยกในส่วนกรองกฎ)
ดังนั้นมันจะลบไฟล์ออกจากปลายทางที่ไม่ได้เป็นส่วนหนึ่งของไดเรกทอรีต้นฉบับหากคุณไม่ได้ใช้สัญลักษณ์แทน
ไดเรกทอรีแหล่งที่มา:
1.txt
2.txt
3.txt
ไดเรกทอรีปลายทาง:
4.txt
4.txt จะหายไปหลังจาก rsync และ 1.txt, 2.txt และ 3.txt จะอยู่ที่ปลายทาง
เกี่ยวกับสิ่งอื่น ๆ :
uva
ไม่มันจะลบไฟล์ที่ไม่เกี่ยวข้องจากbkp01
ไดเรกทอรีเท่านั้น
นอกจากนี้:
-u
, --update
- ข้ามไฟล์ที่ใหม่ต่อสัญญาณ-v
, --verbose
- การเพิ่มฟุ่มเฟื่อย-a
, --archive
- โหมดเก็บถาวร; เท่ากับ -rlptgoD (ไม่ใช่ -H, -A, -X)เอาต์พุตของrsync -uva --delete /srv/bkp01 /srv/offbk2/
คำสั่งถูกส่งไปยัง~/offbkp01.log
ไฟล์โดยใช้โอเปอเรเตอร์การเปลี่ยนเส้นทาง ( >
)แทนที่จะพิมพ์ในเทอร์มินัลของคุณ หากไฟล์ไม่มีอยู่ไฟล์นั้นจะถูกสร้างขึ้น หากไฟล์มีอยู่เนื้อหาเก่าจะถูกลบ
ดูman rsync
ข้อมูลเพิ่มเติม
bkp01
เลย มันเพียงแค่ลบไฟล์ที่ไม่เกี่ยวข้อง - เช่นไฟล์ที่ไม่มีอยู่ในแหล่งที่มา - จากปลายทาง
rsync
รีโมตไฟล์คัดลอก - ซิงโครไนซ์ทรีไฟล์ข้ามดิสก์โลคัลไดเร็กทอรีหรือข้ามเครือข่าย
-u update
-v verbose
-a archive
--delete --> delete
นี่มันจะลบไฟล์ภายใน offbk2
จากนั้นผลลัพธ์ของผลลัพธ์ (สำเร็จหรือไม่) จะถูกเปลี่ยนเส้นทางไปยังไฟล์บันทึกนั้น