2015-04-05 2 views
1

я предоставить следующий сценарий, чтобы воспроизвести проблему:«ф -a» (Копировать в архив режиме) не влияет на команду «стат» в поле «Время последнего изменения»

mkdir a 
touch a/f 
sleep 1 
cp -a a b 
stat --printf="%u %g %a %z\n" a/f 
stat --printf="%u %g %a %z\n" b/f 

Результат для два stat вызовов отличаются в временных меток:

1000 100 644 2015-04-05 10:53:35.736399836 +0200 
1000 100 644 2015-04-05 10:53:36.740399841 +0200 

Но руководство по cp говорит, что -a следует сохранить временные метки. Что я делаю неправильно? Как я могу гарантировать, что временные метки хранятся в копии таким образом, чтобы я мог проверить ее?

Я пробовал это на Xubuntu 14.04. Thx за любую помощь!

Ps (Важно):

Я просто попытался получить доступ к более чем временным меткам ls, там у меня нет такого же поведения:

$ ls -l --full-time a/ 
-rw-r--r-- 1 foo bar 0 2015-04-05 10:53:35.736399836 +0200 f 
$ ls -l --full-time b/ 
-rw-r--r-- 1 foo bar 0 2015-04-05 10:53:35.736399836 +0200 f 

Может ли я проверку не то с моей командой стата? Я хочу узнать, если файл, как был «изменен», сравнивая его с копией в резервной копии ...

+0

Может быть, я должен использовать '% y', время последнего изменения? Сначала я думал, что это предназначено только для изменений, например. прав доступа и т. д., но, похоже, он также обновляется для изменений содержимого файла ... это, возможно, то, что 'ls' использует в моем примере ... –

+0

- это то, что« последнее изменение »также включает в себя« время рождения », ? это означало бы, что последнее изменение может быть МОЛОДЕЖИ, а затем последним изменено? –

ответ

1

stat печатает 3 различных времен:

  • Access - последний раз, когда файл был чтения
  • Изменить - в последний раз файл был изменен (содержание было изменено)
  • Change - в последний раз мета данные файла (например, разрешения)

Это объясняет, почему Изменить время отличается от a/f к b/f (метаданные были обновлены),
в то время как Изменить время одно и то же (содержание файла не изменяются при cp) ,


File: `a/f' 
... 
Access: 2015-04-05 16:15:22.000000000 +0300 
Modify: 2015-04-05 16:15:13.000000000 +0300 
Change: 2015-04-05 16:15:13.000000000 +0300 

File: `b/f' 
... 
Access: 2015-04-05 16:15:22.000000000 +0300 
Modify: 2015-04-05 16:15:13.000000000 +0300 
Change: 2015-04-05 16:19:49.000000000 +0300 
+0

, но не должен 'cp -a' хранить метаданные? –

+0

нет. потому что это другой файл с другим местоположением - это часть метаданных. ни '-p' не сохранит метаданные. –

 Смежные вопросы

  • Нет связанных вопросов^_^