คำถามติดแท็ก cp

cp - เครื่องมือบรรทัดคำสั่งเพื่อคัดลอกไฟล์

6
วิธีคัดลอกโฟลเดอร์แบบวนซ้ำโดยใช้ cemp ได้อย่างไร?
เมื่อฉันใช้ cp -R inputFolder outputFolder ผลลัพธ์ขึ้นอยู่กับบริบท : ถ้าไม่อยู่ก็จะถูกสร้างขึ้นและเส้นทางโฟลเดอร์โคลนจะเป็นoutputFolderoutputFolder หากoutputFolderมีอยู่โคลนจะถูกสร้างขึ้นoutputFolder/inputFolder นี้เป็นที่น่ากลัวเพราะผมต้องการที่จะสร้างสคริปต์การติดตั้งบางส่วนและหากผู้ใช้วิ่งมันสองครั้งโดยไม่ได้ตั้งใจเขาจะได้สร้างขึ้นเป็นครั้งแรกแล้วในการทำงานที่สองทุกสิ่งที่จะถูกสร้างขึ้นอีกครั้งในoutputFolderoutputFolder/inputFolder ฉันต้องการพฤติกรรมแรกเสมอ: สร้างโคลนถัดจากต้นฉบับ (เป็นพี่น้อง) ฉันต้องการใช้cpแบบพกพา (เช่น MINGW ไม่มีการrsyncจัดส่ง) ฉันตรวจสอบcp -R --parentsแต่สิ่งนี้จะสร้างเส้นทางใหม่ตลอดเส้นทางไดเรกทอรีต้นไม้ (ดังนั้นโคลนจะไม่เป็นoutputFolderแต่some/path/outputFolder) --remove-destinationหรือ--updateในกรณีที่ 2 ไม่เปลี่ยนแปลงสิ่งใดสิ่งต่าง ๆ ก็ยังคงถูกคัดลอกไปoutputFolder/inputFolder มีวิธีการทำเช่นนี้โดยไม่ตรวจสอบการมีอยู่ของoutputFolder(หากโฟลเดอร์ไม่มีอยู่แล้ว ... ) หรือใช้งานrm -rf outputFolderหรือไม่? วิธีการทำ UNIX แบบพกพาที่ตกลงกันคืออะไร
46 cp  recursive 

2
cp -L กับ cp -H
ปัญหา เมื่อคัดลอกไฟล์ด้วยcp -Hหรือcp -Lฉันได้ผลลัพธ์เดียวกัน: $ ls -l fileA fileA -> fileB $ cp fileA somewhere/ -H $ ls -l somewhere/ fileA # fileA is a copy of fileB, only renamed, with same properties! คำตอบนี้ที่นี่-Rอธิบายตัวเลือกทั้งสองเป็นที่คล้ายกันเว้นแต่ใช้ร่วมกับ ไม่ได้สำหรับฉัน. ซอฟต์ - ไฟล์ฮาร์ดลิงก์จะเปลี่ยนชื่อสำเนาของไฟล์ที่ชี้ไปที่ต้นทาง คำถาม : การใช้ที่เหมาะสมคืออะไรcp -Hและcp -L? นี่เป็นพฤติกรรมที่คาดหวังหรือไม่? ความพยายามที่จะแก้ปัญหาของฉัน : man cpบอกฉันค่อนข้างเหมือนกันสำหรับทั้งสองตัวเลือก แต่info cpของถ้อยคำที่ทำให้เกิดความสับสนมากยิ่งขึ้นสำหรับฉัน …

2
ฉันจะคัดลอกลิงก์สัญลักษณ์ได้อย่างไร
ฉันมีลิงก์สัญลักษณ์ไปยังไฟล์ในไดเรกทอรีเดียว ฉันต้องการลิงค์เดียวกันในไดเรกทอรีอื่น ฉันจะคัดลอกลิงก์สัญลักษณ์ได้อย่างไร ฉันพยายาม cp ลิงก์สัญลักษณ์ แต่สิ่งนี้คัดลอกไฟล์ที่ชี้ไปที่แทนที่จะเป็นลิงก์สัญลักษณ์เอง
41 centos  symlink  cp 

12
มีทางเลือกอื่น cp ที่เร็วกว่าสำหรับการคัดลอกไฟล์ขนาดใหญ่ (~ 20 GB) หรือไม่
ฉันเป็นนักศึกษาระดับบัณฑิตศึกษาและกลุ่มที่ฉันทำงานดูแลคลัสเตอร์ Linux แต่ละโหนดของคลัสเตอร์มีดิสก์ภายในเครื่องของตนเอง แต่ดิสก์ภายในเครื่องเหล่านี้มีขนาดค่อนข้างเล็กและไม่มีการสำรองข้อมูลอัตโนมัติ ดังนั้นกลุ่มเจ้าของเซิร์ฟเวอร์ไฟล์ที่มีพื้นที่เก็บข้อมูลจำนวนมาก TB ฉันเป็นสามเณร Linux ญาติดังนั้นฉันไม่แน่ใจว่าอะไรคือข้อกำหนดของ fileserver ในแง่ของความเร็วความสามารถในการเชื่อมต่อเครือข่ายและอื่น ๆ ฉันรู้จากประสบการณ์ว่าดิสก์ภายในเครื่องนั้นเร็วกว่าไฟล์เซิร์ฟเวอร์ในแง่ของ I / O อย่างมาก . ประมาณหนึ่งโหลหรือมากกว่านั้นผู้คนใช้ไฟล์เซิร์ฟเวอร์ การใช้cpเพื่อคัดลอกไฟล์ ~ 20 GB จาก fileserver ไปยังดิสก์ภายในเครื่องใช้เวลาโดยเฉลี่ยประมาณ 11.5 นาทีตามเวลาจริง (ตามtime) ฉันรู้ว่าcpการดำเนินการนี้ไม่ได้มีประสิทธิภาพมากเพราะ (1) timeบอกฉันว่าเวลาของระบบสำหรับสำเนาดังกล่าวมีเพียง ~ 45 วินาที และเนื่องจาก (2) เมื่อฉันตรวจสอบtopระหว่างการคัดลอก% CPUค่อนข้างต่ำ (โดยการตรวจสอบโดยเฉลี่ยประมาณ0-10% ) การใช้cpเพื่อคัดลอกไฟล์ ~ 20 GB เดียวกันจากโฟลเดอร์หนึ่งบนดิสก์ภายในเครื่องไปยังโฟลเดอร์อื่นในดิสก์ภายในเครื่องเดียวกันใช้เวลาน้อยลง - ในเวลาจริงประมาณ 9 นาที …
40 cp  file-copy 

5
วิธีการคัดลอกไดเรกทอรีด้วยการรักษาฮาร์ดลิงก์?
วิธีย้ายไดเรกทอรีที่มีไฟล์เหมือนกันจากพาร์ทิชั่นหนึ่งไปยังอีกพาร์ติชั่น? สมมติว่าเรามีพาร์ติชั่นติดตั้ง/mnt/Xพร้อมกับไดเรกทอรีแชร์ไฟล์ด้วยฮาร์ดลิงก์ วิธีย้ายไดเรกทอรีดังกล่าวไปยังพาร์ติชันอื่นปล่อยให้มันอยู่/mnt/Yกับการรักษาฮาร์ดลิงก์เหล่านั้น เพื่อให้ภาพประกอบดีขึ้นฉันหมายถึงอะไรโดย "ไดเรกทอรีแชร์ไฟล์ร่วมกันกับฮาร์ดลิงก์" นี่คือตัวอย่าง: # let's create three of directories and files mkdir -p a/{b,c,d}/{x,y,z} touch a/{b,c,d}/{x,y,z}/f{1,2,3,4,5} # and copy it with hardlinks cp -r -l a hardlinks_of_a หากต้องการเจาะจงมากขึ้นสมมติว่าขนาดไฟล์ทั้งหมดคือ 10G และแต่ละไฟล์มี 10 ลิงก์ คำถามคือวิธีการย้ายไปยังปลายทางด้วยการใช้ 10G (บางคนอาจพูดเกี่ยวกับการคัดลอกด้วย 100G และจากนั้นใช้การขจัดความซ้ำซ้อน - ไม่ใช่สิ่งที่ฉันถาม)
40 files  cp  hard-link 

3
วิธีคัดลอกไฟล์จากโฟลเดอร์ที่ไม่มีโฟลเดอร์นั้น
ฉันพยายามที่จะคัดลอกไฟล์และโฟลเดอร์ย่อยจากโฟลเดอร์โดยไม่ต้องตัวเอง ยกตัวอย่างเช่นโฟลเดอร์มีต่อไป: | file1.txt | file2.txt | subfolder1 การดำเนินการคำสั่งถัดไปให้ผลลัพธ์ที่ผิด: sudo cp -r /home/username/A/ /usr/lib/B/ ผลที่ได้คือ /usr/lib/B/A/...copied files... แทน.. /usr/lib/B/...copied files... ฉันจะไปถึงที่คาดหวังได้อย่างไรโดยไม่มีโฟลเดอร์ต้นทาง
39 bash  command-line  cp 

4
คลายซิปไฟล์เนื้อหา แต่ไม่สร้างโฟลเดอร์เก็บถาวร
ฉันมีไฟล์ myarchive.zip ที่มีหลายไดเรกทอรีไฟล์ ฯลฯ สมมติว่าไฟล์ myarchive.zip นี้อยู่ในไดเรกทอรีที่เรียกว่า "b" เมื่อฉันใช้คำสั่ง "unzip myarchive.zip" ระบบจะสร้างไดเรกทอรีโดยค่าเริ่มต้นที่เรียกว่า "myarchive" ด้วยเนื้อหาของไฟล์ zip ฉันไม่ต้องการให้ระบบสร้างไดเรกทอรี "myarchive" นี้ - ฉันต้องการให้เนื้อหาถูกแยกไปยังไดเรกทอรี "b" เป็นไปได้ไหม สิ่งที่ฉันทำตอนนี้คือการออกคำสั่ง "cp" เพื่อคัดลอกไฟล์จากไดเรกทอรีที่สร้างขึ้นใหม่ (ในกรณีนี้ "myarchive" เป็น "b") ไปยังตำแหน่งที่ฉันต้องการ
37 cp  zip 

3
วิธีที่ดีกว่าในการคัดลอกหลายไดเรกทอรีไปยังไดเรกทอรีใหม่
มีวิธีที่ดีกว่าในบรรทัดคำสั่งเพื่อให้บรรลุต่อไปนี้เป็นหลัก แต่ด้วยคำสั่งเดียว cp -r css/ ar/ cp -r images/ ar/ cp -r js/ ar/ cp -r backups/ ar/ ฉันเพิ่งจะคบพวกเขาพร้อมกับอัฒภาค

6
ทำไม `cp 'ถูกออกแบบมาเพื่อเขียนทับไฟล์ที่มีอยู่อย่างเงียบ ๆ ? [ปิด]
ฉันทดสอบcpด้วยคำสั่งต่อไปนี้: $ ls first.html second.html third.html $ cat first.html first $ cat second.html second $ cat third.html third จากนั้นฉันก็คัดลอกfirst.htmlไปที่second.html: $ cp first.html second.html $ cat second.html first ไฟล์second.htmlถูกเขียนทับอย่างเงียบ ๆ โดยไม่มีข้อผิดพลาด อย่างไรก็ตามถ้าฉันทำมันใน GUI บนเดสก์ท็อปโดยการลากและวางไฟล์ด้วยชื่อเดียวกันมันจะถูกfirst1.htmlต่อท้ายโดยอัตโนมัติ วิธีนี้จะหลีกเลี่ยงการเขียนทับไฟล์ที่มีอยู่โดยไม่ตั้งใจ ทำไมไม่cpทำตามรูปแบบนี้แทนที่จะเขียนทับไฟล์อย่างเงียบ ๆ ?
30 cp  history 

4
มูลค่าเพิ่มของตัวเลือก -T ใน GNU cp และ mv คืออะไร?
ทำไมคำสั่ง GNU Coreutils ถึงมี-T/--no-target-directoryตัวเลือก? ดูเหมือนว่าทุกอย่างที่ทำได้สามารถทำได้โดยใช้ซีแมนทิกส์ของ.(จุดตัวเอง) ในลำดับชั้นไดเรกทอรี Unix แบบดั้งเดิม พิจารณา: cp -rT /this/source dir -Tตัวเลือกที่จะช่วยป้องกันการคัดลอกจากการสร้างdir/sourceไดเรกทอรีย่อย ค่อนข้าง/this/sourceจะถูกระบุด้วยdirและเนื้อหาจะถูกแมประหว่างต้นไม้ตามลำดับ ดังนั้นสำหรับตัวอย่างเช่น/this/source/foo.cไปdir/foo.cและอื่น ๆ dir/source/foo.cมากกว่าที่จะ แต่สามารถทำได้อย่างง่ายดายโดยไม่ต้อง-Tใช้ตัวเลือก: cp -r /this/source/. dir # Probably worked fine since dawn of Unix? ความหมายองค์ประกอบจุดต่อท้ายจะถูกคัดลอกเป็นเด็กของdirแต่แน่นอนว่า "เด็ก" ที่มีอยู่แล้ว (เพื่อไม่ต้องถูกสร้างขึ้น) และเป็นจริงdirตัวเองเพื่อให้ผลเป็นที่ยึดติดกับ/this/pathdir มันทำงานได้ดีถ้าไดเรกทอรีปัจจุบันเป็นเป้าหมาย: cp -r /this/tree/node/. . # node's children go to current dir มีบางสิ่งที่คุณสามารถทำได้ด้วยสิ่งเดียว-Tที่ทำให้การดำรงอยู่ของมันมีเหตุผล? (นอกจากการรองรับระบบปฏิบัติการที่ไม่ได้ใช้งานไดเรกทอรีดอทแล้วเหตุผลที่ไม่ได้กล่าวถึงในเอกสาร) …
26 cp  coreutils 

2
วัตถุประสงค์ของ cp -x (อยู่ในระบบไฟล์)
หากฉันต้องการอยู่ในระบบไฟล์เดียวกันฉันไม่สามารถระบุพา ธ เอาต์พุตสำหรับระบบไฟล์เดียวกันได้หรือไม่ หรือเพื่อป้องกันการออกจากระบบไฟล์ปัจจุบันโดยไม่ตั้งใจ?

6
วิธี cp ไฟล์ที่เหลือหลังจากพยายามล้มเหลว
ฉันกำลังพยายามคัดลอกไดเรกทอรีขนาดใหญ่จากไดรฟ์หนึ่งไปยังอีกไดรฟ์ ฉันออกจากระบบโดยไม่ตั้งใจก่อนที่จะเสร็จสิ้นดังนั้นประมาณ 80% ของไฟล์ที่คัดลอกมา มีการคัดลอกไฟล์ที่เหลือโดยไม่เริ่มต้นหรือไม่?
23 cp 

1
ไม่สามารถสร้างไฟล์ 'ชื่อไฟล์' ปกติ: มีไฟล์อยู่
ฉันได้รับข้อความแสดงข้อผิดพลาดแปลก ๆ นี้ในหนึ่งในบิลด์สคริปต์ของฉัน - cpไม่สำเร็จส่งคืนข้อผิดพลาด "ไฟล์มีอยู่" ฉันได้ลองใช้cp -fซึ่งควรเขียนทับไฟล์หากมีอยู่ แต่ข้อผิดพลาดยังคงปรากฏขึ้น การรันcpเพื่อเขียนทับไฟล์ที่มีอยู่นั้นทำงานได้อย่างสมบูรณ์แบบเมื่อฉันทำด้วยตนเอง สิ่งที่อาจทำให้เกิดข้อผิดพลาดนี้?
23 cp  concurrency 

2
คัดลอกไฟล์ที่มีนามสกุลหลาย ๆ ตัว
ฉันต้องการคัดลอกไฟล์ที่มีหลายนามสกุลไปยังไดเรกทอรีปลายทางเดียว ตัวอย่างเช่นฉันสามารถใช้คำสั่งต่อไปนี้เพื่อคัดลอกไฟล์. txtทั้งหมดในไดเรกทอรีทำงานไปยังไดเรกทอรีที่เรียกว่าdestination: cp -v *.txt destination/ และฉันสามารถใช้สิ่งต่อไปนี้เพื่อคัดลอกไดเรกทอรี. pngทั้งหมดในไดเรกทอรีทำงานไปที่destination: cp -v *.png destination/ แต่ใช้เวลานานในการพิมพ์คำสั่งเหล่านี้เป็นคำสั่งแยกต่างหาก (แม้จะใช้ประวัติคำสั่ง) ดังนั้นจะมีวิธีการที่ผมสามารถบอกได้ใด ๆcpในการคัดลอกไฟล์ที่มีทั้งรูปแบบ*.txt หรือรูปแบบ*.pngที่จะdestination? จะเป็นการดีที่ฉันต้องการที่จะสามารถระบุมากกว่าสองรูปแบบที่ชอบ - สอนcpการคัดลอกทั้งหมด*.txt หรือ *.png หรือ *.jpgไฟล์ไปdestinationยกตัวอย่างเช่น ฉันแน่ใจว่าทั้งหมดนี้เป็นไปได้โดยใช้เชลล์สคริปต์ - ฉันใช้bash- แต่มีวิธีใดที่จะทำให้สำเร็จได้ง่ายขึ้นเพียงจากคอนโซลหรือไม่ ฉันจะใช้การขยายรั้งเพื่อทำมันได้หรือไม่? ฉันรู้ว่ามันเป็นไปได้ที่จะคัดลอกไฟล์ทั้งหมดในไดเรกทอรีการทำงานยกเว้นที่ตรงกับรูปแบบที่ระบุบางอย่างแต่เนื่องจากไดเรกทอรีการทำงานของฉันมีนามสกุลไฟล์มากกว่าที่ฉันไม่ต้องการคัดลอกกว่าที่ฉันทำซึ่งจะเป็นความเจ็บปวด คุณมีความคิดเกี่ยวกับสิ่งนี้หรือไม่?
22 bash  shell  wildcards  cp 


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