วิธีคัดลอกไดเรกทอรีและเนื้อหาใน Linux

ใช้คำสั่ง 'cp' เพื่อคัดลอกและวางไดเรกทอรีทั้งหมดจากที่หนึ่งไปยังอีกที่หนึ่ง

ไม่ว่าคุณจะใช้ระบบปฏิบัติการใด การคัดลอกไฟล์หนึ่งไฟล์หรือโฟลเดอร์จากที่หนึ่งไปยังอีกที่หนึ่งเป็นงานพื้นฐานที่สุดที่คุณทำทุกวัน ในวันที่วุ่นวายในที่ทำงาน ระหว่างการมอบหมายโครงการที่โรงเรียน หรือระหว่างการพัฒนาโครงการอย่างต่อเนื่อง การคัดลอกไฟล์จากตำแหน่ง A ไปยังตำแหน่ง B เป็นสิ่งที่หลีกเลี่ยงไม่ได้

การคัดลอกไฟล์หรือโฟลเดอร์มักจะทำโดยใช้ GUI Linux ดูแลนิสัยของคุณในการทำงานบนเทอร์มินัลโดยจัดเตรียมยูทิลิตี้บรรทัดคำสั่งที่ให้คุณคัดลอกไฟล์หรือโฟลเดอร์จากที่หนึ่งไปยังอีกที่หนึ่ง ใช้ cp คำสั่งที่มีตัวเลือกมากมายให้คุณมีอิสระในการคัดลอกไฟล์และโฟลเดอร์ได้หลายวิธี

ให้ฉันแนะนำคุณผ่านบทความนี้ที่คุณจะได้เรียนรู้เกี่ยวกับ cp คำสั่งและวิธีคัดลอกไดเร็กทอรีพร้อมกับเนื้อหา

ตัวเลือกที่ใช้ได้กับ cp สั่งการ

นี่คือตัวเลือกทั่วไปที่ใช้กับ cp คำสั่งในบริบทของการคัดลอกไดเร็กทอรีและเนื้อหาทั้งหมด

ตัวเลือกคำอธิบาย
-vโหมด verbose (แสดงความคืบหน้า)
-r/Rคัดลอกไดเรกทอรีซ้ำ ๆ
-นอย่าเขียนทับไฟล์หรือโฟลเดอร์ที่มีอยู่
-ผมแจ้งก่อนเขียนทับ

คัดลอกไดเร็กทอรีจากที่หนึ่งไปยังอีกที่หนึ่ง

มาเริ่มกันที่การใช้งานพื้นฐานที่สุดของ cp สั่งการ. เราจะใช้คำสั่งนี้กับตัวเลือก -r.

ใช้ -r ตัวเลือกช่วยให้แน่ใจว่าโฟลเดอร์ย่อยและไฟล์ภายในไดเร็กทอรีที่คุณกำลังคัดลอกจะถูกคัดลอกด้วย

ไวยากรณ์:

cp -r [source_location] [target_location]

ตัวอย่าง:

ฉันมีสองไดเร็กทอรีภายในไดเร็กทอรีการทำงานปัจจุบันที่เรียกว่า 'project' และ 'workspace'

ในตัวอย่างนี้ ฉันจะใช้ cp -r คำสั่งให้คัดลอกไดเร็กทอรี 'project' พร้อมกับเนื้อหาทั้งหมดไปยังตำแหน่งใหม่ เช่น '/home/gaurav/workspace' นี่หมายความว่าฉันกำลังคัดลอกไดเร็กทอรีชื่อ 'project' ไปยังไดเร็กทอรีชื่อ 'workspace'

นี่คือเนื้อหาของไดเรกทอรี 'โครงการ' ใช้ ลส คำสั่งให้แสดงเนื้อหา

gaurav@ubuntu:~/project$ ls -al total 288 drwxr-xr-x 6 gaurav gaurav 4096 Sep 17 18:26 น. drwxr-xr-x 88 gaurav gaurav 266240 ก.ย. 17 18:24 .. drwxr-xr-x 2 gaurav gaurav 4096 ก.ย. 17 18:25 dem1, drwxr-xr-x 2 gaurav gaurav 4096 17 ก.ย. 18:25 dem2 drwxr-xr -x 2 gaurav gaurav 4096 ก.ย. 17 18:25 dem3 drwxr-xr-x 2 gaurav gaurav 4096 ก.ย. 17 18:25 dem4 -rw-r--r-- 1 gaurav gaurav 24 ก.ย. 60 18:26 temp.c gaurav@ อูบุนตู:~/project$

ตอนนี้ใช้ cp -r คำสั่งเราสามารถคัดลอกไดเร็กทอรี 'project' ไปยังตำแหน่งที่ต้องการได้

gaurav@ubuntu:~$ cp -r /home/gaurav/project /home/gaurav/workspace gaurav@ubuntu:~$

เอาท์พุท:

gaurav@ubuntu:~/workspace$ ls -al total 408 drwxrwxr-x 4 gaurav gaurav 4096 17 ก.ย. 18:27 น. drwxr-xr-x 88 gaurav gaurav 266240 17 ก.ย. 18:24 .. drwxrwxr-x 3 gaurav gaurav 4096 22 มี.ค. 2018 .metadata drwxr-xr-x 6 gaurav gaurav 4096 17 ก.ย. 18:27 โครงการ -rw-r--r -- 1 gaurav gaurav 1535 ก.ย. 59 17:13 น. source.c gaurav@ubuntu:~/workspace$ 

ในผลลัพธ์ด้านบน เราจะเห็นว่าไดเร็กทอรี 'project' ถูกคัดลอกจากตำแหน่งเดิมไปยังตำแหน่งใหม่นี้ '/home/gaurav/workspace' ตอนนี้ให้เราเปิดไดเร็กทอรี 'project' และตรวจสอบว่าเนื้อหาทั้งหมดภายในนั้นถูกคัดลอกด้วยหรือไม่

gaurav@ubuntu:~$ cd ./workspace/project gaurav@ubuntu:~/workspace/project$

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

เอาท์พุท:

gaurav@ubuntu:~/workspace/project$ ls -al total 28 drwxr-xr-x 6 gaurav gaurav 4096 Sep 17 18:27 น. drwxrwxr-x 4 gaurav gaurav 4096 ก.ย. 17 18:27 .. drwxr-xr-x 2 gaurav gaurav 4096 ก.ย. 17 18:27 dem1, drwxr-xr-x 2 gaurav gaurav 4096 ก.ย. 17 18:27 dem2 drwxr-xr-x 2 gaurav gaurav 4096 17 ก.ย. 18:27 dem3 drwxr-xr-x 2 gaurav gaurav 4096 17 ก.ย. 18:27 dem4 -rw-r--r-- 1 gaurav gaurav 24 ก.ย. 60 18:27 temp.c gaurav@ubuntu: ~/พื้นที่ทำงาน/โครงการ$ 

จากผลลัพธ์นี้ เราสามารถสรุปได้ว่าเนื้อหาทั้งหมดของไดเร็กทอรี 'project' จะถูกย้ายไปยังตำแหน่งใหม่ด้วย

การคัดลอกหลายไดเร็กทอรีจากที่หนึ่งไปยังอีกที่หนึ่ง

ในการคัดลอกหลายไดเร็กทอรี cp คำสั่งสามารถใช้ในลักษณะเดียวกับที่กล่าวข้างต้น การเปลี่ยนแปลงเพียงอย่างเดียวคือคุณจะต้องป้อนเส้นทางต้นทางหลายเส้นทางของหลายไดเรกทอรีเพื่อคัดลอก

ไวยากรณ์:

cp -r [source_path_1] [source_path_n] [destination_path]

ให้เราตรวจสอบคำสั่งนี้ด้วยตัวอย่าง

ตัวอย่าง:

gaurav@ubuntu:~/workspace$ cp -r ./snap ./project /home/gaurav/tomcat

ที่นี่ ฉันได้คัดลอกสองไดเร็กทอรี 'snap' และ 'project' จากไดเร็กทอรีการทำงานปัจจุบันของฉันไปยังตำแหน่งใหม่ '/home/gaurav/tomcat'

ตอนนี้ให้เราตรวจสอบว่าไดเร็กทอรีถูกคัดลอกพร้อมกับเนื้อหาไปยังตำแหน่งใหม่หรือไม่

gaurav@ubuntu:~/tomcat$ ls -al total 9316 drwxrwxr-x 5 gaurav gaurav 4096 Sep 19 12:16 น. drwxr-xr-x 88 gaurav gaurav 266240 19 ก.ย. 12:15 .. drwxr-xr-x 6 gaurav gaurav 4096 ก.ย. 19 12:16 น. โครงการ drwxr-xr-x 7 gaurav gaurav 4096 ก.ย. 19 12:16 snap

ตรวจสอบว่าเนื้อหาของไดเร็กทอรีเหล่านี้ถูกคัดลอกด้วยหรือไม่

gaurav@ubuntu:~/tomcat/snap$ ls couchdb eclipse htop pycharm-community vim-editor gaurav@ubuntu:~/tomcat/snap$ 
gaurav@ubuntu:~/tomcat/project$ ls dem1, dem2 dem3 dem4 temp.c gaurav@ubuntu:~/tomcat/project$

โดยใช้ cp คำสั่งด้วยโหมด verbose

ใช้ cp คำสั่งด้วยตัวเลือก -v เปิดใช้งานโหมด verbose คุณสมบัตินี้แสดงไฟล์บนเทอร์มินัลที่กำลังคัดลอก ชื่อของไฟล์หรือโฟลเดอร์ที่กำลังคัดลอกจะแสดงบนเทอร์มินัลของคุณ

ไวยากรณ์:

cp -vr [source_directory] [target_location_path]

ตัวอย่าง:

gaurav@ubuntu:~$ cp -vr ./workspace/apache ./space

ในตัวอย่างนี้ ไดเร็กทอรี 'apache' จะถูกคัดลอกไปยังโฟลเดอร์ใหม่ 'space' ฉันได้ใช้ -v ตัวเลือกด้วย -rเพื่อให้เนื้อหาทั้งหมดของไดเร็กทอรี apache ถูกคัดลอกด้วย

เอาท์พุท:

'./workspace/apache' -> './space/apache' './workspace/apache/apache-tomcat-8.0.52.tar.gz' -> './space/apache/apache-tomcat-8.0. 52.tar.gz' gaurav@ubuntu:~$

ผลลัพธ์จะแสดงไดเร็กทอรีที่กำลังคัดลอก ขั้นตอนเดียวกันสามารถทำได้ในกรณีที่คัดลอกหลายไฟล์

หลีกเลี่ยงการเขียนทับเมื่อใช้ cp สั่งการ

บางครั้งในขณะที่ใช้ cp คำสั่งให้คัดลอกไฟล์หรือโฟลเดอร์หลายไฟล์ คุณอาจเขียนทับไฟล์ที่คัดลอกไปยังตำแหน่งใหม่แล้ว เพื่อหลีกเลี่ยงปัญหานี้ ขอแนะนำให้ใช้ -ผม ตัวเลือกด้วย cp สั่งการ. ซึ่งจะแจ้งให้คุณทราบก่อนที่จะเขียนทับไฟล์หรือโฟลเดอร์ใดๆ

ไวยากรณ์:

cp -ri [source_directory_path] [target_location_path]

บันทึก: ที่นี่ในไวยากรณ์ที่ฉันใช้ -r ตัวเลือกเช่นกัน นี้จะคัดลอกเนื้อหาของไดเรกทอรีด้วย นอกจากนี้ยังจะตรวจสอบว่าโฟลเดอร์ย่อยและไฟล์เหล่านี้ภายในไดเร็กทอรีถูกเขียนทับหรือไม่

ตัวอย่าง:

gaurav@ubuntu:~$ cp -ri ./workspace/snap ./tomcat cp: overwrite './tomcat/snap/pycharm-community/current'?

ที่นี่ ฉันพยายามคัดลอกไดเร็กทอรีชื่อ 'snap' ไปยังตำแหน่งใหม่ แต่ชื่อไดเร็กทอรี 'snap' มีอยู่แล้วที่ตำแหน่งใหม่ ดังนั้นฉันจะได้รับแจ้งจากเทอร์มินัลก่อนที่จะเขียนทับไดเร็กทอรี snap ที่มีอยู่

คุณสามารถพิมพ์ 'ใช่' หรือ 'ไม่' เป็นการตอบสนองต่อข้อความแจ้งนี้

ในกรณีที่คุณไม่ได้ใช้ -ผม ตัวเลือก ไดเร็กทอรีที่มีอยู่จะถูกเขียนทับโดยไดเร็กทอรีใหม่

ข้ามการเขียนทับไฟล์และไดเร็กทอรีด้วย cp สั่งการ

เราสามารถใช้ -น ตัวเลือกเพื่อสั่งให้เทอร์มินัลโดยตรงไม่เขียนทับ และเพียงแค่ข้ามไฟล์และไดเรกทอรีที่คล้ายกันในขณะที่ใช้ cp สั่งการ.

ไวยากรณ์:

cp -nr [source_directory_path] [target_location_path]

การใช้คำสั่งนี้ทำให้มั่นใจได้ว่าไฟล์และโฟลเดอร์ของคุณจะไม่ถูกเขียนทับ

ตัวอย่าง:

gaurav@ubuntu:~$ cp -ri ./workspace/snap ./tomcat gaurav@ubuntu:~$

ที่นี่ ไดเร็กทอรี 'snap' มีอยู่แล้วที่ตำแหน่งเป้าหมาย ดังนั้น การใช้ -น ตัวเลือกจะทำให้แน่ใจว่าจะไม่เขียนทับไดเร็กทอรีนี้

ไม่เหมือน -ผม ตัวเลือก ที่นี่คุณจะไม่ได้รับแจ้งเกี่ยวกับการเขียนทับ

บทสรุป

ใช้ cp คำสั่งให้คัดลอกไดเร็กทอรีและเนื้อหาในลินุกซ์เป็นกระบวนการที่ง่าย หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ cp คำสั่งพร้อมตัวเลือกอื่น ๆ ที่มีอยู่ คุณสามารถตรวจสอบหน้าคู่มือโดยพิมพ์ ผู้ชาย cp ในเทอร์มินัล Linux ของคุณ