假设我有一个主目录/home/mydir
(没有 sudo 权限),其中有一些文件在文件名中包含时间格式(YYYY-MM-DD_HH:MM:SS),当我尝试将这些文件复制或链接到 nfs 目录时,它会报错,比如
cp: cannot stat './2013010206/NARR_3D:2013-01-03_00': Input/output error
cp: cannot stat './2013010206/NARR_3D:2013-01-03_03': Input/output error
cp: cannot stat './2013010206/NARR_3D:2013-01-03_06': Input/output error
cp: cannot stat './2013010206/met_em.d01.2013-01-02_06:00:00.nc': Input/output error
cp: cannot stat './2013010206/met_em.d01.2013-01-02_09:00:00.nc': Input/output error
cp: cannot stat './2013010206/met_em.d01.2013-01-02_12:00:00.nc': Input/output error
cp: cannot stat './2013010206/met_em.d01.2013-01-02_15:00:00.nc': Input/output error
或者
$ cp ~/tests/2013010206/met_em.d03.2013-01-02_12\:00\:00.nc .
cp: cannot stat './met_em.d03.2013-01-02_12:00:00.nc': Input/output error
我认为它与\
时间格式(12\:00\:00
)中的转义字符反斜杠有关,或者说\:
for all 文件,因为当我使用此命令时
$ cp ~/tests/2013010206/met_em.d03.2013-01-02_12\:00\:00.nc met_em_2013-01-02_12
$ ls
met_em_2013-01-02_12
没关系。所以问题是如何处理它,NFS中有一些设置可以修改,因为我运行的很多exe都需要这种时间格式文件。
以下是中的设置/etc/fstab
IP:/share1 /share1 nfs rw,sync,nosuid,rsize=65536,wsize=65536 0 0
编辑:@AllenZhang:我完全误解了您的问题,将您的问题文本中的所有nfs阅读为NTFS。但是,如果您的nfs 服务器是 Windows 机器,问题可能仍与 NTFS 有关
" * / : < > ? \ |
NTFS 分区的文件名中不允许使用某些字符(包括)。请参阅Wikipedia 文件名主题。您的问题与:
(冒号)字符有关。复制时必须用另一个字符替换它。作为演示,请查看在NTFS卷上运行的以下命令:
将其与在ext4卷上运行的命令进行比较:
回到我们的NTFS卷:
因此,如果您想将一些文件从目录复制到您的NTFS(或nfs)卷,您可以使用此脚本,它会将所有冒号(
:
)替换为下划线(_
)字符,同时复制:不要忘记在以
destination=
. _ 该脚本可以像以下示例一样使用:如果您的文件名包含其他不允许的字符,则必须对其进行更新以处理它们。
注意:我手动重新安装了NTFS卷。我想这会跳过一些用于 Windows 兼容性的特殊挂载选项。这次我能够创建一个文件,其中包含
:
: