คำถามติดแท็ก hard-link

ฮาร์ดลิงก์คือรายการระบบไฟล์ที่เชื่อมโยงชื่อกับไฟล์อื่นบนระบบไฟล์

19
มีวิธีง่าย ๆ ในการแทนที่ไฟล์ที่ซ้ำกันด้วยฮาร์ดลิงก์?
ฉันกำลังมองหาวิธีง่ายๆ (คำสั่งหรือชุดคำสั่งอาจเกี่ยวข้องกับfind) เพื่อค้นหาไฟล์ที่ซ้ำกันในสองไดเรกทอรีและแทนที่ไฟล์ในหนึ่งไดเรกทอรีด้วย hardlinks ของไฟล์ในไดเรกทอรีอื่น นี่คือสถานการณ์: นี่คือเซิร์ฟเวอร์ไฟล์ที่หลาย ๆ คนเก็บไฟล์เสียงไว้ผู้ใช้แต่ละคนจะมีโฟลเดอร์ของตัวเอง บางครั้งหลายคนมีสำเนาของไฟล์เสียงเดียวกันแน่นอน ตอนนี้สิ่งเหล่านี้ซ้ำซ้อน ฉันต้องการทำให้เป็นฮาร์ดลิงก์เพื่อประหยัดพื้นที่ฮาร์ดไดรฟ์

8
เหตุใดฮาร์ดลิงก์ไปยังไดเรกทอรีที่ไม่ได้รับอนุญาตใน UNIX / Linux
ฉันอ่านในตำราเรียนที่ Unix / Linux ไม่อนุญาตการเชื่อมโยงอย่างหนักไปยังไดเรกทอรี แต่อนุญาตการเชื่อมโยงที่อ่อนนุ่ม เป็นเพราะเมื่อเรามีรอบและถ้าเราสร้างฮาร์ดลิงก์และหลังจากเวลาที่เราลบไฟล์ต้นฉบับมันจะชี้ไปที่ค่าขยะบางอย่าง? หากวัฏจักรคือเหตุผลเดียวที่อยู่เบื้องหลังไม่อนุญาตให้มีการเชื่อมโยงอย่างหนักแล้วทำไมลิงก์แบบนุ่มไปยังไดเรกทอรีที่ได้รับอนุญาต?




5
วิธีการคัดลอกไดเรกทอรีซ้ำโดยใช้ลิงก์สำหรับแต่ละไฟล์
ฉันต้องการสร้าง "คัดลอก" ของทรีไดเรกทอรีซึ่งแต่ละไฟล์เป็นฮาร์ดลิงก์ไปยังไฟล์ต้นฉบับ ตัวอย่าง: ฉันมีโครงสร้างไดเรกทอรี: dirA/ dirA/file1 dirA/x/ dirA/x/file2 dirA/y/ dirA/y/file3 นี่คือผลที่คาดหวัง "สำเนา" ของแผนผังไดเรกทอรีที่แต่ละไฟล์เป็นฮาร์ดลิงก์ไปยังไฟล์ต้นฉบับ: dirB/ # normal directory dirB/file1 # hardlink to dirA/file1 dirB/x/ # normal directory dirB/x/file2 # hardlink to dirA/x/file2 dirB/y/ # normal directory dirB/y/file3 # hardlink to dirA/y/file3

5
การพิจารณาว่าไฟล์เป็นฮาร์ดลิงก์หรือลิงก์สัญลักษณ์?
ฉันกำลังสร้างเชลล์สคริปต์ที่จะนำชื่อไฟล์ / พา ธ ไปยังไฟล์และตรวจสอบว่าไฟล์นั้นเป็นลิงก์สัญลักษณ์หรือฮาร์ดลิงก์ สิ่งเดียวคือฉันไม่ทราบวิธีการดูว่าพวกเขาเป็นลิงค์ยาก ฉันสร้างไฟล์ 2 ไฟล์หนึ่งไฟล์เป็นฮาร์ดลิงก์และอีกหนึ่งลิงก์สัญลักษณ์เพื่อใช้เป็นไฟล์ทดสอบ แต่ฉันจะทราบได้อย่างไรว่าไฟล์เป็นฮาร์ดลิงก์หรือสัญลักษณ์ภายในเชลล์สคริปต์ นอกจากนี้ฉันจะค้นหาพาร์ติชันปลายทางของลิงก์สัญลักษณ์ได้อย่างไร สมมุติว่าฉันมีไฟล์ที่เชื่อมโยงไปยังพาร์ติชันอื่นฉันจะค้นหาพา ธ ไปยังไฟล์ต้นฉบับนั้นได้อย่างไร

2
ทำไม '.' ลิงค์ยากใน Unix?
ฉันเห็นคำอธิบายมากมายว่าเหตุใดลิงก์จึงนับเป็นไดเรกทอรีว่างในระบบปฏิบัติการ Unix ที่ใช้เป็น 2 แทนที่จะเป็น 1 พวกเขาทั้งหมดบอกว่าเป็นเพราะ '' ' ไดเรกทอรีซึ่งทุกไดเรกทอรีมีตัวชี้กลับไปเอง ฉันเข้าใจว่าทำไมการมีแนวคิด '.' มีประโยชน์สำหรับการระบุพา ธ ที่เกี่ยวข้อง แต่สิ่งที่ได้รับจากการใช้มันในระดับระบบไฟล์? ทำไมไม่เพียงแค่มีเชลล์หรือการเรียกระบบที่ใช้พา ธ รู้วิธีตีความมัน นั่นคือ '.. ' เป็นลิงก์จริงทำให้ฉันมีเหตุผลมากกว่านี้ - ระบบไฟล์จำเป็นต้องเก็บตัวชี้กลับไปยังไดเรกทอรีหลักเพื่อนำทางไปยังมัน แต่ฉันไม่เห็นว่าทำไม '.' การมีลิงค์จริงเป็นสิ่งจำเป็น ดูเหมือนว่ามันจะนำไปสู่กรณีพิเศษที่น่าเกลียดในการนำไปใช้ - คุณคิดว่าคุณสามารถเพิ่มพื้นที่ว่างที่ใช้โดย inodes ที่มีลิงค์นับน้อยกว่า 1 แต่ถ้าเป็นไดเรกทอรีคุณจะต้องตรวจสอบหา ลิงค์นับน้อยกว่า 2 ทำไมต้องมีความไม่ลงรอยกัน?

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 

9
ใช้เคสสำหรับฮาร์ดลิงก์? [ปิด]
ในสถานการณ์ใดที่เราต้องการใช้ฮาร์ดลิงก์มากกว่าซอฟต์ลิงค์? ผมเองไม่เคยทำงานในสถานการณ์ที่ฉันต้องการที่จะใช้เชื่อมโยงยากกว่านุ่มการเชื่อมโยงและมีเพียงการใช้งานในกรณีที่ผมเคยเจอเมื่อค้นหาเว็บdeduplicating ไฟล์เหมือนกัน

8
อะไรคือความแตกต่างระหว่างฮาร์ดลิงก์และไฟล์?
เชื่อมโยงยากที่ถูกกำหนดให้เป็นตัวชี้ไปยัง inode ลิงค์อ่อนยังเป็นที่รู้จักในฐานะผู้เชื่อมโยงสัญลักษณ์ถูกกำหนดให้เป็นไฟล์ชี้อิสระเพื่อการเชื่อมโยงอื่นโดยไม่มีข้อ จำกัด ของการเชื่อมโยงอย่างหนัก อะไรคือความแตกต่างระหว่างไฟล์และฮาร์ดลิงก์? ฮาร์ดลิงก์ชี้ไปที่ไอโหนดดังนั้นไฟล์คืออะไร รายการ inode ตัวเอง? หรือไอโหนดที่มีฮาร์ดลิงก์? สมมติว่าฉันสร้างไฟล์ด้วยการสัมผัส แล้วรายการ inode ถูกสร้างขึ้นในตาราง inode และฉันสร้างฮาร์ดลิงก์ซึ่งมีหมายเลขไอโหนดเดียวกันกับไฟล์ ดังนั้นฉันจึงสร้างไฟล์ใหม่ หรือไฟล์ถูกกำหนดเป็น inode หรือไม่?

5
จะบอกได้อย่างไรว่าไฟล์ใดเป็นไฟล์ดั้งเดิมหากสร้างฮาร์ดลิงก์
myold_fileตัวอย่างเช่นผมมีไฟล์ จากนั้นฉันใช้lnเพื่อสร้างฮาร์ดลิงก์เป็นmylink: ln myold_file mylink จากนั้นแม้จะใช้ls -aฉันก็ไม่สามารถบอกได้ว่าอันไหนเป็นอันเก่า อย่างไรก็ตามมีการบอกหรือไม่?

5
หนึ่งไฟล์ต้องการเป็นของผู้ใช้สองคน อย่างไร? การเชื่อมโยงฮาร์ดล้มเหลว
สอง setuid โปรแกรม/usr/bin/barและแบ่งปันไฟล์การกำหนดค่าเดียว/usr/bin/baz fooโหมดของไฟล์การกำหนดค่าคือ0640มันเก็บข้อมูลที่ละเอียดอ่อน โปรแกรมหนึ่งวิ่งbar:bar(นั่นคือเป็นผู้ใช้บาร์,กลุ่มบาร์ ); อื่น ๆ baz:bazที่เป็น ผู้ใช้ที่เปลี่ยนแปลงไม่ได้เป็นตัวเลือกและแม้แต่การเปลี่ยนกลุ่มจะไม่เป็นที่ต้องการ ฉันต้องการที่จะเชื่อมโยงอย่างหนักแฟ้มการกำหนดค่าเดียวและ/etc/bar/foo /etc/baz/fooแต่นี้ล้มเหลวเนื่องจากต้องยื่นเท่าที่ผมรู้ว่าเป็นอย่างใดอย่างหนึ่งหรือroot:barroot:baz วิธีการแก้ปัญหาที่อาจเกิดขึ้น: สร้างกลุ่มใหม่barbazที่มีสมาชิกเป็นและbar bazให้เป็นของfooroot:barbaz นั่นดูเหมือนจะเป็นทางออกที่หนักหน่วงสำหรับฉัน ไม่มีผู้ชนะวิธีที่ง่ายกว่าในการแชร์ไฟล์การกำหนดค่าfooระหว่างสองโปรแกรมหรือไม่ สำหรับตอนนี้ฉันกำลังรักษาสำเนาของไฟล์ที่เหมือนกันสองชุด ใช้งานได้ แต่เห็นได้ชัดว่าผิด อะไรจะถูกต้อง? สำหรับข้อมูล: ฉันมีประสบการณ์น้อยกับกลุ่ม Unix และไม่มีใครกับ setgid (2)

6
แทนที่ไฟล์ด้วยฮาร์ดลิงก์ไปที่ / dev / null
ฉันใช้งานแอปพลิเคชันที่เขียนไปยัง log.txt แอพนี้ได้รับการอัพเดตเป็นเวอร์ชั่นใหม่ทำให้ปลั๊กอินที่รองรับไม่รองรับอีกต่อไป มันบังคับให้เกิดข้อผิดพลาดจำนวนมหาศาลใน log.txt และดูเหมือนจะไม่สนับสนุนการเขียนไปยังไฟล์บันทึกอื่น ฉันจะเขียนพวกเขาไปยังบันทึกอื่นได้อย่างไร ฉันได้พิจารณาแทนที่ log.txt ด้วยฮาร์ดลิงก์ (แอปพลิเคชันไม่สามารถบอกความแตกต่างได้ใช่ไหม) หรือฮาร์ดลิงก์ที่ชี้ไปที่ / dev / null ตัวเลือกของฉันคืออะไร?

4
จะยกเลิกการลิงก์ (ลบ) ฮาร์ดลิงก์พิเศษ“.” ที่สร้างขึ้นสำหรับโฟลเดอร์ได้อย่างไร?
บน Linux เมื่อคุณสร้างโฟลเดอร์มันจะสร้างฮาร์ดลิงก์สองลิงก์ไปยังไอโหนดที่เกี่ยวข้องโดยอัตโนมัติ หนึ่งในนั้นคือโฟลเดอร์ที่คุณขอให้สร้างอีกอันเป็น.โฟลเดอร์พิเศษที่โฟลเดอร์นี้ ตัวอย่าง: $ mkdir folder $ ls -li total 0 124596048 drwxr-xr-x 2 fantattitude staff 68 18 oct 16:52 folder $ ls -lai folder total 0 124596048 drwxr-xr-x 2 fantattitude staff 68 18 oct 16:52 . 124593716 drwxr-xr-x 3 fantattitude staff 102 18 oct 16:52 .. อย่างที่คุณเห็นทั้งด้านในfolderและ.ด้านในfolderมีหมายเลขไอโหนดเดียวกัน …

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