คัดลอกไฟล์ใหม่เท่านั้น - เป็นไปได้ไหม โดยทั่วไปต้องการรวมสองโฟลเดอร์


14

ฉันมีโฟลเดอร์บนไดรฟ์ 1 ชื่อเพลงและเป็น 100GB ฉันมีโฟลเดอร์บนไดรฟ์ 2 ชื่อเพลงและมันคือ 116GB มันเป็นรุ่นที่อัพเดทที่สุด ฉันจะคัดลอกโฟลเดอร์เพลงจากไดรฟ์ 2 ไปยังไดรฟ์ 1 โดยไม่ต้องเขียนไฟล์ใหม่ทุกไฟล์ได้อย่างไร


คุณใช้ OS X เวอร์ชันใดอยู่
ห้าม

1
ฉันใช้ 10.7.4 เมื่อฉันคัดลอกโฟลเดอร์จากไดรฟ์หนึ่งไปยังอีกฉันถามว่าฉันต้องการแทนที่ ไม่มีตัวเลือกการผสาน
dallen

คำตอบ:


5

ตัวเลือกการรวมจะปรากฏขึ้นเฉพาะเมื่อคุณคัดลอก (แทนที่จะย้าย) โฟลเดอร์ ตรวจสอบให้แน่ใจว่าคุณค้างไว้optionในขณะที่คุณลากโฟลเดอร์ใหม่ไปยังตำแหน่งของโฟลเดอร์เก่า อีกวิธีหนึ่งการใช้+ cเพื่อคัดลอกโฟลเดอร์ใหม่และ+ vเพื่อวางเหนือโฟลเดอร์เก่าควรให้ตัวเลือกในการผสานไฟล์


นี่ยังดูเหมือนว่าจะเขียนทับไฟล์ที่ไม่จำเป็นต้องเขียนใหม่ ใช้rsyncแทน
BRogers

แม้ว่าตัวเลือกการผสานจะพร้อมใช้งานในบางครั้งมันก็ไม่ทำงาน (เพียงรายงานข้อผิดพลาดและไม่ทำอะไรเลย) - โดยเฉพาะในกรณีของโฟลเดอร์ขนาดใหญ่เช่นเดียวกับในกรณีของคุณ เป็นอีกสาเหตุหนึ่งที่ทำให้คุณควรใช้ rsync
Andrzej Martyna

24

นี่เป็นกรณีที่ใช้คลาสสิกสำหรับ rsync:

rsync -av /source-path/source-dir /destination-path

rsync จะคัดลอกเฉพาะไฟล์ใหม่และไฟล์ที่มีการเปลี่ยนแปลงไปยังตำแหน่งใหม่

เป็นสิ่งสำคัญที่จะต้องเข้าใจว่าการต่อท้ายสแลชบนอาร์กิวเมนต์แหล่งที่มาทำงานอย่างไร หากมีการเฉือนท้ายแล้วเนื้อหาของ/ แหล่งเส้นทาง / แหล่ง-dirจะถูกคัดลอกไปยังปลายทางเส้นทาง หากไม่มีเครื่องหมายสแลชต่อท้ายแหล่งที่มาของตัวเองจะถูกคัดลอกไปยังปลายทางและเนื้อหาจะอยู่ในอีกระดับหนึ่งในลำดับชั้นปลายทาง

ดังนั้นถ้าคุณต้องการที่จะทำซ้ำหนึ่งเส้นทางไปยังอีกรวมถึงต่อท้ายทับดังนี้

rsync -av /sourcepath/sourcedir/ /duplicatpath/sourcedir/

1
เยี่ยมมาก! และถ้าคุณทำสิ่งนี้จากหลาย ๆ ไดรฟ์ (หรือที่ใดก็ได้ในคอมพิวเตอร์ของคุณ) และไม่ต้องการที่จะพิมพ์ไดเรกทอรีที่คุณสามารถลากไดรฟ์ (usb ภายนอกหรือแคปซูลเวลา) หรือเพียงไดเรกทอรีเฉพาะและมีมันเพิ่ม มันเป็นคำสั่งสำหรับคุณ เพียงลากตำแหน่งเป้าหมายลงในเทอร์มินัล
BRogers

ชายขอบคุณมากที่แนะนำการกรีดด้านหลัง ฉันใช้เวลาไตร่ตรองแล้วว่าทำไม rsync -av ./foo/bar / vol1 / foo / bar กำลังคัดลอกไฟล์ที่มีอยู่ทั้งหมด บลัดเลือดฮ่า ๆ !!!
sming

4

UPDATE

ก่อนติดตั้ง coreutils ก่อน brew install coreutilsวิ่ง หากคุณไม่ได้brewติดตั้ง ... เปลี่ยนกลับเป็น windows!

ตรวจสอบว่าcp --versionoutputs version cp (GNU coreutils) 8. ^^

จากนั้นคุณจะมีcpรุ่นที่ถูกต้องและการ-uตั้งค่าสถานะจะทำงาน


ตรวจสอบcpคำสั่ง ใช้man cpและอ่านตัวเลือกต่างๆ คุณสามารถทำสิ่งที่ชอบ:

cp -r -u ~/source ~/destination

-R, -r , --recursive: คัดลอกไดเรกทอรีซ้ำ
-u , - อัปเดต: คัดลอกเฉพาะเมื่อไฟล์ SOURCE ใหม่กว่าไฟล์ปลายทางหรือเมื่อไฟล์ปลายทางหายไป
-pเช่นเดียวกับ --preserve = โหมด, ความเป็นเจ้าของ , timestamps
-v --verbose: อธิบายสิ่งที่กำลังทำ

ดังนั้นหากคุณต้องการคัดลอกไฟล์จากคุณดาวน์โหลด /โฟลเดอร์เพลงเพื่อพูดเพลง /โฟลเดอร์ใหม่ของคุณคุณจะทำบางสิ่งเป็น: สิ่งนี้จะรวมเนื้อหาของทั้งสองโฟลเดอร์และถ้ามีสองไฟล์ที่มีชื่อและพา ธ เดียวกันอยู่ ใหม่ล่าสุดขึ้นอยู่กับการประทับเวลา
cp -ruvp ~/Downloads/music/* ~/Music/new/


คุณแน่ใจว่าตัวเลือก -u ทำงานร่วมกับคำสั่ง cp ใน OSX หรือไม่ ฉันได้รับข้อความ "cp: ตัวเลือกที่ผิดกฎหมาย - u" ในเซียร์รา ดูเหมือนว่าคำสั่งทั้งหมดจะไม่เหมือนกับใน Linux
OMA

ลองใช้คำสั่ง cp --help และดูว่ามีตัวเลือกนี้หรือไม่ หรือตรวจสอบ cp - รุ่นและตรวจสอบว่าเป็นรุ่นล่าสุด ฉันใช้: cp (GNU coreutils) 8.27
drew7721

น่าเสียดายที่ -u ไม่ใช่ธงที่ถูกต้องสำหรับ cp บน OS X มันจะสะดวกมาก ๆ !
ต่อ Aronsson ที่ทำภารกิจ

น่าเสียดายที่คำตอบนี้ไม่ถูกต้อง
วิลเลียม Cerniuk

ใช้brew install coreutilsเพื่อรับcpรุ่นที่ถูกต้อง
drew7721

0

ไม่แน่ใจว่าทำไมปุ่ม Lion Merge เริ่มต้นไม่ปรากฏขึ้นสำหรับฉัน dittoแต่ผมสิ้นสุดการใช้ พบได้ที่นี่: https://superuser.com/a/221599/102789


1
ระวัง! เหมือนกันไม่ได้เก็บไฟล์ที่ใหม่กว่ามันจะเขียนทับปลายทางด้วยแหล่งที่มา หากไฟล์ต้นฉบับเก่ากว่าไฟล์ดังกล่าวจะหายไปจากไฟล์ใหม่และแทนที่ด้วยไฟล์เก่ากว่า
FrancescoMM

ถูกต้องแล้ว - คำเตือนที่สำคัญมากจาก FrancescoMM ใช้ rsync
Andrzej Martyna
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.