Linux Link To File

Linux Link To File

Reading time1 min
#Linux#FileSystem#Technology#HardLinks#SymbolicLinks#SysAdmin

Mastering Linux File Linking: When and Why to Choose Hard Links vs. Symbolic Links

Deleting a configuration accidentally, only to find the backup intact and instantly available—that’s only possible if you leverage hard links correctly. For everything else—linking directories, spanning across ext4 and XFS filesystems, even clever software versioning—symbolic links reign. But the devil’s in the details.

Concept Review: Symlinks vs. Hard Links

Both hard and symbolic links are tools for filesystem indirection, but at different layers.

Hard Links

  • Reference the same inode (data structure) as the source file.
  • Contents remain available via any link until all hard links are deleted.
  • Must be created on the same filesystem (ln returns Invalid cross-device link error if you try otherwise).
  • Regular users can't hard-link directories; root can, but it disrupts consistency and can break tools like find or rsync.
  • Not directly visible—there’s no external indicator; use ls -li to check inode numbers.
$ ln important.conf backup.conf
$ ls -li important.conf backup.conf
1285476 -rw-r--r-- 2 root root 293 Jun 18 10:32 backup.conf
1285476 -rw-r--r-- 2 root root 293 Jun 18 10:32 important.conf

Both files share inode 1285476—true hard links.

Symbolic Links (Symlinks)

  • Small special files containing the pathname to a target.
  • Survive across filesystems, and can target directories, files, even non-existent paths.
  • If the target moves or is deleted, the link becomes broken (ls -l shows dangling path).
  • Easy to spot: l in the file type field and an arrow to the destination.
$ ln -s /tmp/original.conf ~/shortcut.conf
$ ls -l ~/shortcut.conf
lrwxrwxrwx 1 root root 17 Jun 18 10:40 /root/shortcut.conf -> /tmp/original.conf

Practical Applications

1. Preventing Data Loss with Hard Links

System administrators managing, say, Postfix or Apache configuration, often hard-link critical files before making major edits:

cp /etc/postfix/main.cf main.cf.bak
ln /etc/postfix/main.cf /root/main.cf.saved

If /etc/postfix/main.cf is accidentally deleted, contents live on in /root/main.cf.saved. Both must be removed before the data truly disappears.

2. Cross-Filesystem References: Only Symlinks

Moving a directory to another partition but wanting old processes/scripts to follow? Only symlinks can handle this:

mv /opt/old_data /mnt/storage/data
ln -s /mnt/storage/data /opt/old_data

Now, legacy paths resolve automatically—unless the target is unmounted (classic gotcha).

3. Linking Directories (Symlinks Only)

Suppose npm insists on a node_modules in one directory, but you want data elsewhere:

ln -s /srv/build/node_modules /home/dev/project/node_modules

Hard links are impossible here; only symlinks point to directories.

4. Space Efficiency with Hard Links

Generating multiple reference copies in a CI job? Hard links save real space. For instance, artifact versioning inside the same ext4 volume:

ln build_v1.tar.gz latest.tar.gz

Zero overhead besides the directory entry. Trade-off: all references must stay on the same FS.

5. Immutable References & Atomic Deployments

Some deploy scripts hard-link binaries for atomic rollbacks:

ln /usr/local/releases/myapp-2.7.5/bin/mybinary /usr/local/bin/myapp

Updates can be atomic (replacing the symlink), but sometimes immutable hard links are used for rollback points.

Key Commands

OperationCommand ExampleDetails
Hard linkln fileA fileBFilesystem-local only; same inode
Symbolic linkln -s /source/file /dest/linkCross-filesystem; soft pointer
Check inodels -li file1 file2Identical inode = hard links
Identify symlinkfind . -type lUseful for audits or cleanup
Test for symbolic link[ -L file ] && echo "Symlink"Bash test
Show broken symlinksfind . -xtype l-xtype l matches broken symbolic links

Note: cp -a preserves symlinks, but some backup tools follow links and copy content, creating subtle surprises in restores.

Side Effects, Limitations, and Gotchas

  • Removing all hard links deletes the actual data. No prompt warns you.
  • Backing up with rsync: Use --links (-l) to preserve links. Omit and you may duplicate.
  • Operations like du can miscount space if hard links are present—inode checking is essential.
  • Changing permissions/timestamps via one hard link affects all others; symlinks don’t have this coupling.
  • Hard-linked system files can create security and update headaches; package managers expect single canonical paths.
  • On Btrfs or ZFS, snapshots and reflinks provide alternatives for efficient duplication—worth evaluating in modern workflows.

Feature Comparison

FeatureHard LinkSymbolic Link
Refers to inode directly✗ (points by path)
Filesystem constraintMust be same FSAny mount, FS
Can link directoriesUsually ✗
Survives original rename
Broken if target deleted
Changes propagateAll links share dataOnly via target path
Use in package mgmtRare (can break updaters)Common (see /etc/alternatives/)

Non-obvious Tip

For deduplication workflows, tools like rdfind or hardlink (Debian package hardlink, RHEL hardlink) replace duplicate files with hard links—just beware that any in-place edit affects all linked files.


Symlinks are flexible, ideal for overlay filesystems, application version switches, or containerized workflows (Dockerbind mounts use them behind the scenes). Hard links offer space and resilience when backing up or snapshotting, as long as you stay on a single device.

In practice? Don’t pick blindly. Assess the update cadence, backup tools, and operational risks. Test what happens on deletion—and don’t trust the default ln -s to be your safest, or most robust, choice.