Какие системы с открытым исходным кодом или системы контроля версий хранят исходные файлы mtime, ctime и atime? - PullRequest
5 голосов
/ 18 февраля 2010

Я хочу создать персональный цифровой архив.

Я хочу иметь возможность проверять цифровые файлы (несколько лет назад, некоторые недавно, некоторые еще не созданы) в этом архиве и сохранять их вместе с метаданными, такими как ctime, atime и mtime.

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

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

Я хочу иметь возможность проверять файлы в и из архива с компьютеров под управлением Linux, Mac OS X 10.5+ или Win XP +.

Я хочу иметь возможность проверять файлы в архиве и из архива с компьютеров с объемом оперативной памяти, меньшим, чем размер файлов. Например. Я хочу иметь возможность извлекать / выгружать файл 13 ГБ с помощью ПК с 2 ГБ ОЗУ.

Я думал, что Subversion может сделать все это, но, очевидно, он не может . (По крайней мере, это не могло быть пару лет назад, и, насколько я знаю, все еще не может; поправьте меня, если я ошибаюсь.)

Существует ли libre VCS или аналогичный, способный на все это?

Спасибо за вашу помощь.

Ответы [ 3 ]

1 голос
/ 20 февраля 2010

То, что вы хотите, лучше всего достигается с помощью rsync и снимков. Вы можете узнать об этом здесь: http://rsnapshot.org/

В любом случае, этот вопрос лучше подходит для серверной ошибки или суперпользователя.

0 голосов
/ 21 февраля 2010

Git действительно не может этого сделать, как и Mercurial, и, насколько мне известно, любая другая современная система SCM. Причина в том, что 1) они были разработаны для исходного кода и 2) разумно сохранять и обновлять временные метки метаданных файла перед лицом ветвлений, слияний и других действий SCM практически невозможно. Кроме того, все они могут установить mtime для файлов на время фиксации, что так же полезно, как mtime для подавляющего большинства случаев использования. Использование mtimes также вызывает много ненужного оттока в системах SCM (можете ли вы представить, хранятся ли они также в прошлом?) Старые файловые SCM, такие как CVS и даже Visual SourceSafe, хранят mtimes, но у них есть много других недостатков для вашего случая использования они не заслуживают рассмотрения.

Общим решением, предлагаемым для всех этих SCM, является скрипт ловушки фиксации / обновления, который хранит метаданные вашего файла (временные метки, разрешения и т. Д.) В виде отдельного файла в хранилище или даже в качестве пользовательского свойства SVN. Ваш скрипт обновляет этот файл при регистрации и восстанавливает метаданные при проверке / обновлении. Слияние становится безобразным, несмотря ни на что. В интернете есть множество таких сценариев, как примеры.

Если вам нужен переносимый архив, самое простое, что можно сделать, это просто подписи tar + xdelta + SHA1SUM / gpg, чтобы «связать» все вместе.

0 голосов
/ 19 февраля 2010

Я сомневаюсь, что есть VCS, который делает именно то, что вы хотите. Я бы не выбрал такую ​​функцию, как мой основной критерий выбора VCS. Однако, используя svn и git, вы можете хранить свойства вместе с вашим коммитом и включать защиту, чтобы не допустить редактирования свойств.

...