1

Подобный, но более сложный, чем этот вопрос: как копировать файлы, не изменяя время создания файла вообще?

Я хочу копировать файлы между компьютерами без указания даты "Изменено" и "Создано".

Цель состоит в том, чтобы сравнить diff S некоторого кода проекта в 3 -х разных компьютерах , которые мне удалось синхронизировать , когда я работал над ними. Но я работал только на одной машине одновременно, и теперь я не помню, какая была самой последней. Это беспорядок, и я хочу объединить копии (и, надеюсь, поставить их под контроль версий) раз и навсегда.

Поэтому, когда я использую инструменты diff , знание дат изменения файла может помочь мне понять и объединить изменения.

2 из 3 компьютеров являются Linux, а 1 - Windows 8.

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

4 ответа4

1

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

cp с опцией -a aka --archive или --preserve = all
или же
rsync с -t .

Эти команды доступны в Linux по умолчанию (также доступны для загрузки для Windows).
Если вас не интересуют инструменты командной строки, используйте инструмент синхронизации, который поддерживает копирование атрибутов, для копирования данных.

1

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

Другой способ - создать на компьютере git-репо и скопировать исходники с другого компьютера, переписав файлы git-репо, или просто добавить их в новую ветку, а затем использовать git merge. Для Windows я предпочитаю клиент Tortoise Git для выполнения всех основных задач управления версиями.

Что касается копии метаданных, как предлагают другие, вы можете использовать rsync -t , cp --preserve=all . Для передачи по FTP вы можете использовать scp -p .

0

Между двумя компьютерами Linux, вы можете использовать rsync, он будет сохранять метки времени, как они есть.
Для Windows вы можете использовать robocopy для копирования файлов без изменения меток времени, возможно, вы можете использовать его для копирования файлов с FTP-сервера в вашем Linux-боксе в Windows.

0

В Linux (и других Unix-подобных ОС) вы можете копировать файлы на флэш-накопитель и с него или с сервера SMB/FTP с

cp -p

Это должно сохранить временные метки.

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

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