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

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

2
ทำไมลิงค์แข็งถึงดูเหมือนจะใช้พื้นที่เดียวกันกับต้นฉบับ?
ขอขอบคุณ Q&A ที่ดีรอบ ๆ ที่นี่และหน้านี้ฉันเข้าใจลิงก์แล้ว ฉันเห็นฮาร์ดลิงก์อ้างถึงไอโหนดเดียวกันโดยใช้ชื่ออื่นและสำเนาเป็นโหนด "ต่าง ๆ ที่มีชื่อแตกต่างกัน Plus ซอฟต์ลิงค์มีชื่อไฟล์และพา ธ ดั้งเดิมเหมือนกับไอโหนดดังนั้นหากไฟล์ถูกย้าย ดังนั้นฉันทดสอบสิ่งที่ฉันเรียนรู้ด้วยไฟล์บางไฟล์ ("saluton_mondo.cpp" ด้านล่าง) สร้างลิงก์ที่อ่อนนุ่มและสำเนา jmcf125@VMUbuntu:~$ ls -lh soft hard copy s*.cpp -rw-rw-r-- 1 jmcf125 jmcf125 205 Aŭg 27 16:10 copy -rw-rw-r-- 2 jmcf125 jmcf125 205 Aŭg 25 13:34 hard -rw-rw-r-- 2 jmcf125 jmcf125 205 Aŭg 25 13:34 …

6
ทำลายการเชื่อมโยงอย่างหนักในสถานที่?
ฉันคง dotfiles ของฉันไว้ภายใต้การควบคุมเวอร์ชันและสคริปต์ที่ปรับใช้สร้างการเชื่อมโยงอย่างหนัก ฉันยังใช้etckeeperเพื่อ/etcควบคุมเวอร์ชันของฉัน เมื่อเร็ว ๆ นี้ฉันได้รับคำเตือนแบบนี้: warning: hard-linked files could cause problems with bzr สำเนาธรรมดา ( cp filename.ext filename.ext) จะไม่ทำงาน: cp: `filename.ext' and `filename.ext' are the same file การเปลี่ยนชื่อ / ย้ายไฟล์ - ยกเว้นในไดรฟ์ข้อมูล - ไม่ทำลายฮาร์ดลิงก์ ดังนั้นคำถามของฉันคือ: มีวิธีที่จะทำลายฮาร์ดลิงก์ไปยังไฟล์โดยไม่ต้องรู้ว่าฮาร์ดลิงค์อื่น ๆ / s ไปยังไฟล์นั้นอยู่ที่ไหน?
13 hard-link 

3
ทำไมฉันไม่สามารถสร้างฮาร์ดลิงก์จากไฟล์อุปกรณ์ในไดเรกทอรีอื่นที่ไม่ใช่ / dev
เมื่อฉันต้องการสร้างการเชื่อมโยงอย่างหนักใน/homeไดเรกทอรีของฉันในโหมดราก , Linux แสดงข้อความข้อผิดพลาดต่อไปนี้: ln: failed to create hard link ‘my_sdb’ => ‘/dev/sda1’: Invalid cross-device link ข้อความแสดงข้อผิดพลาดด้านบนแสดงอยู่ด้านล่าง: # cd /home/user/ # ln /dev/sda1 my_sdb แต่ฉันสามารถสร้างฮาร์ดลิงก์ใน/devไดเรกทอรีและเป็นไปไม่ได้ในไดเรกทอรีอื่น ตอนนี้ฉันต้องการทราบวิธีสร้างฮาร์ดลิงก์จากไฟล์อุปกรณ์ที่มีอยู่ (เช่นsdb1) ใน/homeไดเรกทอรี (หรือไดเรกทอรีอื่น ๆ ) หรือไม่
11 linux  hard-link  ln 

4
`cp -al` snapshot ซึ่งฮาร์ดลิงก์จะถูกนำไปยังไฟล์ใหม่เมื่อทำการแก้ไข
ฉันกำลังพยายามถ่ายภาพรวมของโฟลเดอร์ขนาดใหญ่เป็นประจำ ฉันได้อ่านที่นี่: http://www.mikerubel.org/computers/rsync_snapshots/#Incremental ที่cp -alจะถ่ายภาพโฟลเดอร์โดยเพียงแค่คัดลอกลิงก์ฮาร์ดไดรฟ์ นั่นคือทั้งหมดที่ดี แต่ปัญหาคือในภาพรวมนี้ถ้าฉันเปลี่ยนไฟล์มันจะเปลี่ยนในภาพรวมทั้งหมด สิ่งที่ฉันต้องการแทนคือการให้ระบบสร้างไฟล์ใหม่ที่มีการเปลี่ยนแปลงและเชื่อมโยงไปยังสิ่งนั้นแทน วิธีดังกล่าวแต่ละสแน็ปช็อตจะไม่ถูกต้องในการแก้ไขไฟล์แรก ฉันจะบรรลุสิ่งนั้นได้อย่างไร ป.ล. ฉันพยายามrsync -a --delete --link-dest=../backup.1 source_directory/ backup.0/แต่ก็มีปัญหาเดียวกัน

1
มีวิธีที่จะแสดง: - ลิงก์ - หรือถอยกลับสำเนาสามัญใน cp (จาก coreutils GNU)?
มีวิธีที่จะบอกcpไป--link(เช่นสร้างการเชื่อมโยงยาก) แต่ถอยกลับในกรณีที่ฉันกำลังพยายาม hardlinks ระหว่างอุปกรณ์? ลิงก์ระหว่างอุปกรณ์เป็นไปไม่ได้และอาจทำให้เกิดความcpล้มเหลว เหตุผลที่ฉันถามคือเพราะฉันต้องการใช้สิ่งนี้ในGNUmakefileและต้องการบรรทัดคำสั่งที่อ่านได้มากกว่าหนึ่งที่ซับซ้อนและยาว (หรือฟังก์ชั่นสำหรับเรื่องนั้น) คำถามสำหรับ GNU coreutils (7.4 และ 8.13) หมายเหตุ: ตอนนี้การแก้ปัญหาจะเป็นเช่น (GNU ทำไวยากรณ์สูตร): cp -fl $^ $@ || cp -f $^ $@ หลักสูตรนี้จะให้ข้อความแสดงข้อผิดพลาดปลอมในกรณีที่ลิงก์ระหว่างอุปกรณ์แม้ว่าจะประสบความสำเร็จในการcpโทรครั้งที่สองแล้ว นอกจากนี้สิ่งนี้จะได้รับการขยาย (รูปแบบต้นฉบับดูเหมือนว่าจะอ่านได้ทั้งหมด) จะไม่สามารถอ่านได้อีก

2
มีระบบไฟล์ใดบ้างที่ `ln -d` ประสบความสำเร็จ?
จาก manpage สำหรับln : -d, -F, --directory allow the superuser to attempt to hard link directories (note: will probably fail due to system restrictions, even for the superuser) มีไดร์เวอร์ระบบไฟล์ใดบ้างที่สามารถใช้งานได้จริงหรือเป็นเพียงตัวเลือกเดียวmount --bind <src> <dest>? หรือพฤติกรรมแบบนี้ถูกบล็อกโดยเคอร์เนลก่อนที่มันจะเข้าสู่ไดร์เวอร์เฉพาะระบบไฟล์หรือไม่? หมายเหตุ: ฉันไม่ได้วางแผนที่จะทำสิ่งนี้บนเครื่องใด ๆ

2
เหตุใดจึงมีการผสมผสานของ symlink และ hardlinks ใน / bin
ฉันเข้าใจความแตกต่างทางเทคนิคระหว่าง symlink และ hardlinks นี่เป็นคำถามเกี่ยวกับการใช้ในทางปฏิบัติโดยเฉพาะฉันอยากรู้ว่าทำไมทั้งสองถูกใช้ในสภาพที่คล้ายกัน: /binไดเรกทอรี นี่คือรายการในระบบของฉัน: ~$ ls -lai /bin total 10508 32770 drwxr-xr-x 2 root root 4096 Jun 14 11:47 . 2 drwxr-xr-x 28 root root 4096 Sep 6 13:15 .. 119 -rwxr-xr-x 1 root root 959120 Mar 28 22:02 bash 2820 -rwxr-xr-x 3 root root 31112 Dec …

4
ระบบไฟล์สำหรับการเก็บถาวร
ฉันมีข้อมูลแบบอ่านอย่างเดียวที่ซับซ้อนในระบบไฟล์ของฉัน มันมีสแน็ปช็อตนับพันของการแก้ไขบางอย่างของที่เก็บ svn และผลลัพธ์ของการทดสอบการถดถอย ไฟล์ที่เหมือนกันระหว่างสแน็ปช็อตนั้นทำซ้ำโดยใช้ฮาร์ดลิงก์ ด้วยวิธีนี้ความจุในการจัดเก็บข้อมูลไม่จำเป็นต้องมีขนาดใหญ่ แต่ก็ยังใช้งาน inodes จำนวนมากและสิ่งนี้ทำให้ fsck เจ็บปวดยาวนานสำหรับระบบไฟล์หลักของฉัน ฉันต้องการย้ายข้อมูลเหล่านี้ไปยังระบบไฟล์อื่นเพื่อไม่ให้ส่งผลกระทบต่อระบบไฟล์หลักมากเกินไป คุณมีข้อเสนอแนะหรือไม่? Squashfs ดูเหมือนจะเป็นทางเลือกที่เป็นไปได้ แต่ฉันจะต้องตรวจสอบว่ามันสามารถจัดการกับฮาร์ดลิงก์ได้อย่างมีประสิทธิภาพหรือไม่

1
ค้นหาฮาร์ดลิงก์ทั้งหมดของไฟล์โดยไม่ต้องข้ามระบบไฟล์
ฉันเห็นในหน้านี้ว่า inodes มีตัวนับลิงก์เพื่อทราบจำนวนไฟล์ (อ่าน: "รายการไดเรกทอรี") ชี้ไปที่ inode นี้ มีวิธีที่จะทราบว่าไดเรกทอรีใดมีรายการดังกล่าวโดยไม่ต้องข้ามทั้งระบบไฟล์? ข้อมูลนี้ถูกเก็บไว้ที่ไหน? struct inode { kdev_t i_dev; unsigned long i_ino; umode_t i_mode; nlink_t i_nlink; uid_t i_uid; gid_t i_gid; … };
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.