Linux系统下从A主机到B主机传输文件的11种超级详细方法

在Linux系统中,将文件从一台主机传输到另一台主机是常见的任务。下面我将提供多种方法,每种方法都包含超级详细的步骤,帮助您顺利完成文件传输。


方法一:使用 scp 命令(安全复制)

scp(Secure Copy)是基于SSH协议的命令行工具,用于在主机之间安全地复制文件。

步骤:

  1. 确保SSH服务正常运行在A主机和B主机上,都需要安装并运行SSH服务。
    # 在Ubuntu/Debian上安装SSH服务 sudo apt-get update sudo apt-get install openssh-server
    # 在CentOS/RHEL上安装SSH服务 sudo yum install openssh-server
  2. 检查SSH服务状态
    sudo systemctl status ssh
    # 对于Ubuntu/Debian sudo systemctl status sshd
    # 对于CentOS/RHEL 如果服务未运行,启动服务:sudo systemctl start ssh
  3. 使用scp命令复制文件在A主机的终端中,运行:
    scp /path/to/fileA username@B_host_IP:/path/to/destination/
    • /path/to/fileA:文件A在A主机上的完整路径。
    • username:在B主机上的用户名。
    • B_host_IP:B主机的IP地址或主机名。
    • /path/to/destination/:文件在B主机上的目标路径。
  4. 输入密码在提示时,输入B主机上用户的密码。

示例:

假设:

  • 文件A位于A主机的/home/user/fileA.txt
  • B主机的IP是192.168.1.100,用户名是userB
  • 想将文件复制到B主机的/home/userB/目录。

命令为:

scp /home/user/fileA.txt userB@192.168.1.100:/home/userB/

方法二:使用 rsync 命令(远程同步)

rsync 是一种快速而多功能的文件复制工具,可以高效地同步文件和目录。

步骤:

  1. 在两台主机上安装rsync
    # 在Ubuntu/Debian上 sudo apt-get install rsync
    # 在CentOS/RHEL上 sudo yum install rsync
  2. 使用rsync命令同步文件在A主机的终端中,运行:
    rsync -avz /path/to/fileA username@B_host_IP:/path/to/destination/ 参数说明:
    • -a:归档模式,保留链接、权限、所有者、组等。
    • -v:详细输出。
    • -z:传输时压缩文件。
  3. 输入密码在提示时,输入B主机上用户的密码。

示例:

rsync -avz /home/user/fileA.txt userB@192.168.1.100:/home/userB/

方法三:使用 sftp 命令(SSH文件传输协议)

sftp 是一种交互式文件传输程序,类似于ftp,但通过SSH提供安全性。

步骤:

  1. 启动sftp会话
    在A主机的终端中,运行:sftp username@B_host_IP
  2. 输入密码
    在提示时,输入B主机上用户的密码。
  3. 上传文件
    sftp>提示符下,运行:put /path/to/fileA /path/to/destination/
    • put:将本地主机的文件上传到远程主机。
    • /path/to/fileA:文件A在A主机上的完整路径。
    • /path/to/destination/:文件在B主机上的目标路径。
  4. 退出sftp会话
    bye

示例:

sftp userB@192.168.1.100
# 输入密码
sftp> put /home/user/fileA.txt /home/userB/
sftp> bye

方法四:使用 FTP 服务

FTP(文件传输协议)用于在主机之间传输文件,但安全性较低,通常在局域网或不涉及敏感数据的情况下使用。

步骤:

  1. 在B主机上安装FTP服务器
    # 在Ubuntu/Debian上 sudo apt-get install vsftpd
    # 在CentOS/RHEL上 sudo yum install vsftpd
  2. 启动FTP服务
    sudo systemctl start vsftpd sudo systemctl enable vsftpd
  3. 配置FTP服务器(可选)
    根据需要编辑/etc/vsftpd.conf文件,设置匿名访问、用户权限等。
  4. 在A主机上使用FTP客户端
    ftp B_host_IP
  5. 登录FTP服务器
    输入用户名和密码。
  6. 上传文件
    put /path/to/fileA
  7. 退出FTP会话
    bye

注意:

由于FTP明文传输,不安全。建议使用FTPSSFTP等安全协议。


方法五:使用 Netcat 命令

Netcat 是一种功能强大的网络工具,可以用于在主机之间传输文件。

步骤:

  1. 在B主机上监听端口并接收文件
    nc -l -p 12345 > /path/to/destination/fileA
    • -l:监听模式。
    • -p 12345:监听端口12345。
  2. 在A主机上发送文件
    nc B_host_IP 12345 < /path/to/fileA
  3. 等待传输完成传输完成后,命令会自动退出。

示例:

在B主机上:

nc -l -p 12345 > /home/userB/fileA.txt

在A主机上:

nc 192.168.1.100 12345 < /home/user/fileA.txt

注意:

  • Netcat传输不加密,适用于可信网络。
  • 确保防火墙允许所用端口的通信。

方法六:使用 NFS(网络文件系统)

NFS允许您在网络上共享目录,并像访问本地目录一样访问远程文件。

步骤:

  1. 在B主机上安装NFS服务器
    # 在Ubuntu/Debian上 sudo apt-get install nfs-kernel-server
    # 在CentOS/RHEL上 sudo yum install nfs-utils
  2. 配置NFS共享编辑/etc/exports文件,添加共享目录。例如:
    /home/userB/nfs_shared 192.168.1.0/24(rw,sync,no_subtree_check)
    • /home/userB/nfs_shared:要共享的目录。
    • 192.168.1.0/24:允许访问的网络。
  3. 启动NFS服务
    sudo systemctl start nfs-server sudo systemctl enable nfs-server
  4. 在A主机上安装NFS客户端
    # 在Ubuntu/Debian上 sudo apt-get install nfs-common # 在CentOS/RHEL上 sudo yum install nfs-utils
  5. 挂载远程NFS共享
    sudo mount B_host_IP:/home/userB/nfs_shared /mnt
  6. 复制文件到挂载点
    cp /path/to/fileA /mnt/
  7. 卸载NFS共享(可选)
    sudo umount /mnt

注意:

  • 确保防火墙允许NFS所需的端口。
  • NFS适用于局域网环境。

方法七:使用 SSHFS(SSH文件系统)

SSHFS允许您通过SSH将远程文件系统挂载到本地。

步骤:

  1. 在A主机上安装SSHFS
    # 在Ubuntu/Debian上 sudo apt-get install sshfs # 在CentOS/RHEL上 sudo yum install sshfs
  2. 创建挂载点目录
    mkdir ~/remote_fs
  3. 挂载远程文件系统
    sshfs username@B_host_IP:/path/to/remote/directory ~/remote_fs
  4. 复制文件
    cp /path/to/fileA ~/remote_fs/
  5. 卸载文件系统
    fusermount -u ~/remote_fs

示例:

sshfs userB@192.168.1.100:/home/userB/ ~/remote_fs
cp /home/user/fileA.txt ~/remote_fs/
fusermount -u ~/remote_fs

方法八:使用 Samba(SMB/CIFS)

Samba允许在Linux和Windows系统之间共享文件。

步骤:

  1. 在B主机上安装Samba
    # 在Ubuntu/Debian上 sudo apt-get install samba # 在CentOS/RHEL上 sudo yum install samba samba-client
  2. 配置Samba共享编辑/etc/samba/smb.conf,添加:ini复制代码[shared] path = /home/userB/shared available = yes valid users = userB read only = no browsable = yes public = yes writable = yes
  3. 创建共享目录并设置权限
    mkdir /home/userB/shared chmod 2775 /home/userB/shared
  4. 设置Samba用户密码
    sudo smbpasswd -a userB
  5. 启动Samba服务
    sudo systemctl restart smbd sudo systemctl enable smbd
  6. 在A主机上安装Samba客户端(如果需要)
    # 在Ubuntu/Debian上 sudo apt-get install smbclient cifs-utils
    # 在CentOS/RHEL上 sudo yum install samba-client cifs-utils
  7. 挂载Samba共享
    sudo mount -t cifs //B_host_IP/shared /mnt -o username=userB
  8. 复制文件
    cp /path/to/fileA /mnt/
  9. 卸载共享
    sudo umount /mnt

注意:

  • 确保防火墙允许Samba所需的端口(如137-139, 445)。
  • Samba配置较复杂,适用于需要跨平台共享的情况。

方法九:使用简单HTTP服务器

在A主机上启动HTTP服务器,B主机通过浏览器或命令行下载文件。

步骤:

  1. 在A主机上导航到文件目录
    cd /path/to/
  2. 启动HTTP服务器
    • 使用Python 3:python3 -m http.server 8000
    • 使用Python 2:python -m SimpleHTTPServer 8000
  3. 在B主机上下载文件
    • 使用浏览器:在浏览器地址栏输入:arduino复制代码http://A_host_IP:8000/fileA
    • 使用命令行:wget http://A_host_IP:8000/fileA

注意:

  • 这种方法不加密,适用于小文件和非敏感数据。
  • 确保防火墙允许端口8000的通信。

方法十:使用电子邮件发送(适用于小文件)

将文件作为附件,通过电子邮件发送到B主机的邮箱。

步骤:

  1. 在A主机上安装邮件客户端
    sudo apt-get install mailutils # 对于Ubuntu/Debian sudo yum install mailx # 对于CentOS/RHEL
  2. 发送邮件
    echo "Here is the file you requested" | mail -s "FileA" -a /path/to/fileA recipient@example.com
    • -s:邮件主题。
    • -a:附件文件。
    • recipient@example.com:B主机可访问的邮箱地址。

注意:

  • 配置邮件服务器可能较复杂,需确保A主机能发送邮件。
  • 受限于邮件附件大小限制,通常为25MB左右。

方法十一:使用 tar 通过SSH传输

将文件通过SSH直接传输,无需先创建中间文件。

步骤:

  1. 在A主机上运行命令
    tar cf - /path/to/fileA | ssh username@B_host_IP 'tar xf - -C /path/to/destination/'

示例:

tar cf - /home/user/fileA.txt | ssh userB@192.168.1.100 'tar xf - -C /home/userB/'

总结

以上提供了多种在Linux系统中从A主机将文件A传输到B主机的方法。根据您的具体环境和需求,选择最适合的方法:

  • 安全性高:使用scprsyncsftpsshfstar+ssh
  • 适用于局域网NFSSambaNetcat
  • 简单快速scprsyncsftp
  • 跨平台共享Samba

在操作过程中,请注意网络安全,确保传输过程中的数据安全。同时,配置防火墙和权限,防止未经授权的访问。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:zbxhhzj@qq.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
转载本站文章请保留原文链接,如文章内说明不允许转载该文章,请不要转载该文章,谢谢合作。

给TA赞助
共{{data.count}}人
人已赞助
Java

理解Java中isEmpty()和isBlank()方法的区别

2023-7-24 14:02:15

Java

CentOS 7 使用 Docker 搭建 MySQL 8.0.32 的全面详细教程

2024-10-12 15:49:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
购物车
优惠劵
搜索