TSM不能备份中文的问题
环境:
客户端:
(1)用户用 windows系列操作系统;
(2)应用服务器两个(负载均衡)有SAMBA服务器用于接收用户(windows)的各种媒体数据;
(3) 数据库服务器,AIX系统装有ORACLE 10G
服务器端: RedHat ES 4 U4,装有TSM服务器
2. 需求:
TSM服务器可以按策略备份数据库及客户端传到指定应用服务器的媒体数据
3.异常情况描述
用户(windows)文件只要是中文名称,并且传到应用服务器后变成了乱码文件名称(如?????)后,TSM服务器就不能备份这些文件,将其改为正常显示的中文,则备份正常;
4.分析
1)一旦通过SAMBA传入中文名文件到TSM服务器,在别的windows客户端显示正常,而linux上显示的却为乱码(带有”?”号的文件名称),此时TSM不能备份备份这些文件名为乱码的文件;
2)反复研究TSM的编码问题,始终不能找到解决方法;
3)在linux上反复尝试修改Lang的各种变量值(en_US,zh_CN.GB2312等)问题依然存在;
5)手工在web1上建立中文文件,或通过FTP传入服务器的中文名文件,则中文名正常显示,此时TSM能正常备份;
5.总结:
1 )TSM官方资料显示,TSM的编码是根据当前操作系统的编码来确定使用任意一种编码的,所以TSM编码可以备份操作系统正常编码的文件的
2)说明TSM能备份正常显示中文的文件,而不能备份不正常显示的中文文件,所以中文文件名称不正常显示是TSM备份异常的关键;
3)当前情况表明中文不正常显示不是由操作系统导致,也不是TSM客户端导致,而是SAMBA在接收客户的文件的编码不正常导致,所以问题的关键是解决SAMBA编码问题(当初我向redhat公司技术支持提出我的这个想法当即遭到官方否定,花了好几周跟踪我才作出确定我的判断是正确的);
6.问题解决方法:
1)解决samba的编码问题,只要windows客户端往SAMBA共享目录写入的文件和FTP写入的文件是一样的正常显示,那么问题可能会得以解决;
2.)vi /etc/samba/smb.conf(redhat当初说samba不能设置编码,看样子不能相信所谓的权威,最多拿来参考)
unix charset = cp936 (SAMBA和当前liux的操作系统的编码一样为gbk2312,)
dos charset = cp936(使windwos的操作系统的编码都为gbk2312)
service samba restart
注:cp936就是指系统里第936号编码格式,也就是GB2312
3)将以前乱码文件通过windows拷贝到本,然后再通过正确设置的samba拷回去(乱码恢复过程),经过测试备份正常。