Как сохранить время модификации файла при копировании на 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, и у всех файлов была текущая временная метка, но у каталогов были оригинальные временные метки. Другие инструменты тоже вышли из строя:
- BeyondCompare не сохранил метки времени каталогов
- DoubleCommander выдавал случайные ошибки в процессе копирования (никакой другой инструмент этого не делал; обе машины используют SSD и работают на локальном Wi-Fi)
- Midnight Commander потерял метки времени для файлов и каталогов
Что работало, так это монтирование удаленной файловой системы с использованием 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