Re: [lfs-support] Hard links

2012-07-16 Thread Bruce Dubbs
Baho Utot wrote:
> On Monday, July 16, 2012 08:09:23 PM Bruce Dubbs wrote:
>> Baho Utot wrote:
>>> One could do this
>>>
>>> echo "test file" > test
>>> ln test link1
>>> ln test link2
>>> ln link1 link3
>>>
>>> ls -i
>>>
>>> 1333952 test 1333952 link1 1333952 link2 1333952 link3
>>>
>>> rm test
>>> ls -i
>>> 1333952 link1 1333952 link2 1333952 link3
>>>
>>> Doesn't link[1..3] point to "no where"  or garbage?
>>
>> No, they point to the data.  The rm command only deletes the data when
>> the link count goes to zero.  That is, rm removes the entry from
>> directory, and decrements the link count.
>>
>> $ echo "test file" > test
>> $ ls -l test
>> -rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test
>> $ ls -i test
>> 1016053 test
>>
>> Note in the fist form the refernece count is 1.
>> $ ln test1 test
>> $ ls -l test*
>> -rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test
>> -rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test1
>> $ ls -1i test*
>> 1016053 test
>> 1016053 test1
>>
>> The link count is 2.
>>
>> $ rm test
>> $ cat test1
>> test file
>>
>> The data is still there.
>>
>> $ ls -l test*
>> -rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test1
>>
>> but now the link count is 1.  This is also the reason you cannot rmdir a
>> directory that is not empty.  Note too that if you have two files with
>> the same inode, the system will copy the data if you edit either one.
>> You then have two different files, each with a count of 1.
>
> That is weird, I would have expected both files to contain the same data.  Not
> for the "system" to go behind your back and create two separate files.
> I guess I have too much C programming (from my old programming days) in my
> line of thought.  I would have been nice to add data to one "file" and readout
> the data with the other (aka) dup file handles under C.

You can do that with a symbolic link.

   -- Bruce

-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-support
FAQ: http://www.linuxfromscratch.org/lfs/faq.html
Unsubscribe: See the above information page


Re: [lfs-support] Hard links

2012-07-16 Thread Rick Shelton
On Mon, Jul 16, 2012 at 6:48 PM, Fernando de Oliveira
 wrote:
> Em 16-07-2012 21:20, Baho Utot escreveu:
>
>> On Monday, July 16, 2012 08:09:23 PM Bruce Dubbs wrote:
>>> Baho Utot wrote:
 One could do this

 echo "test file" > test
 ln test link1
 ln test link2
 ln link1 link3

 ls -i

 1333952 test 1333952 link1 1333952 link2 1333952 link3

 rm test
 ls -i
 1333952 link1 1333952 link2 1333952 link3

 Doesn't link[1..3] point to "no where"  or garbage?
>>>
>>> No, they point to the data.  The rm command only deletes the data when
>>> the link count goes to zero.  That is, rm removes the entry from
>>> directory, and decrements the link count.
>>>
>>> $ echo "test file" > test
>>> $ ls -l test
>>> -rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test
>>> $ ls -i test
>>> 1016053 test
>>>
>>> Note in the fist form the refernece count is 1.
>>> $ ln test1 test
>>> $ ls -l test*
>>> -rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test
>>> -rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test1
>>> $ ls -1i test*
>>> 1016053 test
>>> 1016053 test1
>>>
>>> The link count is 2.
>>>
>>> $ rm test
>>> $ cat test1
>>> test file
>>>
>>> The data is still there.
>>>
>>> $ ls -l test*
>>> -rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test1
>>>
>>> but now the link count is 1.  This is also the reason you cannot rmdir a
>>> directory that is not empty.  Note too that if you have two files with
>>> the same inode, the system will copy the data if you edit either one.
>>> You then have two different files, each with a count of 1.
>>
>> That is weird, I would have expected both files to contain the same data.  
>> Not
>> for the "system" to go behind your back and create two separate files.
>> I guess I have too much C programming (from my old programming days) in my
>> line of thought.  I would have been nice to add data to one "file" and 
>> readout
>> the data with the other (aka) dup file handles under C.
>>
>>
>>
>>
>>
>>
>>>
>>> Try it.
>>>
>>>-- Bruce
>
> $ echo "test file" > test
> $ ls -l test
> -rw-rw-r-- 1 fernando fernando 10 Jul 16 21:36 test
> $ ls -i test
> 262710 test
> $ ln test1 test
> $ ls -l test*
> -rw-rw-r-- 2 fernando fernando 10 Jul 16 21:36 test
> -rw-rw-r-- 2 fernando fernando 10 Jul 16 21:36 test1
> $ ls -1i test*
> 262710 test
> 262710 test1
>
> $ echo "test file 2" >> test
> $ diff -Nau test test1
> $ ls -l test*
> -rw-rw-r-- 2 fernando fernando 22 Jul 16 21:43 test
> -rw-rw-r-- 2 fernando fernando 22 Jul 16 21:43 test1
> $ ls -1i test*
> 262710 test
> 262710 test1
>
> It seems changing one, the other is changed too.--

yup. There is one actual file, one description of physical space on
disk. The entity that users interact with in a directory is an
abstraction of that description of physical space on disk. Many of
these abstractions can refer to the same physical space on disk.

Anyway, I really like the exercise described in this thread. It
explains hard links better than all those text books. thanks!
-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-support
FAQ: http://www.linuxfromscratch.org/lfs/faq.html
Unsubscribe: See the above information page


Re: [lfs-support] Hard links

2012-07-16 Thread Fernando de Oliveira
Em 16-07-2012 21:20, Baho Utot escreveu:

> On Monday, July 16, 2012 08:09:23 PM Bruce Dubbs wrote:
>> Baho Utot wrote:
>>> One could do this
>>>
>>> echo "test file" > test
>>> ln test link1
>>> ln test link2
>>> ln link1 link3
>>>
>>> ls -i
>>>
>>> 1333952 test 1333952 link1 1333952 link2 1333952 link3
>>>
>>> rm test
>>> ls -i
>>> 1333952 link1 1333952 link2 1333952 link3
>>>
>>> Doesn't link[1..3] point to "no where"  or garbage?
>>
>> No, they point to the data.  The rm command only deletes the data when
>> the link count goes to zero.  That is, rm removes the entry from
>> directory, and decrements the link count.
>>
>> $ echo "test file" > test
>> $ ls -l test
>> -rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test
>> $ ls -i test
>> 1016053 test
>>
>> Note in the fist form the refernece count is 1.
>> $ ln test1 test
>> $ ls -l test*
>> -rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test
>> -rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test1
>> $ ls -1i test*
>> 1016053 test
>> 1016053 test1
>>
>> The link count is 2.
>>
>> $ rm test
>> $ cat test1
>> test file
>>
>> The data is still there.
>>
>> $ ls -l test*
>> -rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test1
>>
>> but now the link count is 1.  This is also the reason you cannot rmdir a
>> directory that is not empty.  Note too that if you have two files with
>> the same inode, the system will copy the data if you edit either one.
>> You then have two different files, each with a count of 1.
> 
> That is weird, I would have expected both files to contain the same data.  
> Not 
> for the "system" to go behind your back and create two separate files.
> I guess I have too much C programming (from my old programming days) in my 
> line of thought.  I would have been nice to add data to one "file" and 
> readout 
> the data with the other (aka) dup file handles under C.
> 
> 
> 
> 
> 
> 
>>
>> Try it.
>>
>>-- Bruce

$ echo "test file" > test
$ ls -l test
-rw-rw-r-- 1 fernando fernando 10 Jul 16 21:36 test
$ ls -i test
262710 test
$ ln test1 test
$ ls -l test*
-rw-rw-r-- 2 fernando fernando 10 Jul 16 21:36 test
-rw-rw-r-- 2 fernando fernando 10 Jul 16 21:36 test1
$ ls -1i test*
262710 test
262710 test1

$ echo "test file 2" >> test
$ diff -Nau test test1
$ ls -l test*
-rw-rw-r-- 2 fernando fernando 22 Jul 16 21:43 test
-rw-rw-r-- 2 fernando fernando 22 Jul 16 21:43 test1
$ ls -1i test*
262710 test
262710 test1

It seems changing one, the other is changed too.-- 
[]s,
Fernando
-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-support
FAQ: http://www.linuxfromscratch.org/lfs/faq.html
Unsubscribe: See the above information page


Re: [lfs-support] Hard links

2012-07-16 Thread Baho Utot
On Monday, July 16, 2012 08:09:23 PM Bruce Dubbs wrote:
> Baho Utot wrote:
> > One could do this
> > 
> > echo "test file" > test
> > ln test link1
> > ln test link2
> > ln link1 link3
> > 
> > ls -i
> > 
> > 1333952 test 1333952 link1 1333952 link2 1333952 link3
> > 
> > rm test
> > ls -i
> > 1333952 link1 1333952 link2 1333952 link3
> > 
> > Doesn't link[1..3] point to "no where"  or garbage?
> 
> No, they point to the data.  The rm command only deletes the data when
> the link count goes to zero.  That is, rm removes the entry from
> directory, and decrements the link count.
> 
> $ echo "test file" > test
> $ ls -l test
> -rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test
> $ ls -i test
> 1016053 test
> 
> Note in the fist form the refernece count is 1.
> $ ln test1 test
> $ ls -l test*
> -rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test
> -rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test1
> $ ls -1i test*
> 1016053 test
> 1016053 test1
> 
> The link count is 2.
> 
> $ rm test
> $ cat test1
> test file
> 
> The data is still there.
> 
> $ ls -l test*
> -rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test1
> 
> but now the link count is 1.  This is also the reason you cannot rmdir a
> directory that is not empty.  Note too that if you have two files with
> the same inode, the system will copy the data if you edit either one.
> You then have two different files, each with a count of 1.

That is weird, I would have expected both files to contain the same data.  Not 
for the "system" to go behind your back and create two separate files.
I guess I have too much C programming (from my old programming days) in my 
line of thought.  I would have been nice to add data to one "file" and readout 
the data with the other (aka) dup file handles under C.






> 
> Try it.
> 
>-- Bruce
-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-support
FAQ: http://www.linuxfromscratch.org/lfs/faq.html
Unsubscribe: See the above information page


Re: [lfs-support] Hard links

2012-07-16 Thread Bruce Dubbs
Baho Utot wrote:

> One could do this
>
> echo "test file" > test
> ln test link1
> ln test link2
> ln link1 link3
>
> ls -i
>
> 1333952 test 1333952 link1 1333952 link2 1333952 link3
>
> rm test
> ls -i
> 1333952 link1 1333952 link2 1333952 link3
>
> Doesn't link[1..3] point to "no where"  or garbage?

No, they point to the data.  The rm command only deletes the data when 
the link count goes to zero.  That is, rm removes the entry from 
directory, and decrements the link count.

$ echo "test file" > test
$ ls -l test
-rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test
$ ls -i test
1016053 test

Note in the fist form the refernece count is 1.
$ ln test1 test
$ ls -l test*
-rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test
-rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test1
$ ls -1i test*
1016053 test
1016053 test1

The link count is 2.

$ rm test
$ cat test1
test file

The data is still there.

$ ls -l test*
-rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test1

but now the link count is 1.  This is also the reason you cannot rmdir a 
directory that is not empty.  Note too that if you have two files with 
the same inode, the system will copy the data if you edit either one. 
You then have two different files, each with a count of 1.

Try it.

   -- Bruce



-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-support
FAQ: http://www.linuxfromscratch.org/lfs/faq.html
Unsubscribe: See the above information page