2

Как команда tar проверяет, был ли файл изменен или нет? Как tar "знает", что этот файл изменен и он должен перейти в следующую инкрементную резервную копию?

У меня есть некоторые предположения:

  • может сравнивать "mtime";
  • может сравнивать "ctime";
  • он может сравнивать содержимое (используя что-то вроде md5sum);

Когда я говорю tar, я имею в виду GNU tar.

2 ответа2

2

Я провел несколько тестов с GNU tar и обнаружил, что:

  • Когда вы обновляете архив, то есть tar uvvf test.tar test_folder только mtime используется для проверки изменения файла.

  • Когда вы создаете инкрементный архив с использованием файла моментального снимка, как в tar cvvf test.tar --listed-incremental=snaphot test_folder и mtime, и ctime используются для проверки изменений. Это сделано, потому что изменение некоторого атрибута файла (то есть владельца) изменяет ctime. Tar используется для резервного копирования не только содержимого файлов, но и их атрибутов.

  • И, наконец, tar не проверяет контрольные суммы файлов в архиве, и если вам удастся подделать файловую систему и изменить содержимое файла, но не изменить их mtime и ctime, tar не включит этот файл в следующий шаг.

Для справки об atime, mtime и ctime я использовал этот http://www.unix.com/tips-tutorials/20526-mtime-ctime-atime.html.

2

Если вы имеете в виду GNU tar, то, согласно руководству, он сравнивает измененное время с временем в архиве. Так что это будет mtime .

http://www.gnu.org/software/tar/manual/html_section/Advanced-tar.html#SEC62

Для файла, который был изменен, ctime останется прежним, поэтому не будет действительной проверкой. tar не выполняет проверки md5.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .