Symlinks não altera seu timestamp ao editar o arquivo

0

Quando eu tenho um arquivo a.txt e faço ln -s a.txt b.txt , então eu edito o timestamp a.txt , a.txt alterado. Mas quando edito b.txt , b.txt não altera seu registro de data e hora. Apenas a.txt é alterado. Por que a mudança de data e hora do b.txt não mudou? E a.txt é.

Exemplo:

$ ls -la
total 8
drwxr-xr-x  2 admin admin 4096 nov  5 16:53 .
drwxr-x--- 37 admin admin 4096 nov  5 16:53 ..
$ nano a.txt
$ ln -s a.txt b.txt
$ ls -la
total 12
drwxr-xr-x  2 admin admin 4096 nov  5 16:54 .
drwxr-x--- 37 admin admin 4096 nov  5 16:53 ..
-rw-r--r--  1 admin admin    4 nov  5 16:54 a.txt
lrwxrwxrwx  1 admin admin    5 nov  5 16:54 b.txt -> a.txt
$ echo wait a minute
wait a minute 
$ nano b.txt
$ ls -la
total 12
drwxr-xr-x  2 admin admin 4096 nov  5 16:56 .
drwxr-x--- 37 admin admin 4096 nov  5 16:53 ..
-rw-r--r--  1 admin admin    9 nov  5 16:56 a.txt
lrwxrwxrwx  1 admin admin    5 nov  5 16:54 b.txt -> a.txt 
$ echo wait a minute again
wait a minute again
$ nano a.txt
$ ls -la
total 12
drwxr-xr-x  2 admin admin 4096 nov  5 16:58 .
drwxr-x--- 37 admin admin 4096 nov  5 16:53 ..
-rw-r--r--  1 admin admin   13 nov  5 16:58 a.txt
lrwxrwxrwx  1 admin admin    5 nov  5 16:54 b.txt -> a.txt

Veja primeiro estas linhas:

-rw-r--r--  1 admin admin    4 nov  5 16:54 a.txt
lrwxrwxrwx  1 admin admin    5 nov  5 16:54 b.txt -> a.txt

Então olhe para isto, apenas a data de um.txt mudou quando editei b.txt

-rw-r--r--  1 admin admin    9 nov  5 16:56 a.txt
lrwxrwxrwx  1 admin admin    5 nov  5 16:54 b.txt -> a.txt 

Ok, eu sei que o b.txt é um link simbólico para o arquivo a.txt. Então você edita o arquivo a.txt. Mas por que meu sistema operacional não mudou a data apenas para a.txt. Quando eu edito b.txt. É muito mais útil também alterar a data de b.txt.

Mas você também pode dizer que o diretório não alterará sua data quando eu for editado no diretório (editei um arquivo e usei o diretório). O diretório é usado para editar o arquivo nele. Mas o sistema operacional altera a data do diretório quando eu edito um arquivo nele

    
por SmileDeveloper 05.11.2018 / 17:04

2 respostas

0

A resposta:

  1. Quando você abre um link simbólico em um arquivo, você realmente abriu o link simbólico, leu o texto no link simbólico (o link), fechou-o e abriu o arquivo para o qual ele está vinculado. Então isso significa quando você o edita. Você nunca editou o arquivo de link simbólico.

  2. O diretório contém outras diretórios ou ponteiros para arquivar da seguinte forma:

Estes são os dados no começo do disco.

A 16:44:
   -- B 17:18:
       -- C 3kb: 15754
       -- D 4kb: 26544
   -- E 18:10:
       -- F 6kb: 16754
       -- G 8kb: 27544

Quando você edita um arquivo em um DIRECTORY. o tamanho do arquivo é alterado, a data é alterada (e mais atributos). E isso é alterado na informação do diretório. Então você também editou os dados do diretório (tamanho, data ...). E assim é o diretório alterado.

Resultado:

Estes são os dados no começo do disco depois de editar C.

A 18:20:
   -- B 18:20:
       -- C 8kb: 15754
       -- D 4kb: 26544
   -- E 18:10:
       -- F 6kb: 16754
       -- G 8kb: 27544
    
por 03.12.2018 / 19:20
2

Porque quando você pede para editar b.txt você edita a.txt , o link é inalterado: Atravessar o link não o altera.

Tentando acessar um link acessa o arquivo para o qual ele aponta (ou o eventual arquivo que é apontado, o link pode apontar para um link que aponta para um link que eventualmente aponta para um arquivo / diretório / algo-else) . Os links são acessados apenas por meio de rotinas de acesso a links especiais. Além disso, os soft-links não podem ser editados (apenas criados e removidos).

    
por 05.11.2018 / 17:16