linux - 简单上传下载文件(lrzsz、scp)

概述

在新建的服务器大搭建环境中,偶尔会遇到一些临时改动的问题,比如想把本地文件传输到远程服务器,或者是下载远程服务器的文件,介绍lrzsz和scp命令进行文件的上传和下载,我本地的开发环境是mac本,如果是windows lrzsz命令支持的会更好。

lrzsz

1.下载iterm2 ,安装lrzsz,需要保证Linux服务器和mac上同时安装lrzsz

arduino 复制代码
brew install --cask iterm2
brew install lrzsz # mac本地安装
yum install lrzsz # linux服务器安装

Mac上查看是否成功命令,如果grep存在结果,说明已经安装成功

perl 复制代码
$ brew list | grep lrzsz
lrzsz
  1. 安装 automatic zmoderm for iTerm2,下载脚本
bash 复制代码
cd /usr/local/bin

wget https://raw.github.com/mmastrac/iterm2-zmodem/master/iterm2-send-zmodem.sh
wget https://raw.github.com/mmastrac/iterm2-zmodem/master/iterm2-recv-zmodem.sh

查看是否成功下载,脚本下载完毕后执行如下命令为添加可执行权限,sudo chmod 777 /usr/local/bin/iterm2-*

perl 复制代码
$ ll | grep iterm
-rwxrwxrwx  1 stark  admin   1.3K 10 19 09:38 iterm2-recv-zmodem.sh
-rwxrwxrwx  1 stark  admin   1.2K 10 19 09:40 iterm2-send-zmodem.sh

3.设置进入iterm2

进入iterm2配置项 profiles->default->editProfiles->Advanced中的Tirgger

在弹出界面里点"+"按钮新增如下两个参数:

perl 复制代码
\*\*B0100        Run Silent Coprocess  /usr/local/bin/iterm2-send-zmodem.sh
\*\*B00000000000000  Run Silent Coprocess  /usr/local/bin/iterm2-recv-zmodem.sh

4.测试

我们使用 iTerm2 连接到 Linux 服务器,然后执行 rz 命令。

同样地,执行 sz xxxx 命令即可将 xxxx 文件下载到本地。

scp

如果觉得lrzsz插件太过于繁琐,可以使用scp命令,scp 主要有2种形式,从本地上传到远程,从远程下载到本地。

  • 127.0.0.1 远程服务器IP地址
  • /home/wwwroot/uploads/2023101016511890a650819.png 要下载到本地的文件路径
  • ./scpDown/ 下载到本地的路径
  • work 登陆服务器的用户名

1.从远程下载到本地

ruby 复制代码
scp work@127.0.0.1:/home/wwwroot/uploads/2023101016511890a650819.png
./scpDown/

2.从本地上传到服务器

ruby 复制代码
scp ./scpUpload/20230928095251e9b3f6111.jpg 
work@127.0.0.1:/home/wwwroot/20230928095251e9b3f6111.jpg

附带PHP Scp类部分代码,这里需要说明一下,再php执行的shell里面需要先安装sshpass工具,用来传递密码。

php 复制代码
class Scp
{
    private $remoteName = '远程服务器用户名';
    private $remotePasswd = '远程服务器密码';
    private $remoteIpAddr = '远程服务器IP地址';
    private $remoteDir = '远程服务器存储路径';

    private $localDir = '本地下载路径';
    public function scpImagesDownload($imagesDir)
    {
        $cmd = "scp {$this->remoteName}@{$this->remoteIpAddr}:{$this->remoteDir}
        {$imagesDir} {$this->localDir}";
        
        exec("sshpass -p {$this->remotePasswd} {$cmd} ");
    }

    public function scpImagesUpload($fileName,$path)
    {
        $cmd = "scp ./scpUpload/{$fileName} root@{$this->remoteIpAddr}:
        {$this->remoteDir}$path";
        exec("sshpass -p {$this->remotePasswd} {$cmd}");
    }

}
相关推荐
java叶新东老师7 分钟前
Linux /proc/目录详解
linux·运维·服务器
long_mingyue1 小时前
CVE-2022-46169漏洞复现
linux
默|笙2 小时前
【Linux】基本指令(2)
linux·运维·服务器
一位搞嵌入式的 genius2 小时前
暑期自学嵌入式——Day10(C语言阶段)
linux·笔记·学习·嵌入式c语言
被遗忘的旋律.2 小时前
Linux驱动开发笔记(五)——设备树(上)
linux·驱动开发·笔记
conkl5 小时前
构建 P2P 网络与分布式下载系统:从底层原理到安装和功能实现
linux·运维·网络·分布式·网络协议·算法·p2p
求知若渴,虚心若愚。6 小时前
Error reading config file (/home/ansible.cfg): ‘ACTION_WARNINGS(default) = True
linux·前端·ansible
beyoundout8 小时前
HAproxy
linux·运维·服务器
Jie_1711 小时前
【linux】高可用集群Keepalived
linux·运维·服务器
aiprtem11 小时前
LVGL + ESP-Brookesia 嵌入式模拟桌面应用开发
linux·c语言·物联网