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

Связанный с этим вопросом

Краткое описание проблемы:

Когда исходное дерево имеет смонтированную точку внутри него, тогда штампы времени на файлах внутри этой смонтированной точки при копировании на целевое дерево не сохраняются даже при использовании опции -a

Подробное описание:

Предположим, что это дерево-источник:

  /home/ /home/ | | me/ BACKUP/ | | +----+----------+ +----+-------+ | | | | | | data/ foo.txt boo.txt data/ foo.txt boo.txt | | a.txt a.txt 

где data/ выше установлен внешний USB-диск. Все это файловая система ext4 . Все в источнике принадлежит me .

BACKUP также оказалась точкой монтирования, резервным USB-диском.

После выдачи этой команды rsync -av --delete /home/me/ /home/BACKUP/ , я обнаружил, что /home/BACKUP/data/ и все под ним имеет текущую метку времени, как если бы эти файлы были созданы сейчас, и а не штамп времени на файлы в /home/me/data/ . У других файлов и папок вне data была сохранена отметка времени.

Вопрос: как использовать rsync в приведенном выше параметре, чтобы сообщить ему сохранить отметки времени для всех файлов и папок даже в файлах и папках на смонтированной точке?

Я использую:

 >uname -a Linux 3.5.0-17-generic #28-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux >rsync -v rsync version 3.0.9 protocol version 30 

3 Solutions collect form web for “как сказать rsync сохранить метку времени в файлах, когда исходное дерево имеет смонтированную точку”

от man rsync :

  -t, --times preserve modification times 

EDIT – улучшить этот ответ, поскольку не сразу понятно, почему это не помогло OP:

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

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

  • создание (случай OP)
  • режим (разрешения)
  • владелец / группа
  • количество жестких ссылок
  • и т. д. (системный вызов stat ())

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

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

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

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

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

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

 -rlptD 

вместо

 -rlptgoD 

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

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

  • Как rsync файлы между двумя пультами?
  • Как «отменить» rsync -L?
  • Режим архивирования rsync
  • rdist необходимо заменить rsync
  • rsync перемещать файлы, оставлять каталоги?
  • Сброс соединения Rsync с помощью одноранговой сети
  • Может ли rsync определить, где остановился прерванный процессор?
  • Подавить сообщение сервера в rsync
  • наиболее эффективный и безопасный способ сделать полную дифференциальную резервную копию с помощью rsync
  • Не удается передать ssh-соединение с помощью rsync
  • rsync для копирования файлов, которые изменились
  • Linux и Unix - лучшая ОС в мире.