苦战samba乱码『看我出招系列』

作者:田逸([email protected])  
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。

    一台运行
Redhat 7.3 的服务器由于机器使用时间过久而出现硬盘故障,具体的表现是系统运行一段时间后就挂起了;经诊断是磁盘出现坏道所致。于是通知用户尽可能的备份数据,然后申请一个新的硬盘,打算把数据复制到新的系统。在做这个事情之前,我试着在单用户下运行 fsck 检查文件系统,但没有成功,看来只得用新的系统来挂接有故障的硬盘,然后再复制目录和文件。 作者:田逸 [出处:51cto 博客

在硬盘上我用 RedHat AS 4 替代以前的 RedHat linux 7 ,安装完成后以源码方式安装了 Samba 软件,操作步骤如下:
请输入内容
1 、下载文件 [root@localhost ~]# wget [url]http://us5.samba.org/samba/ftp/samba-3.0.23d.tar.gz[/url]  
2 、在当前目录解压文件 [root@localhost ~]# tar zxvf samba- 3.0.23 d.tar.gz; cd samba-3.0.23d/source
3 、配置、编译及安装    [root@localhost ~]# ./configure �Cprefix=/usr/local/samba  // 指定安装目录为 /usr/local/samba
   [root@localhost ~]#make;make install
4 、拷贝 samba 的配置文件   [root@localhost ~]# cd ..; cd examples; cp smb.conf.default /usr/local/samba/lib/smb.conf.
5 、修改配置文件 /usr/local/samba/lib/smb.conf 。根据自己的需求修改,一般而言,默认的情况都能满足要求。如果做过修改,修改完成后,运行 testperm /usr/local/samba/lib/smb.conf 检查一下配置文件是否正确。如果正确无误将出现类似后面的输出: Loaded services file OK.
6 、添加 samba 用户。因为 samba 用户需是系统用户,因此在添加 samba 用户时需要检查添加的用户是否属于系统用户。再执行命令 /usr/local/samba/bin/smbpasswd  -a <username> 输入 2 次同样的密码就能成功添加 samba 用户。顺便说明一下,很多初学者会忽略添加 samba 用户这个过程,从而导致他不能从 windows 客户端正常登陆。
7 、启用 samba 服务。 /usr/local/samba/sbin/nmbd /usr/local/samba/sbin/smbd
作者:田逸 [出处:51cto 博客
    正确运行后,我把损坏的硬盘挂接到目录 /mnt/hdd5 下,然后按照以前的目录布局把相关的目录及文件复制到相关的位置,并给其相应的权限。做完后告诉用户(就是同事)让他们去恢复和使用 samba 。一会儿用户反应 samba 的目录和文件出现中文乱码的情况,换机器试也如此,其状态如下图所示:
 
作者:田逸
尝试着修改配置文件,手动加上代码页的语言为 zh_CN, 重新启动 samba 服务,在 windows 的客户端还是乱码,再换成其他编码,还是不行,后来又把 samba 删除换成更新的版本和换成低的版本,也是不行,客户催得很急,心里很是紧张。
作者:田逸
不经意中,发现用 ssh 的客户端软件 securecrt 能正常显示中文,连 samba 的用户目录里的中文名文件和目录都能正常显示,我想:能不能用 ssh 这样的客户端工具来实现一个转换呢?试一试吧!于是我拿出 SSH Secure File Transfer Client 这个工具连接 linux 服务器,察看 linux 服务器这端的文件和目录,发现除了 samba 用户目录的中文乱码外,其他目录的中文名称则能正常显示,接着在 linux samba 用户目录建一个中文名的目录,再从网上邻居访问 samba 发现中文名称显示正常。再试着在 linux 下用 cp 拷贝挂接分区的文件到 samba 用户目录,从 windows 的网上邻居访问 windows 还是乱码,但把那些乱码的中文名目录或文件通过 SSH Secure File Transfer Client 拷贝到 windows 目录却没有乱码,再把这些目录 / 文件拷回通过 SSH Secure File Transfer Client 拷贝 samba 用户目录则正常。于是得到这样的解决办法:在 windows 上通过 SSH Secure File Transfer Client linux 上挂接目录的文件拷贝到 windows 的目录,然后再把这些目录 / 文件拷贝回 linux samba 用户目录即可。
作者:田逸 [url]http://sery.blog.51cto.com[/url]
照上面的办法测试了几个小文件,发现此法可行。但有这样一个问题 需要拷贝的目录大小是数十 GB ,要来回倒腾可能需要很长的时间,而且我的 windows 硬盘的空间还没有这么多的空间来存储这些中转数据,看来还得使用一点技巧。
我的操作是这样的:先用 windows 网上邻居访问 samba 服务器,把 samba 目录映射成 windows 的网络驱动器(如下图所示):
 
 
然后使用 SSH Secure File Transfer Client linux 挂接目录的数据拷贝到 windows 的网络驱动器下(这实际上是在 linux 服务器上进行数据拷贝)。过程如下图所示:
 
 
花了很长一段时间,终于把这数据复制完毕,用 windows 的网上邻居访问 samba ,中文目录和中文文件名显示正常;用 VSS 客户端访问 samba ,一切正常。
 
造成乱码的原因是由于不同版本的 linux 的字符编码不同造成的(因为原来的系统进不去了,其编码不能再找到),通过 windows 中转一下就一致了。
 
 
注:运行命令 export LANG=zh_CN language 临时设置成 zh_CN.
  版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
                                               2007-1-6   于福缘门

你可能感兴趣的:(职场,samba,休闲,看我出招,samba乱码)