Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
home_server:home_server_setup:other_services:symlinks [2024-12-01 Sun wk48 09:56] – [Simlinks] baumkphome_server:home_server_setup:other_services:symlinks [2025-01-10 Fri wk02 11:55] (current) – [References] baumkp
Line 2: Line 2:
 =====Simlinks===== =====Simlinks=====
  
-A symlink is a soft or hard link to a directory location to another directory location or file. I am only interested in the soft link. It effectivily allows a directory tree to be made for different non-structured directory locations, even across partitions.+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.+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 remove symlink ''%%rm "path/symlink name"%%''
   *To list symlink ''%%ls "path/symlink name"%%''   *To list symlink ''%%ls "path/symlink name"%%''
   *To list symlink directory contents ''%%ls "path/symlink name/"%%''   *To list symlink directory contents ''%%ls "path/symlink name/"%%''
   *Use ''-f'' flag to force   *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   *Use ''-s'' flag for soft link, default is hard link
  
Line 14: Line 18:
 ^Comparison Parameters ^Hard link ^Soft 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 | |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 (Only a superusercan do it) |Soft links can be used for linking directories |+|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 | |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 | |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 |
Line 21: Line 25:
 Notes: Notes:
     *Inode number – Index node number is a unique number assigned to all files in a Linux/Unix system.     *Inode number – Index node number is a unique number assigned to all files in a Linux/Unix system.
-    *Superuser – A superuser has more rights compared to an ordinary user. They can change file ownership and set permissions.+    *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 [[https://askubuntu.com/questions/210741/why-are-hard-links-not-allowed-for-directories|Why are hard links not allowed for directories?]]. <fc #ff0000>Hard links to directories should not be used even if possible.</fc>
  
 +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.
 +
 +----
 +====Link Tools====
 +  *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''
  
-Soft symlink ownership is not particularly important as it has full permissions (777) and file access is determined by real file permissions. 
 ---- ----
  
 ====References==== ====References====
-  *[[http://www.thegeekstuff.com/2010/10/linux-ln-command-examples/|Linux Soft and Hard Link Guide]] (10 ln Command Examples) +  *[[http://www.thegeekstuff.com/2010/10/linux-ln-command-examples/|Linux Soft and Hard Link Guide]] (10 ln Command Examples from The geek stuff
-  *[[https://www.geeksforgeeks.org/difference-between-hard-link-and-soft-link/|Difference between Hard Link and Soft Link]]+  *[[https://www.geeksforgeeks.org/difference-between-hard-link-and-soft-link/|Difference between Hard Link and Soft Link]] (Geeks for Geeks) 
 +  *Linux Handbook [[https://linuxhandbook.com/ln-command/|ln Command Examples]] 
 +    *[[https://linuxhandbook.com/hard-link/|Everything Important You Need to Know About Hard Link in Linux]] 
 +    *[[https://linuxhandbook.com/symbolic-link-linux/|What is Symbolic Links in Linux? How to Create Symbolic Links?]] 
 +  *[[https://www.baeldung.com/linux/soft-links-to-directories|How to Create Soft Links to Directories]] (Baeldung) 
 +  *[[https://www.theunixschool.com/|The Unix School]] 
 +    *[[https://www.theunixschool.com/2011/06/inode-all-about-inodes.html| Inode - All about inodes]] 
 +    *[[https://www.theunixschool.com/2012/03/soft-links-hard-links-all-about-inodes.html|Soft Links & Hard Links - All about Inodes - Part 2]] 
 +    *[[https://www.theunixschool.com/2012/08/move-files-and-directories-inodes-part-3.html|Move files and directories : Inodes Part 3]] 
  
 ---- ----
  
 <- home_server:home_server_setup:other_services:systemd|Prev ^ home_server:home_server_setup:other_services:index|Start page ^ home_server:home_server_setup:other_services:fail2ban|Next -> <- home_server:home_server_setup:other_services:systemd|Prev ^ home_server:home_server_setup:other_services:index|Start page ^ home_server:home_server_setup:other_services:fail2ban|Next ->