Files are arranged in directories (or folders if you prefer that term), and each file can be reached through a series of directories and sub-directories from the root - correct? Yes ... BUT ... there are some times that the same file can be reached through several names, and on Unix and Linux systems this is known as a "link".
There are two ways a link can be set up.
A Hard Link
is where a file has two names which are both on an equal weighting, and both of the file names in the "inode table" point directly to the blocks on the disc that contain the data. See diagram to the left.
You set up a hard link with an ln command without options - if the file ab.txt already exists and you want to give an additional name (hard link) to it, you'll write
ln ab.txt cd.txt
and then both names will have equal ranking. The only way you'll know that there's a link there is by doing a long listing and you'll see a link count of 2 rather than 1, and if you need to find out what's linked to what, use the -i option to ls.
A Symbolic Link
is where a file has one main name, but there's an extra entry in the file name table that refers any accesses back to the main name. This is slighly slower at runtime that a hard link, but it's more flexible and much more often used in day to day admin work.
Symbolic links are set up using the ln command with the -s option - so for example
ln -s ab.txt cd.txt
will set up a new name cd.txt that points to the (existing) file ab.txt. If you do a log listing (ls -l) of a directory that contains a symbolic link, you'll be told that it's a symbolic link with an "l" in the first column, and you'll be told where the file links to in the file name column. Very easy to spot!
need to be aware of both symbolic and hard links; some of the operating system's files have two names and are installed as hard links, and if the administrator's installing software and wishes to do so under a generic name, there are good arguments for him to do so via a symbolic link.
Symbolic links are also a relatively painless way of placing files onto a disc partition (slice) that's not the one you would expect from the name through which you reference them - which is great if one of your partitions has got nearly full but there's space elsewhere, or if you want to position something on a partition that's got a different backup strategy / system in place to the one of the default location. (written 2005-06-02, updated 2006-06-05)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articlesA162 - Web Application Deployment - Backups and File System Management 
Backup procedures - via backup server - (2015-01-24) 
Commenting out an echo killed my bash backup script - (2015-01-19) 
Checking MySQL database backups have worked (not failed) - (2015-01-10) 
More or less back - what happened to our server the other day - (2013-06-14) 
Backups by crossover between network centres - setting up automatic scp transfers - (2013-04-13) 
An overpractical test of our backup strategy! - (2013-03-30) 
How much space does my directory take - Linux - (2009-07-20) 
Some Linux and Unix tips - (2008-11-18) 
Will your backups work if you have to restore them? - (2008-09-18) 
Dialects of English and Unix - (2008-08-21) 
The tourists guide to Linux - (2008-05-20) 
Linux / Unix - layout of operating system files - (2007-11-20) 
Linux run states, shell special commands, and directory structures - (2007-08-03) 
Finding public writeable things on your linux file system - (2007-01-06) 
Copy multiple files - confusing error message from cp - (2006-12-30) 
tar, jar, war, ear, sar files - (2006-06-10) 
Boys will be boys, saved by Ubuntu - (2006-05-27) 
Copying files and preserving ownership - (2006-04-28) 
Finding where the disc space has gone - (2006-02-06) 
What backup is adequate? - (2006-01-04) 
Linux - where to put swap space - (2004-12-16)S153 - Sourcing, Running and Configuring MySQL 
Cant connect to local MySQL server through socket /tmp/mysql.sock - (2009-10-17) 
Securing MySQL on a production server - (2009-10-09) 
Potted MySQL installation - (2009-10-09) 
Which version of MySQL am I running? - (2009-09-26) 
Monitoring and Tuning your MySQL installation - (2009-05-31) 
MySQL - licensing issues, even with using the name - (2009-03-16) 
Summary of MySQL installation on a Linux system - (2008-12-11) 
More HowTo diagrams - MySQL, Tomcat and Java - (2008-08-24) 
Apache httpd, MySQL, PHP - installation procedure - (2008-08-01) 
Some sideways thoughts on the news - (2008-06-27) 
MySQL - Password security (authentication protocol) - (2007-04-02) 
mysqldump and mysqlrestore - (2007-03-30) 
Apache httpd , browser, MySQL and MySQL client downloads - (2007-02-28) 
Browser -> httpd -> Tomcat -> MySQL. Restarting. - (2006-10-28) 
Key facts - SQL and MySQL - (2006-02-04) 
MySQL permissions and privileges - (2005-12-20) 
MySQL - an FAQ - (2005-12-03) 
Which MySQL server am I using? - (2005-11-07) 
Current MySQL and PHP paths and upgrades - (2005-01-28)
Some other Articles
OO techniques are hard to teachthe array returned by preg_match_allTargetted AdvertisingSad prioritiesSymbolic links and hard linksDo NOT follow links or read attachments in these emailsLooking up IP addresses08:45 is a difficult timeAn O level comes in handythe Stately Homes of England