[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Soft link confusion



On Sun, Aug 29, 2021 at 04:59:35PM -0700, Gary L. Roach wrote:
> I don't have occasion to use links very often and tend to get confused as to
> which direction the link is pointing. Specifically, I am trying to redirect
> backuppc files from the normal /var/lib/backuppc directory to another disk
> mounted at /media/Backup, a 1TB disk that is not being used. I wrote "ln -s
> /var/lib/backuppc  /media/Backup". This produced "backuppc ->
> /var/lib/backuppc" on the 1TB disk.

The syntax is:  ln -s TARGET LINKNAME

I.e. you specify the existing thing first, and the name of the link that
you want to create last.

> The problem is that I now have duplicate
> files in both places. Specifically the cpool, log, pc, and pool directories
> appear on both drives.

Well, there are two things here.  First, if you screwed up the ln -s
command the first time, you might also have accidentally created the link
in a different place than you thought.  In particular, if the final
argument is an existing directory, a link will be created *inside* that
directory.

Second, what you see depends on how you're viewing the two directories.

To begin with, note that the ls command has a -d option which suppresses
the normal ls behavior of showing the contents of a directory, and instead
shows you the directory itself.

unicorn:~$ ls -ld /bin
drwxr-xr-x 2 root root 4096 Aug  5 07:09 /bin/

If you've been doing commands like "ls -l /media/Back<TAB>" then you
might be seeing the contents of a directory, rather than the actual
symlink or the directory that it points to.

unicorn:~$ ln -s /bin link
unicorn:~$ ls -ld link
lrwxrwxrwx 1 greg greg 4 Aug 29 20:07 link -> /bin/

Right?  There's my symlink which points to a directory.  Now, if I forget
to use the -d option:

unicorn:~$ ls -l link
lrwxrwxrwx 1 greg greg 4 Aug 29 20:07 link -> /bin/

Still OK, right?  But if I use tab completion, then I get a trailing
slash on the argument, and then...

unicorn:~$ ls -l link/
total 13980
-rwxr-xr-x 1 root root 1234376 Aug  4 16:25 bash*
-rwxr-xr-x 3 root root   38984 Jul 20  2020 bunzip2*
-rwxr-xr-x 1 root root  715480 Jul 25 14:44 busybox*
[...]

So I have a guess that you might have done that.  Including the trailing
slash changes the behavior of ls (and many other commands).


Reply to: