Как сохранить время модификации файла при копировании на NAS?

Я недавно установил Synology DiskStation в своей сети. Я подключил его с компьютера Ubuntu 12.04.1 с помощью кнопки "Обзор сети" в Nautilus 3.4.2. Он отображается как afp://randall@DiskStation.local/photo/ в Наутилус.

Все идет нормально. Затем я загрузил на него множество фотографий, все с изменениями, охватывающими несколько месяцев. Когда я посмотрел каталог фотографий на DiskStation, все они имели время модификации на момент копирования, а не время модификации на исходном компьютере. Так много для сортировки их по дате на DiskStation.

Есть ли способ повторно скопировать файлы, но сохранить дату их изменения? Возможно, я смонтировал DiskStation неправильно. Возможно, Наутилус был неправильным инструментом для использования. Какие-либо предложения?

Кстати, я переместил гигабайты фотографий на другой NAS (Plextor PX-EH) по SMB/CIFS из Ubuntu 10.04, 10.10, 11.04 и 11.10 с полностью сохраненными временами модификации. Проблема должна быть с Synology или некоторым программным обеспечением Ubuntu 12.04.

5 ответов

Решение

Я считаю, что я решил проблему. В Ubuntu 12.04, в Nautilus есть два способа подключения к удаленному DiskStation NAS. Один сохраняет время модификации, другой нет.

В меню в левой части окна Nautilus кнопка Обзор сети... в конечном итоге приводит к подключению AFP (Apple Filing Protocol) к DiskStation, через которое ни Nautilus, ни cp -p копии сохраняют время модификации. Я попытался отключить поддержку Apple в DiskStation, но в этом режиме DiskStation даже не был виден в Browse Network.

В меню Файл Наутилуса есть опция Подключиться к серверу..., которая предлагает множество протоколов. Я выбрал Windows, ввел свои учетные данные и без проблем подключился. В этом режиме время модификации сохраняется, поэтому я смог повторно скопировать мои фотографии и сохранить их даты.

Спасибо Сергей и david6 за ваши предложения. Надеюсь, люди найдут эту информацию ценной.

Это классическая проблема push/pull для удаленного копирования.

Хост получателя не соблюдает отметку даты полученных файлов. Наутилус имеет ту же ошибку, с 10.04 LTS до 12.10 ..

Это решается (для Nautilus) при копировании между двумя хостами Ubuntu путем постоянного копирования с удаленного хоста (источника) на локальный хост (получателя). (AKA ' PULL ')


Ваша проблема с сетевым хранилищем, а не с Ubuntu.

Это необходимо для отметки даты получения файлов (по умолчанию).

Используете ли вы NFS (Linux) или CIFS (Windows) для обмена файлами?

Стандарт cp команда имеет --preserve флаг, который при копировании сохранил определенные атрибуты (по умолчанию - режим, владение, метки времени).

Так что-то вроде этого:

cp -rp /source/photos/folder /destination/photos/folder

следует делать свое дело в "нормальном" случае. Тем не менее afp:// вещь в URL смущает меня - это протокол Apple Filing Protocol? В этом случае все ставки отключены.

Одна мысль, которую я хотел бы добавить - полагаться на даты изменения файлов для каталогизации ваших фотографий очень хрупко. Для этого предназначены метаданные изображения (EXIF и т. Д.). Или, по крайней мере, просто поместите их в каталоги в соответствии с датой их съемки: фотографии /2012/12/05 и т. Д.

Оказывается, что сохранение временных меток для файлов и каталогов все еще остается проблемой в 2019 году! Я копировал файлы с компьютера с Ubuntu 16 на Ubuntu 18 по SFTP, используя Nautilus на Ubuntu 18, и у всех файлов была текущая временная метка, но у каталогов были оригинальные временные метки. Другие инструменты тоже вышли из строя:

Что работало, так это монтирование удаленной файловой системы с использованием sshfs:

$ sudo mkdir /mnt/remote-machine
$ sudo sshfs -o allow_other,default_permissions dandv@10.15.x.x:/ /mnt/remote-machine
$ cp -rp /mnt/remote-machine/path/to/files ./
$ # ... or use another file manager

Копирование из смонтированного пути также позволило Midnight Commander сохранить временные метки (но не помогло BeyondCompare).

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

Из man mount.cifs:

             vers=
           SMB protocol version. Allowed values are:

           ·   1.0 - The classic CIFS/SMBv1 protocol. This is the default.

           ·   2.0 - The SMBv2.002 protocol. This was initially introduced in
               Windows Vista Service Pack 1, and Windows Server 2008. Note that
               the initial release version of Windows Vista spoke a slightly
               different dialect (2.000) that is not supported.

           ·   2.1 - The SMBv2.1 protocol that was introduced in Microsoft
               Windows 7 and Windows Server 2008R2.

           ·   3.0 - The SMBv3.0 protocol that was introduced in Microsoft
               Windows 8 and Windows Server 2012.

           Note too that while this option governs the protocol version used,
           not all features of each version are available.
      sudo mount -t cifs //mynas/Disk1share /mnt/Data/NAS -o user=me,password=mine,uid=$(id -u),vers=2.0
Другие вопросы по тегам