zoukankan      html  css  js  c++  java
  • Linux SSH远程文件/目录传输命令scp

    相信各位VPSer在使用VPS时会经常在不同VPS间互相备份数据或者转移数据,大部分情况下VPS上都已经安装了Nginx或者类似的web server,直接将要传输的文件放到web server的目录,然后在目标机器上执行:wget http://www.vpser.net/testfile.zip 就行了。当VPS上没有安装web server和ftp server的时候或感觉上面的方法比较麻烦,那么用scp命令就会排上用场。

    一、scp是什么?

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。

    二、scp有什么用?

    1、我们需要获得远程服务器上的某个文件,远程服务器既没有配置ftp服务器,没有开启web服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过scp命令便可轻松的达到目的。

    2、我们需要将本机上的文件上传到远程服务器上,远程服务器没有开启ftp服务器或共享,无法通过常规途径上传是,只需要通过scp命令便可以轻松的达到目的。

    三、scp使用方法

    1、获取远程服务器上的文件

    scp -P 2222 root@www.vpser.net:/root/lnmp0.4.tar.gz  /home/lnmp0.4.tar.gz

    上端口大写P 为参数,2222 表示更改SSH端口后的端口,如果没有更改SSH端口可以不用添加该参数。 root@www.vpser.net 表示使用root用户登录远程服务器www.vpser.net,:/root/lnmp0.4.tar.gz 表示远程服务器上的文件,最后面的/home/lnmp0.4.tar.gz表示保存在本地上的路径和文件名。

    2、获取远程服务器上的目录

    scp -P 2222 -r root@www.vpser.net:/root/lnmp0.4/ /home/lnmp0.4/

    上端口大写P 为参数,2222 表示更改SSH端口后的端口,如果没有更改SSH端口可以不用添加该参数。-r 参数表示递归复制(即复制该目录下面的文件和目录);root@www.vpser.net 表示使用root用户登录远程服务器www.vpser.net,:/root/lnmp0.4/ 表示远程服务器上的目录,最后面的/home/lnmp0.4/表示保存在本地上的路径。

    用某种身份登录后,会提示输入用户密码,输入就行了。

    3、将本地文件上传到服务器上

    scp -P 2222 /home/lnmp0.4.tar.gz root@www.vpser.net:/root/lnmp0.4.tar.gz

    上端口大写P 为参数,2222 表示更改SSH端口后的端口,如果没有更改SSH端口可以不用添加该参数。 /home/lnmp0.4.tar.gz表示本地上准备上传文件的路径和文件名。root@www.vpser.net 表示使用root用户登录远程服务器www.vpser.net,:/root/lnmp0.4.tar.gz 表示保存在远程服务器上目录和文件名。

    4、将本地目录上传到服务器上

    scp -P 2222 -r  /home/lnmp0.4/ root@www.vpser.net:/root/lnmp0.4/

    上 端口大写P 为参数,2222 表示更改SSH端口后的端口,如果没有更改SSH端口可以不用添加该参数。-r 参数表示递归复制(即复制该目录下面的文件和目录);/home/lnmp0.4/表示准备要上传的目录,root@www.vpser.net 表示使用root用户登录远程服务器www.vpser.net,:/root/lnmp0.4/ 表示保存在远程服务器上的目录位置。

    5、可能有用的几个参数 :

    -v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .

    -C 使能压缩选项 .

    -4 强行使用 IPV4 地址 .

    -6 强行使用 IPV6 地址 .

    如何避免每次输入密码?

    scp自动输入密码

    方法一:

    首先在备份服务器上配置:

        mkdir -p ~/.ssh

        chmod 700 ~/.ssh

    在~/.ssh/目录下生成密钥文件

        ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa

    然后在其他服务器上配置:
        mkdir -p ~/.ssh

        touch ~/.ssh/authorized_keys

    将备份服务器的id_rsa.pub内容追加到其他服务器的authorized_keys里面
        ssh 192.168.1.249 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys


        chmod 600 ~/.ssh/authorized_keys

    在备份服务器上执行SCP命令

        scp -rp root@192.168.1.248:/tmp/scripts/hello ./

    -r表示递归copy目录

    -p      Preserves modification times, access times, and modes from the original file.
    实现自动输入密码拷贝文件,达到备份其他服务器数据的目的。


    方法二:

    在备份服务器上编辑脚本,并添加任务计划
    set DATE [exec date +%Y%m%d%k]
    set password 123456
    spawn scp -r Zdtech@192.168.1.248:/home/backup/mysqls_$DATE.sql.gz /home/backup/mysql/
    set timeout 300
    expect "Zdtech@192.168.2.248's password:"
    set timeout 300
    send "$password "
    set timeout 300
    send "exit "
    expect eof


    任务计划:0 6 * * * /home/script/Mysql_backup.sh > /dev/null 2>&1

    参考:

    http://www.vpser.net/manage/scp.html

  • 相关阅读:
    c# winfrom 查看网络图片
    C# winfrom 读取txt文本内容
    c# winfrom 下载网页源代码
    c# winfrom 下载网络资源
    c# 换行符
    内存映射问题
    APUE 书中 toll 函数
    [P3387] 【模板】缩点
    [P5960] 【模板】差分约束算法
    [CF1442C] Graph Transpositions
  • 原文地址:https://www.cnblogs.com/youxin/p/3544725.html
Copyright © 2011-2022 走看看