ฉันมีโฟลเดอร์ "X" ขนาดใหญ่หนึ่งโฟลเดอร์ในโฮมไดเร็กตอรี่ของฉัน, และสำเนาที่ล้าสมัยนี้ในแฟลชไดรฟ์ - Y. อะนาล็อกคืออะไรrm Y; cp X Yแต่ไม่มีการเขียนทับไฟล์ที่มีอยู่แล้ว?
ฉันมีโฟลเดอร์ "X" ขนาดใหญ่หนึ่งโฟลเดอร์ในโฮมไดเร็กตอรี่ของฉัน, และสำเนาที่ล้าสมัยนี้ในแฟลชไดรฟ์ - Y. อะนาล็อกคืออะไรrm Y; cp X Yแต่ไม่มีการเขียนทับไฟล์ที่มีอยู่แล้ว?
คำตอบ:
มีคุณสมบัติอื่น ๆ อีกมากมายที่จะrsyncกว่าคำตอบก่อนหน้านี้กล่าวถึง คุณควรตรวจสอบด้วยตนเอง:
man rsync
แต่สำหรับปัญหาของคุณฉันขอแนะนำ:
rsync -a --delete X Y
วิธีนี้ผู้รับ (Y) จะลบไฟล์ใด ๆ ที่มีที่ไม่ได้อยู่ใน X ตรวจสอบให้แน่ใจว่าคุณทำถูกต้อง ใช้ไม่ถูกต้องเนื่องจาก root สามารถฆ่าระบบของคุณได้อย่างง่ายดาย ... :)
rsync -a --delete X/ Yสมควร เครื่องหมายสแลชเล็กน้อยหลังจาก X ทำให้มันทำงานตามที่ตั้งใจไว้สำหรับฉันดังนั้นมันอาจช่วยคนอื่นได้เช่นกัน อธิบายที่นี่: abbeyworkshop.com/howto/unix/nix_rsync/index.html
ลองดูที่rsync (1) มันตั้งใจที่จะทำในสิ่งที่คุณต้องการ
rsync -av X Y
สนับสนุนการคัดลอกระยะไกลผ่านโปรโตคอลหรือ ssh ของตัวเอง แต่ยังสามารถใช้ในเครื่อง
ขึ้นอยู่กับพฤติกรรมที่แน่นอนที่คุณต้องการคุณอาจต้องการผ่าน--updateตัวเลือก สิ่งนี้จะบอก rsync ว่าจะไม่เขียนทับไฟล์ที่มีอยู่แล้วบนเป้าหมายและใหม่กว่าไฟล์ในแหล่งที่มา
หากคุณต้องการลบไฟล์เพิ่มเติม (เช่นไฟล์ที่มีอยู่ใน Y แต่ไม่ใช่ใน X) คุณสามารถเพิ่ม--deleteตัวเลือกได้
ลองใช้ rsnyc, อาจเป็นไปได้ด้วยคำสั่งต่อไปนี้:
rsync -avzu /home/x /y
-u = อย่าเขียนทับไฟล์ที่ปลายทางหากมีการแก้ไข
ฉันคิดว่าฟังก์ชั่นบางอย่างที่คุณกำลังมองหาในตัวเลือก -u (อัพเดต) มีอยู่จริงในตัวเลือกนี้:
"--ignore-existing" - ข้ามการอัปเดตไฟล์ที่มีอยู่ในผู้รับ