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


    概述

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

    lrzsz

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

    brew install --cask iterm2
    brew install lrzsz # mac本地安装
    yum install lrzsz # linux服务器安装
    
    • 1
    • 2
    • 3

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

    $ brew list | grep lrzsz
    lrzsz
    
    • 1
    • 2
    1. 安装 automatic zmoderm for iTerm2,下载脚本
    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
    
    • 1
    • 2
    • 3
    • 4

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

    $ 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
    
    • 1
    • 2
    • 3

    3.设置进入iterm2

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

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

    \*\*B0100        Run Silent Coprocess  /usr/local/bin/iterm2-send-zmodem.sh
    \*\*B00000000000000  Run Silent Coprocess  /usr/local/bin/iterm2-recv-zmodem.sh
    
    • 1
    • 2

    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.从远程下载到本地

    scp work@127.0.0.1:/home/wwwroot/uploads/2023101016511890a650819.png
    ./scpDown/
    
    • 1
    • 2

    2.从本地上传到服务器

    scp ./scpUpload/20230928095251e9b3f6111.jpg 
    work@127.0.0.1:/home/wwwroot/20230928095251e9b3f6111.jpg
    
    • 1
    • 2

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

    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}");
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    Objective-C网络数据捕获:使用MWFeedParser库下载Stack Overflow示例
    FFmpeg入门详解之15:音频基本概念
    从一个程序员的角度看东方甄选“小作文”事件
    如何解决git 发生冲突的场景?
    leetcode中级2,Sorting and Searching:347. 前 K 个高频元素
    安卓系统开发之systrace
    基于JAVA SpringBoot的综合博客系统的设计与实现源码
    sqlite3 — DB-API 2.0 interface for SQLite databases
    mybatis判断是否为null和空字符串
    C#堆排序算法
  • 原文地址:https://blog.csdn.net/xuezhiwu001/article/details/133950450