GNU-тар

GNU-тар

Недавно я решил заархивировать некоторые данные с помощьюТар. Данные состоят из многочисленных резервных копий одной и той же папки; это означает, что они содержат много дубликатов. Я читал, что из-за отсутствия индекса Tar не очень хорошо работает с данными, содержащими много дубликатов. Так что, по сути, мой вопрос в том, подойдет ли Tar для архивирования таких данных?

Меня больше всего волнует сохранение всех исходных данных в архиве, включая все временные метки файлов: создание, изменение, доступ.

решение1

Конечно, Tar может архивировать эти резервные копии, независимо от того, сколько у вас там дубликатов. Если у вас 100 дубликатов файла abc.doc в 100 разных папках, он будет архивирован 100 раз. Тем не менее, это неэффективно.

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

решение2

GNU-тар

Время создания:

Linux на самом деле не записывает время создания файла. У него есть ctimeвременная метка, которую иногда ошибочно принимают за время создания, но на самом деле это «время изменения inode»: он записывает последний раз, когда был изменен либо файл, либо его разрешения, владелец и т. д. Т. е. он меняется чаще, чем mtime. ctimeМетка обрабатывается ядром и не может быть установлена ​​на произвольные значения пользователем (хотя вы можете сбросить ее на текущее время достаточно легко).

Время модификации:

mtimeсохраняетсяtar

Время доступа:

tarобычно изменяет время доступа даже в исходном файле. Вы можете предотвратить это с помощью флага --atime-preserve. Вы также можете захотеть --preserveтег, который сохраняет разрешения (а также порядок сортировки каталогов).

Я не знаю, можно ли tarсохранить время доступа к архивным файлам, но это всегда можно исправить следующим образом:

  1. Распаковка
  2. Использование touch -a -d TIME FILEдля каждого файла (со временем в формате [[CC]YY]MMDDhhmm[.ss])
  3. Повторное тарирование с помощьюtar --atime-preserve

предупреждение: Использование --atime-preserveв настоящее время запоминает atime, чтобы сохранить его после прочтения. В большинстве систем это приведет к изменению ctime, что иногда может помешать работе другого программного обеспечения (например, программного обеспечения безопасности).

Другое программное обеспечение

Вы можете рассмотреть rsync(см.Эта статьянапример) или система контроля версий (например git)

Связанный контент