复制到NAS时如何保留文件修改时间?


8

我最近在网络上安装了Synology DiskStation。我是使用Nautilus 3.4.2中的“浏览网络”按钮从Ubuntu 12.04.1计算机上安装的。它在Nautilus中显示为afp://randall@DiskStation.local/photo/。

到目前为止,一切都很好。然后,我向其中上传了很多照片,所有照片的修改时间都长达数月。当我查看DiskStation上的照片目录时,它们在复制时具有修改时间,而不是源计算机上的修改时间。在DiskStation上按日期对它们进行排序非常重要。

有没有办法重新复制文件,但保留其修改日期?也许我以错误的方式安装了DiskStation。也许Nautilus是使用错误的工具。有什么建议么?

顺便说一句,我已经通过Ubuntu / Ubuntu 10.04、10.10、11.04和11.10的SMB / CIFS将千兆字节的照片移到了不同​​的NAS(Plextor PX-EH)上,并保留了修改时间。问题必须出在Synology或某些Ubuntu 12.04软件上。


该NAS是否支持SSH访问?如果是,则可以使用rsync或其GUI前端之一来同步照片。此外,它应该支持SMB / CIFS过,你可以在Ubuntu直接安装,复制数据cprsync或任何其他工具。
谢尔盖

rsync是最好的复制/同步工具。-a(-rlptgoD)保留修改时间。有关更多详细信息,请参见man rsync。但是,这在两台主机上都需要SSH + rsync。
Terry Wang

Answers:


3

我相信我已经解决了问题。在Ubuntu 12.04中,在Nautilus中有两种连接到远程DiskStation NAS的方法。一个保留修改时间,一个不保存。

在Nautilus窗口左侧的菜单中,“浏览网络...”按钮最终会导致与DiskStation的AFP(Apple归档协议)连接,Nautilus或cp -p副本都不会通过该连接保留修改时间。我曾尝试在DiskStation中禁用Apple支持,但是在那种模式下,DiskStation在浏览网络中甚至都不可见。

在Nautilus的“文件”菜单中,有一个“连接到服务器...”选项,提供了许多协议。我选择了Windows,输入了凭据,并且连接顺利。在这种模式下,修改时间得以保留,因此我能够重新复制照片并保留其日期。

感谢Sergey和david6的建议。希望人们会发现此信息有价值。


我已经使用“连接到服务器”从Ubuntu 18.04上的Nautilus连接到另一台Ubuntu计算机,并且在复制文件时,Nautilus保留了目录的时间戳,但没有文件的时间戳。午夜指挥官将所有文件修改时间戳记设置为复制时间。BeyondCompare保留文件的时间戳,但不保留目录的时间戳。
Dan Dascalescu

2

标准cp命令具有--preserve标志,该标志在复制时保留某些属性(默认情况下-模式,所有权,时间戳记)。

所以像这样:

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

应该在“正常”情况下解决问题。但是,afp://URL中的内容使我感到困惑-是Apple Filing Protocol吗?在这种情况下,所有赌注都关闭。

有人认为我想补充一下-依靠文件修改日期对照片进行分类非常脆弱。这就是图像元数据(EXIF等)的用途。或者,至少根据拍摄日期将它们放在目录中:photos / 2012/12/05等。


感谢您的提示,谢尔盖。如果必须使用命令行,我会这样做,但我希望Ubuntu能够通过GUI进行正确的操作。它具有过去(2004年12月之前)的功能。是的,当我注意到修改时间问题时,我打算将照片移动到按月组织的文件夹中。
兰德尔·库克

cp -p从终端尝试了此错误:“ cp:在DiskStation / target_dir / image.JPG中为randall保留'.gvfs / AFP卷照片的时间:不支持该操作”。所以我想cp -p这行不通。我将尝试david6的建议。
兰德尔·库克

使用Mac OS通过终端访问Synology NAS时,cp -p不会保留时间戳。我已经通过安装了NAS smb。我向Synology寻求支持,显然缺乏保留是默认行为。另一方面,rsync确实保留时间戳。
andrewj 2013年

仅关于图像,如果拍摄的EXIF图像过时,您就会感到困扰(而且确实脆弱)。如果有人想从Exif信息中恢复上次修改日期,请看这里:→ photo.stackexchange.com/a/69193/48640
Frank Nocke


2

这是用于远程复制的经典推/拉问题。

收件人主机不履行的日期戳收到的文件。Nautilus也有同样的错误,从10.04 LTS到12.10 ..

在两台Ubuntu主机之间进行复制时,通过始终远程主机(源)复制本地主机(收件人),可以解决此问题(对于Nautilus )。(又名“ PULL ”)


您的问题出在NAS盒上,而不是Ubuntu。

您需要它来兑现接收文件的日期戳(默认情况下)。

您是否正在使用NFS(Linux)或CIFS(Windows)进行文件共享?


谢谢,david6。我绝对不使用NFS,因为它已在DiskStation上禁用,但是启用了Windows和Mac文件共享。当我连接到DiskStation时,Nautilus(我想)只问我一个用户名和密码,而不是一个协议。我得到的安装架的名称中带有“ AFP”,因此我猜它选择了Apple文件协议。我将尝试强制CIFS挂载,看看是否可行,然后找到一种自动获取该挂载的方法。
兰德尔·库克

0

事实证明,在2019年为文件和目录保留时间戳仍然是一个问题!我使用Ubuntu 18上的Nautilus通过SFTP将文件从Ubuntu 16计算机复制到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没有帮助)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.