远程 | 2025-02-28
在 Linux 系统中,远程文件复制传输是一项常见且重要的操作,主要有以下几种方式。
scp 是基于 ssh 协议的安全文件传输工具,具有简单、安全、稳定等特点 。它可以将本地文件或目录传输到远程服务器,也能将远程服务器上的文件或目录传输到本地 。
1、 将本地文件传输到远程服务器:在终端中输入命令 “scp local_file remote_username@remote_ip:remote_folder” 。其中,local_file 指的是本地文件路径,remote_username 指的是远程服务器上的用户名,remote_ip 指的是远程服务器的 IP 地址,remote_folder 指的是远程服务器上存放文件的目录 。例如,要将本地的文件 /home/user/test.txt 传输到远程服务器 192.168.1.100 上的 /home/remote_user/ 目录下,操作命令为 “scp /home/user/test.txt remote_user@192.168.1.100:/home/remote_user/” 。如果远程服务器的 SSH 端口不是默认的 22 端口,需要使用 “-P” 参数指定端口号,如 “scp -P 2222 /home/user/test.txt remote_user@192.168.1.100:/home/remote_user/” 。
2、 将远程服务器上的文件传输到本地:在终端中输入命令 “scp remote_username@remote_ip:remote_file local_folder” 。其中,remote_username 指的是远程服务器上的用户名,remote_ip 指的是远程服务器的 IP 地址,remote_file 指的是远程服务器上的文件路径,local_folder 指的是本地存放文件的目录 。例如,要将远程服务器 192.168.1.100 上的文件 /home/remote_user/test.txt 传输到本地的目录 /home/user/ 下,操作命令为 “scp remote_user@192.168.1.100:/home/remote_user/test.txt/home/user/” 。同样,如果远程服务器的 SSH 端口不是默认的 22 端口,需要使用 “-P” 参数指定端口号 。
3、 传输目录:如果要传输整个目录,需要加上 “-r” 参数 。例如,将本地的目录 /home/user/dir 传输到远程服务器 192.168.1.100 上的 /home/remote_user/ 目录下,命令为 “scp -r /home/user/dir remote_user@192.168.1.100:/home/remote_user/” 。
sftp 是基于 ssh 协议的安全文件传输协议,比 scp 更灵活和功能更强大,提供了远程文件管理的功能,包括文件上传、下载、修改、删除等 。
1、 连接远程服务器:在终端中输入命令 “sftp remote_username@remote_ip” 。其中,remote_username 指的是远程服务器上的用户名,remote_ip 指的是远程服务器的 IP 地址 。例如,“sftp remote_user@192.168.1.100” 。如果远程服务器的 SSH 端口不是默认的 22 端口,需要使用 “-P” 参数指定端口号,如 “sftp -P 2222 remote_user@192.168.1.100” 。
2、 上传文件:连接成功后,输入 “put local_file” 。其中,local_file 指的是本地文件路径 。例如,“put /home/user/test.txt” ,即可将本地的 test.txt 文件上传到远程服务器当前目录 。
3、 下载文件:输入 “get remote_file” 。其中,remote_file 指的是远程服务器上的文件路径 。例如,“get /home/remote_user/test.txt” ,即可将远程服务器上的 test.txt 文件下载到本地当前目录 。
4、 查看远程服务器上的文件:输入 “ls” ,可查看远程服务器当前目录下的文件和文件夹 。
5、 切换目录:输入 “cd remote_folder” 。其中,remote_folder 指的是远程服务器上的目录 。例如,“cd /home/remote_user” ,即可切换到远程服务器的 /home/remote_user 目录 。
6、 退出 sftp:操作完成后,输入 “exit” ,即可退出 sftp 连接 。
rsync 是一个快速、多功能的文件同步工具,它可以在本地和远程之间复制文件,并且支持增量传输,只传输有变化的部分,大大提高了传输效率 。
1、 将本地文件同步到远程服务器:在终端中输入命令 “rsync -avz local_file remote_username@remote_ip:remote_folder” 。其中,“-a” 表示以归档模式传输,保留文件的所有属性;“-v” 表示显示详细信息;“-z” 表示压缩传输 。local_file 指的是本地文件路径,remote_username 指的是远程服务器上的用户名,remote_ip 指的是远程服务器的 IP 地址,remote_folder 指的是远程服务器上存放文件的目录 。例如,“rsync -avz /home/user/test.txt remote_user@192.168.1.100:/home/remote_user/” 。
2、 将远程服务器上的文件同步到本地:在终端中输入命令 “rsync -avz remote_username@remote_ip:remote_file local_folder” 。例如,“rsync -avz remote_user@192.168.1.100:/home/remote_user/test.txt/home/user/” 。
3、 同步目录:同样可以使用 “-r” 参数来同步目录 。例如,将本地的目录 /home/user/dir 同步到远程服务器 192.168.1.100 上的 /home/remote_user/ 目录下,命令为 “rsync -avz -r /home/user/dir remote_user@192.168.1.100:/home/remote_user/” 。
在使用这些工具进行远程文件复制传输时,要确保本地和远程服务器之间的网络连接正常,并且具备相应的权限 。
1、 如何使用 ssh 密钥实现免密码远程文件传输:在本地生成 SSH 密钥对,使用命令 “ssh-keygen -t rsa” ,一路回车即可 。将生成的公钥(通常是 id_rsa.pub 文件)复制到远程服务器的~/.ssh/authorized_keys 文件中 。之后再使用 scp、sftp、rsync 等工具进行文件传输时,就无需输入密码 。
2、 rsync 与 scp、sftp 的性能对比:rsync 适用于大量文件且文件有频繁更新的场景,因为它的增量传输特性可以节省大量时间和带宽 ;scp 适合简单的文件复制,操作简单;sftp 则提供了更丰富的文件管理功能 。在实际应用中,可根据具体需求选择合适的工具 。
3、 在 Linux 系统中使用 FTP 进行远程文件传输:需要安装 FTP 服务软件,如 vsftpd 。安装命令为 “sudo apt-get install vsftpd” 。启动 FTP 服务,命令为 “sudo service vsftpd start” 。使用 FTP 客户端连接 FTP 服务器,输入服务器的 IP 地址、用户名和密码 。在客户端中进行文件上传和下载操作 。但 FTP 的安全性较差,不建议在对安全要求高的场景使用 。