Trace: Simlinks

Simlinks

Table of Contents

Prev  
 Next

A symlink is a soft or hard link to a directory location to another directory location or file. It effectively allows a directory tree (soft link only) to be made for different non-structured directory locations, even across partitions. It allows configuration file control by having current configuration file pointing to different version or use type configuration files, depending on use case.

Simple use is:

  • ln -s "path/directory or file" "path/symlink name", where option -s is to create a symlink. See ln –help or man ln for more information.
  • ln "path/file" "path/symlink name", which creates a hard link to a file. (Where: hard links to directories are not allowed and hard links to files must be on same devices)

Where:

  • To remove symlink rm "path/symlink name"
  • To list symlink ls "path/symlink name"
  • To list symlink directory contents ls "path/symlink name/"
  • Use -f flag to force
  • Use -i flag for interactive, it will ask to overwrite where existing link or file exists
  • Use -s flag for soft link, default is hard link
Comparison Parameters Hard link Soft link
Inode number* Files that are hard linked take the same inode number Files that are soft linked take a different inode number
Directories Hard links are not allowed for directories* Soft links can be used for linking directories
File system It cannot be used across file systems It can be used across file systems
Data Data present in the original file will still be available in the hard links Soft links only point to the file name, it does not retain data of the file
Original file’s deletion If the original file is removed, the link will still work as it accesses the data the original was having access to. If the original file is removed, the link will not work as it doesn’t access the original file’s data.
Speed Hard links are comparatively faster Soft links are comparatively slower

Notes:

  • Inode number – Index node number is a unique number assigned to all files in a Linux/Unix system.
  • Hard links on directories can cause fundamental problems. Original Unix command had flags to allow (-d and -F), however most modern operating systems do not allow hard links on directories. See Why are hard links not allowed for directories?. Hard links to directories should not be used even if possible.

Soft symlink ownership is not particularly important as it has full permissions (777) and file access is determined by real file permissions.

In general soft links are more flexible, however hard links on files do have specific use cases. Some examples include:

  • Incremental back-ups, use of hard links saves duplicating file data
  • Virtual File systems where source soft link directions do not resolve. E.g. Docker configuration files.

  • Use the stat command on a file/directory/symlink/device/pipe to get the statistics of the file. Remember in link all these are stored as files.
  • find dir -xdev \! -type d -links +1 -printf '%20D %20i %p\n' | sort -n | uniq -w 42 –all-repeated=separate will find and list files that have common inode numbers in the nominated dir

References

/app/www/public/data/pages/home_server/home_server_setup/other_services/symlinks.txt · Last modified: 2025-01-10 Fri wk02 11:55
CC Attribution-Share Alike 4.0 International Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International