技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> 将远程共享文件夹挂载到linux本地目录

将远程共享文件夹挂载到linux本地目录

浏览:3621次  出处信息

今天客户提个新需求,负责扫描的公司提交的数据是存放在Windows虚拟机里,而虚拟机用的磁盘,物理主机无法直接挂载,这样扫描公司提交的图片就需要拷贝到本地磁盘上,一是数据量巨大,第一期需要进数据库的图片就10多T,需要很长的时间来拷贝,二是拷贝会生成落地图片,就需要进行MD5校验,这需要更多的时间,客户提的需求是,在不生成落地文件的情况下将图片加载到数据库,对于这种需求,我首先想到2种方法,一种是在虚拟机上安装ORACLE客户端,SQLLDR将虚拟机上的图片加载到远程数据库,这种方法由于Windows虚拟机不能给登录权限,并且这批数据只能开放读权限而被否定,第二种方法就是将Windows虚拟机上扫描公司提交的图片以共享文件夹的形式提交给我们,然后将Windows的共享文件夹挂载到本地(linux服务器)的目录,也就是相当于将Windows共享的文件夹映射到linux服务器的目录下。
先测试下第一种方法,创建测试表T_LOAD_2M_SF:

SQL> create table t_load_2m_sf (id number, full_name varchar2(100),
2  create_date date, contents blob, constraint pk_t_load_1m_sf
3  primary key(id)) lob (contents) store as securefile;

创建SQLLDR的控制文件sqlldr_2M_sf.ctl,如下:

LOAD DATA
INFILE 'test.txt'
INTO TABLE T_LOAD_2M_SF
TRUNCATE
FIELDS TERMINATED BY ','
(ID CHAR(255),
FULL_NAME CHAR(255),
CREATE_DATE SYSDATE,
CONTENTS LOBFILE(FULL_NAME) TERMINATED BY EOF)

创建SQLLDR的数据文件test.txt:

[oracle@dbserver1 sqlldr]$ vi test.txt
1,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0021-6.jpg
2,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0039-6.jpg
3,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0021-7.jpg
4,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0039-7.jpg
5,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0021-8.jpg
6,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0039-8.jpg
7,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0021-9.jpg
8,/home/oracle/sqlldr/02-01-006-000001/02-01-006-000001-0039-9.jpg

执行加载测试:

[oracle@dbserver1 sqlldr]$ sqlldr test/test@192.168.20.105/fhacdb
control=sqlldr_2M_sf.ctl
SQL*Loader: Release 11.2.0.2.0 - Production on Thu Feb 23 11:55:02
Copyright (c) 1982, 2009,Oracle and/or its affiliates.rights reserved.
Commit point reached - logical record count 7
Commit point reached - logical record count 8

登录数据库验证:

SQL> select * from T_LOAD_2M_SF;
ID  FULL_NAME                CREATE_DATE  CONTENTS
--  -----------------------  -----------  ---------------------------
 1  /home/oracle/sqlldr/02-  23-2-12      FFD8FFE14365457869660000494
    01-006-000001/02-01-006-              92A000800000009000F010200060
    000001-0021-6.jpg                     000007A000000100102000E00000
                                          0800000001201030001000000010
                                          000801A01050001000000A000000
                                          01B01050001000000A800
......

在测试下第二种方法,首先需要将Windows服务器(192.168.50.21)上的共享文件夹(02-01-006-000001)挂载到linux服务器的/mnt目录上,也就相当于将Windows服务器上的共享文件夹映射到linux服务器的/mnt目录下,操作如下:

[root@fhacdb ~]# mount -t cifs -o username=1,password=1
//192.168.50.21/02-01-006-000001 /mnt

进入到/mnt目录下,查看是否可以看到Windows共享文件夹的内容。

[root@fhacdb ~]# cd /mnt/
[root@fhacdb mnt]# ls
02-01-006-000001-0001-10.jpg      02-01-006-000001-0001-2.jpg
02-01-006-000001-0001-5.jpg       02-01-006-000001-0001-8.jpg
02-01-006-000001-0001-3.jpg       02-01-006-000001-0001-6.jpg
02-01-006-000001-0001-9.jpg       02-01-006-000001-0001-1.jpg
02-01-006-000001-0001-4.jpg       02-01-006-000001-0001-7.jpg

修改SQLLDR的数据文件为以下内容。

[oracle@dbserver1 sqlldr]$ vi test.txt
1,/mnt/02-01-006-000001-0001-1.jpg
2,/mnt/02-01-006-000001-0001-2.jpg
3,/mnt/02-01-006-000001-0001-3.jpg
4,/mnt/02-01-006-000001-0001-4.jpg
5,/mnt/02-01-006-000001-0001-5.jpg
6,/mnt/02-01-006-000001-0001-6.jpg
7,/mnt/02-01-006-000001-0001-7.jpg
8,/mnt/02-01-006-000001-0001-8.jpg

进行加载测试。

[oracle@dbserver1 sqlldr]$ sqlldr test/test control=sqlldr_2M_sf.ctl
SQL*Loader: Release 11.2.0.2.0-Production on Thu Feb 23 12:05:35 2012
Copyright (c) 1982, 2009,Oracle and/or its affiliates.rights reserved.
Commit point reached - logical record count 7
Commit point reached - logical record count 8

登录数据库查看是否加载成功。

SQL> select * from T_LOAD_2M_SF;
ID  FULL_NAME               CREATE_DATE CONTENTS
--  ----------------------- ----------- ---------------------------
 1  /mnt/02-01-006-000001-0 23-2-12     FFD8FFE143654578696600004949
    001-1.jpg                           0000800000001201030001000000
                                        010000801A01050001000000A000
                                        2A000800000009000F0102000600
                                        00007A000000100102000E000000
                                        1B01050001000000A800
......

经过测试和客户协商后,客户认为第二种方法可行,目前客户正在与负责网络和硬件的人员协商文件夹共享的问题,等文件共享后,就可以加载第一批数据入库。

建议继续学习:

  1. Centos挂载新硬盘开机自动挂载    (阅读:7736)
  2. 从磁盘映像中挂载或提取指定的 LVM 逻辑卷    (阅读:3892)
  3. linux磁盘管理学习笔记(下):linux分区、挂载    (阅读:3107)
  4. 从磁盘映像中挂载或提取指定分区    (阅读:2852)
  5. 不可靠的EXP远程备份    (阅读:2827)
  6. 代理的远程部分    (阅读:2639)
  7. linux 挂载光驱    (阅读:2462)
  8. linux下挂载U盘过程    (阅读:2259)
  9. Linux内核文件系统挂载分析    (阅读:2017)
  10. msnshell远程代码执行漏洞    (阅读:1790)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1