我已经使用CIFS挂载了Windows目录:
sudo mount -t cifs //SERVER/Bases/some/path ~/mnt/data -o user=windomain/login%password
这有效:
cp mnt/data/blabla/file.mdb .
/usr/bin/mdb-export file.mdb tablename
但这不是:
/usr/bin/mdb-export mnt/data/blabla/file.mdb tablename
输出失败
Can't alloc filename
为什么 ?如何mdb-export
在已装载的文件上执行而不必先在本地复制它?
一种解决方法是更改mount命令以添加noserverino,nounix
选项:
sudo mount -t cifs //SERVER/Bases/some/path ~/mnt/data -o user=windomain/login%password,noserverino,nounix
Florian向我指出了正确的方向,那就是mdb_find_file
MDB工具的源代码中的函数:
static gchar *mdb_find_file(char *file_name)
{
struct stat status;
gchar *mdbpath, **dir, *tmpfname;
unsigned int i = 0;
/* try the provided file name first */
if (!stat(file_name, &status)) {
return g_strdup(file_name);
}
/* Now pull apart $MDBPATH and try those */
mdbpath = (gchar *) getenv("MDBPATH");
/* no path, can't find file */
if (!mdbpath || !strlen(mdbpath)) return NULL;
dir = g_strsplit(mdbpath, ":", 0);
while (dir[i]) {
if (!strlen(dir[i])) continue;
tmpfname = g_strconcat(dir[i++], "/", file_name, NULL);
if (!stat(tmpfname, &status)) {
g_strfreev(dir);
return tmpfname;
}
g_free(tmpfname);
}
g_strfreev(dir);
return NULL;
}
由于我没有任何MDBPATH
env var,因此很明显stat
调用中存在错误。我在那个方向上搜索了一下:
http://www.linuxquestions.org/questions/programming-9/problem-with-stat-on-cifs-852983/
因为我没有尝试重新编译MDB工具来获取错误代码,所以我不确定这是同一个问题,但是添加了该线程建议的选项解决了我的问题,调用时没有更多错误mdb-export
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句