как сказать rsync сохранять метку времени на файлах, когда исходное дерево имеет смонтированную точку

Я совершенно уверен, что Вы не можете.

Проверьте использование ps x. Если процесс имеет a ? как управляющий tty, Вы не можете отправить вход в него больше.

9942 ?        S      0:00 tail -F /var/log/messages
9947 pts/1    S      0:00 tail -F /var/log/messages

В этом примере можно отправить вход в 9947 выполнение чего-то как echo "test" > /dev/pts/1. Другой процесс (9942) не достижимо.

В следующий раз Вы могли использовать экран или tmux для предотвращения этой ситуации.

42
13.04.2017, 15:37
3 ответа

от man rsync:

   -t, --times                 preserve modification times

РЕДАКТИРОВАНИЕ - для изменения к лучшему этого ответа, так как не сразу очевидно, почему это не помогло OP:

OP копирует файлы от одной файловой системы до другого и желает сохранить c-time. Большинство людей понимает c-time для значения "создают время", которое является неправильным в большинстве систем UNIX/Linux (файловые системы Windows отслеживают времена "создания" или "рождения").

По большей части, в UNIX и Linux, c-time метка времени, используемая для записи последнего inode 'C'hange. inode изменяется, если какой-либо из его атрибутов обновляется:

OP не может сохранить c-time из их файла, когда они принесены на новую файловую систему. Создание этих файлов в новых файловых системах является одним из упомянутых выше условий (создание inode/file).

/ РЕДАКТИРОВАНИЕ

47
27.01.2020, 19:35
  • 1
    . Я знаю это. Но считайте вопрос снова тщательно. Я действительно использовал -a который говорит: archive mode; equals -rlptgoD для этого -t уже включен. –  Nasser 17.01.2013, 09:11
  • 2
    , является Вами пытающийся сохранить время изменения? ctime НЕ является для "созданного" для (состояния) –  h3rrmiller 17.01.2013, 09:22
  • 3
    изменения, я хочу, чтобы это работало точно так же, как это делает на файлах, которые не находятся на смонтированном диске. т.е. сохраните ту же метку времени, которую каждый видит при выполнении ls -l на файле. Это работает над файлами, которые не являются в точке монтирования. Но все файлы, которые являются в точке монтирования, имеют метку времени на них указывающий, что они были просто созданы. Независимо от того, что Вы звоните на этот раз. Я просто хотел, чтобы это использовало ту же метку времени на файлах в источнике. Теперь это не делает. Я хочу все аспекты времени, которые будут скопированы. т.е. клон файла быть сделанным. время создания, время изменения, и т.д.... –  Nasser 17.01.2013, 09:31
  • 4
    время изменения (ctime) обновляется на изменение в inode (т.е. изменение/перемещение/и т.д. создания/разрешения). потому что Вы создаете новый inode (потому что Вы копируете файл через файловую систему (разделите inode таблицы), ctime обновляется. нет никакого пути вокруг этого, потому что это - изменение inode, не файл. смотрите на en.wikipedia.org/wiki/Stat_ (system_call) #ctime –  h3rrmiller 17.01.2013, 10:01
  • 5
    ls -l шоу mtime (изменяют) не ctime –  h3rrmiller 17.01.2013, 10:03

Я использую rsync -az и, конечно же, он сохраняет мне время модификации. Я перепроверил это прямо сейчас.

-2
27.01.2020, 19:35

Как уже сказал hr3miller, -архив (или --)равен -rlptgoD и уже включает время синхронизации.

Однако, когда rsync копирует данные, например, в. при монтировании NFS/FAT32/NTFS, где не удается сохранить пользователя и владельца, rsync не будет пытаться установить время. Rsync предупредит что-то вроде

rsync: chown "/mnt/backup/postgres/hourly.0/primary/var" failed: Operation not permitted (1)

Поэтому не сохраняйте пользователя и группу, используя

-rlptD

вместо

-rlptgoD

Используйте это только в том случае, если вы не хотите сохранять владельца и группу. Обратите внимание, что сохранение символических ссылок и других функций также может вызвать такое поведение. Вам нужно будет просмотреть справочную страницу для каждой функции rsync (-r -l -p -t -g -o -D ), резервную копию которой вы хотите сделать.

10
27.01.2020, 19:35

Теги

Похожие вопросы