Windows与Linux之间拷贝数据的方法

本文介绍了从Windows系统向Linux系统传输文件的多种方法,包括使用PSCP.EXE、Ubuntu操作界面、创建共享文件夹等,并提供了具体的命令示例及可能遇到的问题解决办法。

在维护Linux服务器的时候,我们有时需要拷贝Windows下的文件到服务器,这个时候我们需要如何通讯呢?在虚拟机中,我们有时候需要和本机进行数据的交互,可能会繁琐通过网络传送数据,或者直接通过U盘这样的方式在本机和虚拟机之间进行数据的交互。

一、过程和方法

Windows下拷贝文件(tuning-primer.sh)到Ubuntu服务器上:

方式一:使用Putty里面的PSCP.EXE进行拷贝

1.下载PSCP.EXE:putty.zip,拷贝PSCP.EXE到E盘目录下;

2.在运行里输入cmd,进入E盘,输入下面的命令:

E:\>pscp.exe tuning-primer.sh bfadmin@192.168.1.126:/tmp/


 

方式二:使用Ubuntu(DeskTop-10)的操作界面进行拷贝:

1.首先你需要为你的虚拟机里面的Ubuntu分配一个内网IP,可参考:VMware(Ubuntu)设置独立IP地址

2.在Ubuntu的【位置】-【连接到服务器】-【服务器类型】中选择【Windows共享】,在【服务器】中输入你Windows的IP地址,点击【连接】这样你就可以访问你Windows下的所有文件了。

3.如何使用命令进行上面的操作,待以后测试;

方式三:可参考:VMWARE WORKSTATION 虚拟机(客户机)创建和主机共享文件夹(为经过测试)

方式四:如果是使用VMware作为虚拟机的话,可以安装VMware Tools,直接拖文件到虚拟机就可以了。

方式五:以FTP的形式进行下载:Wget http://192.168.1.10:81/greenplum.bin /tmp/greenplum.bin

二、遇到的问题

我在本地Windows拷贝到本地虚拟机的Ubuntu(DeskTop-10)下,提示下面的错误:

E:\>pscp.exe e:\downloads\jdk-6u31-linux-i586-rpm.bin chen@192.168.1.147:/tmp/

测试拷贝到126(一个内网地址的机器,Server版本)就没问题


 

后来发现是我的Ubuntu是没装ssh,执行下面的命令查看并安装:

#ssh

#ufw status

#apt-get -y install openssh-client openssh-server

再次测试,成功了:


 

三、注意事项

1.PSCP是Putty安装包所带的远程文件传输工具,使用和Linux下scp命令相似。

2.建议将PSCP.EXE放到C:\WINDOWS\system32下面,这样就可以在任何地方调用了。

3.使用PSCP.EXE ?查看命令参数与选项。

4.PSCP.EXE的常用方法:

1)把本地文件file传输到Linxu服务器的/tmp/

E:\pscp.exe file root@192.168.1.147:/tmp/

或者E:\pscp.exe -l root file 192.168.1.147:/tmp/(这里-l root要在file之前)

2)把本地目录dir、文件file传输到Linux服务器的/tmp/,并指定服务器端口2009

E:\pscp.exe -P 2009 -r dir file root@192.168.1.147:/tmp/

3)把服务器上的/tmp/file文件取回本地当前目录

E:\pscp.exe root@192.168.1.147:/tmp/file

4)把服务器上的/tmp/dir目录取回本地"D:\data\"

E:\pscp.exe -r root@192.168.1.147:/tmp/dir "D:\data\"

<think>我们参考用户的问题,用户想了解如何在Linux系统中从Windows共享文件夹拷贝数据。根据引用[1]和[2]的内容,有两种主要方法: 1. 使用mount命令挂载Windows共享文件夹Linux本地目录,然后使用cp命令拷贝。 2. 使用smbclient工具进行文件传输。 由于引用[2]详细描述了挂载方法,我们将重点放在这种方法上。同时,我们也会简要介绍smbclient的使用。 步骤分解: 第一步:在Windows上设置共享文件夹(用户已经完成,但为了完整性,简要说明) 第二步:在Linux上创建挂载点 第三步:使用mount命令挂载共享文件夹 第四步:拷贝文件 第五步:卸载共享文件夹(可选,如果不再需要) 另外,如果需要永久挂载,可以修改/etc/fstab文件。 注意:在挂载时需要提供Windows系统的用户名和密码。 详细步骤: 方法一:挂载共享文件夹拷贝 1. 在Linux系统中创建挂载点目录(例如:/mnt/win_share): ```bash sudo mkdir -p /mnt/win_share ``` 2. 挂载Windows共享文件夹到该目录: ```bash sudo mount -t cifs //Windows_IP/共享文件夹名称 /mnt/win_share -o username=Windows用户名,password=Windows密码 ``` 例如: ```bash sudo mount -t cifs //192.168.1.100/ShareFolder /mnt/win_share -o username=admin,password=123456 ``` 如果用户名包含域名(如公司域),可以这样写: ```bash username=domain\\user ``` 注意:如果权限问题,可能还需要指定文件模式(file_mode)和目录模式(dir_mode),例如: ```bash -o username=admin,password=123456,file_mode=0777,dir_mode=0777 ``` 3. 挂载成功后,就可以通过挂载点目录(/mnt/win_share)访问Windows共享文件夹中的文件,然后使用cp命令拷贝到本地其他目录: ```bash cp /mnt/win_share/file.txt /home/user/destination/ ``` 4. 拷贝完成后,可以卸载共享文件夹: ```bash sudo umount /mnt/win_share ``` 5. 如果需要每次开机自动挂载,可以编辑/etc/fstab文件: ```bash sudo vim /etc/fstab ``` 在文件末尾添加一行: ``` //Windows_IP/共享文件夹名称 /mnt/win_share cifs username=用户名,password=密码,file_mode=0777,dir_mode=0777 0 0 ``` 保存后,运行`sudo mount -a`测试并重新挂载。 方法二:使用smbclient(无需挂载,直接拷贝) 1. 安装smbclient(如果未安装): Ubuntu/Debian: ```bash sudo apt install smbclient ``` CentOS/RHEL: ```bash sudo yum install samba-client ``` 2. 使用smbclient连接到共享文件夹拷贝文件: ```bash smbclient //Windows_IP/共享文件夹名称 -U 用户名 ``` 然后输入密码,进入交互式命令行。 3. 在smbclient命令行中,可以使用命令下载文件: ``` smb: \> get 文件名 ``` 或者上传文件: ``` smb: \> put 本地文件名 ``` 4. 也可以直接使用非交互模式下载文件: ```bash smbclient //Windows_IP/共享文件夹名称 -U 用户名 -c "get 文件名" ``` 注意:方法二适合单个文件或少量文件的拷贝,而方法一适合需要批量拷贝或频繁访问的情况。 引用说明: 引用[2]中详细描述了挂载方法,包括临时挂载和永久挂载,因此我们参考了该引用。 根据用户的问题,我们重点回答挂载方法方法一),因为这是最常用且高效的方式。 安全问题:在命令行中直接写密码可能会被历史记录捕获,因此建议在永久挂载时使用凭证文件(credentials file)来保存用户名和密码。 例如,创建凭证文件(如~/.smbcredentials): ``` username=admin password=123456 ``` 然后修改权限为600: ```bash chmod 600 ~/.smbcredentials ``` 然后在挂载命令中使用: ```bash sudo mount -t cifs //Windows_IP/共享文件夹名称 /mnt/win_share -o credentials=~/.smbcredentials ``` 在fstab中同样可以使用: ``` //Windows_IP/共享文件夹名称 /mnt/win_share cifs credentials=~/.smbcredentials,file_mode=0777,dir_mode=0777 0 0 ``` 这样更安全。 最后,生成相关问题。 </think> ### Linux系统中从Windows共享文件夹拷贝数据方法Linux系统中访问Windows共享文件夹拷贝数据,主要通过**挂载共享目录**实现。以下是详细操作步骤: --- #### 一、基础挂载拷贝流程 1. **在Windows端设置共享文件夹** - 右键点击目标文件夹 → 属性 → 共享 → 添加`Everyone`用户并赋予读写权限[^1][^2] 2. **Linux端创建挂载点** ```bash sudo mkdir /mnt/win_share # 创建挂载目录 ``` 3. **挂载共享文件夹** ```bash sudo mount -t cifs //Windows_IP/共享名 /mnt/win_share \ -o username=Windows用户名,password=密码,vers=3.0 ``` - **关键参数说明**: - `vers=3.0`:指定SMB协议版本(Windows 10/11通常用3.0) - `file_mode=0777,dir_mode=0777`:设置Linux端权限(可选) - 示例: ```bash sudo mount -t cifs //192.168.1.100/Documents /mnt/win_share \ -o username=admin,password=P@ssw0rd,vers=3.0 ``` 4. **拷贝数据到本地系统** ```bash cp -r /mnt/win_share/* /home/user/data/ # 递归拷贝所有文件 ``` --- #### 二、永久挂载配置(开机自动挂载) 1. **编辑fstab文件** ```bash sudo vim /etc/fstab ``` 2. **添加挂载配置** ```text //Windows_IP/共享名 /mnt/win_share cifs credentials=/etc/smbcreds,vers=3.0,uid=1000 0 0 ``` - 创建凭证文件避免密码明文: ```bash sudo vim /etc/smbcreds ``` 内容: ```text username=Windows用户名 password=密码 ``` 3. **设置文件权限并测试** ```bash sudo chmod 600 /etc/smbcreds # 限制访问权限 sudo mount -a # 测试配置 ``` --- #### 三、替代方法:使用`smbclient`直接拷贝 无需挂载,直接通过SMB协议传输: ```bash # 下载单个文件 smbclient //Windows_IP/共享名 -U 用户名 -c "get 文件名 本地路径" # 下载整个目录 smbclient //Windows_IP/共享名 -U 用户名 -c "prompt; recurse; mget *" ``` - 示例: ```bash smbclient //192.168.1.100/Documents -U admin%P@ssw0rd -c "get report.pdf ~/downloads/" ``` --- #### 四、常见问题解决 1. **协议版本错误** 若报错`协议不支持`,尝试修改`vers`参数: - Windows 7/Server 2008: `vers=2.1` - Windows XP: `vers=1.0` 2. **权限不足问题** 在挂载命令中添加权限参数: ```bash -o uid=$(id -u),gid=$(id -g),file_mode=0775,dir_mode=0775 ``` 3. **中文乱码处理** 添加编码参数: ```bash -o iocharset=utf8 ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值