การใช้คำสั่ง cp โดยไม่มีตัวถูกดำเนินการปลายทางในไดเรกทอรีขนาดใหญ่ไม่ได้ให้ข้อผิดพลาดและใช้พื้นที่ดิสก์มากขึ้น


2

บิตของแปลกหนึ่งที่นี่

ฉันพยายามที่จะคัดลอกข้อมูลจากไดเรกทอรีหนึ่งไปยังอีกไดเรกทอรีหนึ่งและปล่อยให้ตัวถูกดำเนินการปลายทางออกจากซีพี ดูคำสั่ง

root@server:/home/pp/test1# cp -r ../dhcppc0/*

คำสั่งรันนานกว่าหนึ่งชั่วโมงเนื่องจากไดเรกทอรีต้นทางมีข้อมูลมากกว่า 135GB และมีไดเรกทอรีจำนวนมาก

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

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

ดังนั้นคำถามของฉันคืออะไรพื้นที่ดิสก์ทั้งหมดหายไปไหนและที่ไหน และฉันจะคืนมันได้อย่างไร? มีพื้นที่บัฟเฟอร์ชั่วคราวบางแห่งในระบบที่ฉันสามารถล้างได้หรือไม่

ไดเรกทอรีแหล่งเก็บข้อมูลประมาณ 135GB ในไฟล์ประมาณ 1M

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!


rsync เหมาะกว่าสำหรับการถ่ายโอนไฟล์ขนาดใหญ่ทั้งในและนอกระยะไกล '-avz' เป็นสวิตช์ที่ฉันมักใช้
ppetraki

คำตอบ:


1

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

ทำไมจึงเป็นเช่นนั้น? ในcp -r ../dhcppc0/*, ไม่ได้จัดการcp ../dhcppc0/*เปลือกขยายแล้วผ่านเนื้อหาที่ขยายไปสู่../dhcppc0/* cpดังนั้นถ้ามันขยายเข้าไป../dhcppc0/bar, ../dhcppc0/bazและ ../dhcppc0/foo, จากนั้นคำสั่งที่ขยายจะเป็น:

cp -r ../dhcppc0/bar ../dhcppc0/baz ../dhcppc0/foo

และถ้าfooเป็นไดเรกทอรีที่cpมีความสุขจะคัดลอกเนื้อหาทั้งหมดของไดเรกทอรีอื่น ๆ fooเพื่อ

[W] หมวกและพื้นที่ดิสก์ทั้งหมดหายไปไหน? และฉันจะคืนมันได้อย่างไร? มีพื้นที่บัฟเฟอร์ชั่วคราวบางแห่งในระบบที่ฉันสามารถล้างได้หรือไม่

ทำecho ../dhcppc0/*ดูที่นามสกุลที่ปรากฏขึ้นและตรวจสอบไดเรกทอรีนั้น

นี่คือเหตุผลที่เมื่อคัดลอกไดเรกทอรีหรือใช้สัญลักษณ์แทนใช้-tพารามิเตอร์เสมอ:

cp -t . ../dhcppc0/*
# or cp --target-directory . ../dhcppc0/*

และทราบว่าคุณจะพลาดการใด ๆ dot-dot *โฟลเดอร์และไฟล์ถ้าคุณใช้ คุณไม่จำเป็นต้องใช้มันดังนั้นควรทำ:

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