暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux的scp指令使用场景

724

Linux的服务器之间传文件的指令操作通常有两种,一种是sftp、ftp,另一种是scp,这两类指令,都可以实现文件的上传和下载。但是,如果不是写在脚本中,而是纯指令操作,sftp和ftp在登陆后才可以执行cd或者直接cp,因此,包括登陆在内,至少需要两次指令操作,而scp只需要一次操作即可完成文件的上传和下载。

scp的option介绍,可以参考man,

    scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit]
             [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 ... [[user@]host2:]file2

    option参数说明,

    -1:强制scp命令使用协议ssh1-2:强制scp命令使用协议ssh2-4:强制scp命令只使用IPv4寻址-6:强制scp命令只使用IPv6寻址-B:使用批处理模式(传输过程中不询问传输口令或短语)-C:允许压缩。(将-C标志传递给ssh,从而打开压缩功能)-p:保留原文件的修改时间,访问时间和访问权限。-q:不显示传输进度条。-r:递归复制整个目录。-v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。-c cipher:以cipher将数据传输进行加密,这个选项将直接传递给ssh。-F ssh_config:指定一个替代的ssh配置文件,此参数直接传递给ssh。-i identity_file:从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。-l limit:限定用户所能使用的带宽,以Kbit/s为单位。-o ssh_option:如果习惯于使用ssh_config(5)中的参数传递方式,-P port:注意是大写的P, port是指定数据传输用到的端口号-S program:指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

    scp缩写如下,

      scp [可选参数] file_source file_target 

      通过一台机器,就可以模拟文件的上传和下载,为了演示方便,我在一台服务器上创建了两个目录,一个是local代表本地,一个是remote代表远程,local中有两个文件,1.txt和2.txt。

      P.S. scp,不仅仅可以上传,还可以下载,这就是为什么上述缩写中是file_source源文件和file_target目标文件,而不是file_local本地文件,file_remote远程文件。

      场景1,本地上传文件至远程服务器

      (1) 将本地的1.txt上传至10.221.0.1用户oracle的路径/home/oracle/test/remote下,文件名称还是1.txt,

        [test@app local]$ scp 1.txt oracle@10.221.0.1:/home/oracle/test/remote/

        (2) 指令不带用户名,默认远程服务器用户名和当前执行指令的用户名相同,如下所示,默认文件上传至服务器10.221.0.1的用户test路径下,

          [test@app local]$ scp 1.txt 10.221.0.1:/home/oracle/test/remote/

          (3) 指定远程路径的文件名,则会对上传文件进行改名,如下所示,将本地的1.txt上传至远程服务器,文件名称改为a.txt,

            [oracle@app local]$ scp 1.txt oracle@10.221.0.1:/home/oracle/test/remote/a.txt
            [test@app local]$ scp 1.txt 10.221.0.1:/home/oracle/test/remote/a.txt

            场景2,本地上传文件夹至远程服务器

            此时可以使用-r选项递归复制文件夹,不改动文件夹的名称,

              [oracle@app test]$ scp -r local oracle@10.221.0.1:/home/oracle/test/remote/
              [oracle@app test]$ scp -r local 10.221.0.1:/home/oracle/test/remote/

              改动文件夹的名称,

                [oracle@app test]$ scp -r local oracle@10.221.0.1:/home/oracle/test/remote/test
                [oracle@app test]$ scp -r local 10.221.0.1:/home/oracle/test/remote/test

                场景3,从远程服务器下载文件/文件夹

                (1) 下载文件,

                  [oracle@app local]$ scp oracle@10.221.0.1:/home/oracle/test/remote/1.txt 1.txt
                  [oracle@app local]$ scp 10.221.0.1:/home/oracle/test/remote/1.txt 1.txt

                  (2) 下载文件夹,

                    [oracle@app local]$ scp -r oracle@10.221.0.1:/home/oracle/test/remote/test test
                    [oracle@app local]$ scp -r 10.221.0.1:/home/oracle/test/remote/test test

                    场景4,本地上传多个文件至远程服务器

                    输入多个文件名,

                      [oracle@app local]$ scp 1.txt 2.txt oracle@10.221.0.1:/home/oracle/test/remote
                      [oracle@app local]$ scp 1.txt 2.txt 10.221.0.1:/home/oracle/test/remote

                      场景5,从远程服务器下载多个文件

                      学习一下场景4,可能会这么写,的确可以,但是对每个文件都需要输入一次用户名(当然设置ssh互信就会更简单),

                        [oracle@app local]$ scp oracle@10.221.0.1:/home/oracle/test/remote/1.txt oracle@10.221.0.1:/home/oracle/test/remote/2.txt .
                        oracle@10.221.0.1's password:
                        1.txt 100% 0 0.0KB/s 00:00
                        oracle@10.221.0.1's password:
                        2.txt 100% 0 0.0KB/s 00:00

                        还可以使用通配符的形式,但是特殊字符需要处理下,一次操作更简单,

                          [oracle@app local]$ scp oracle@10.221.0.1:/home/oracle/test/remote/\{1.txt,2.txt\} .
                          oracle@10.221.0.1's password:
                          1.txt 100% 0 0.0KB/s 00:00
                          2.txt 100% 0 0.0KB/s 00:00

                          参考,

                          https://blog.csdn.net/life_journey/article/details/100916011

                          https://www.runoob.com/linux/linux-comm-scp.html

                          近期更新的文章:

                          如何搭建一支拖垮公司的技术团队?

                          IP地址解析的规则

                          MySQL的skip-grant-tables

                          国产数据库不平凡的一年

                          Oracle要求顺序的top数据检索问题

                          日常工作中碰到的几个技术问题

                          了解一下sqlhc

                          Oracle的MD5函数介绍

                          Oracle 19c的examples静默安装

                          sqlplus登录缓慢的解决

                          VMWare 11安装RedHat Linux 7过程中碰到的坑

                          COST值相同?是真是假?

                          Oracle 11g的examples静默安装

                          同名的同义词和视图解惑

                          v$和v_$的一些玄机


                          文章分类和索引:

                          公众号700篇文章分类和索引

                          文章转载自bisal的个人杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                          评论