本文主要是介绍vsftpd上传的文件,在linux和windows上看到的时间不一致,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
故障介绍:
Linux搭建的vsftpd ,在linux访问(本文使用curlftpfs 挂载ftp到/ftp目录),文件创建和修改的时间是不带时区的时间,而windows访问的文件是带时区的。
故障复现:
Linux搭建
[root@node1 ~]# vsftpd -v
vsftpd: version 3.0.2
配置文件如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
测试访问:
Windows 上传新文件时,刷新后恢复成正常时间:
上传文件完成后:
刷新后:
查看详细时间:
故障分析:
vsftpd 默认使用GMT时区,
所以访问文件时,linux和windows的文件时间都是一样的,区别在于windows会自动加上自己的时区,而linux不会。
Windows 自动认为文件不带时区,所以自动加时区。
Linux 看到的文件不会加上时区,所以会出现时间不对的情况。
解决方法:
暂时未找到linux和windows都解决方法,后续如果找到会更新。
如果需要同时给linux和windows都提供的服务的FTP,并且对时间有要求的场景,不要选择vsftpd作为FTP服务。
如果只是针对linux使用的场景可以如下修改配置文件,windows使用的场景则不用修改:
添加配置文件中以下参数,进行重启
use_localtime=YES
发现linux的时间恢复正常了,但是windows的时间又多了8小时。
这篇关于vsftpd上传的文件,在linux和windows上看到的时间不一致的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!