文章目录

  • 一、scp 命令简介
  • 二、简单测试 scp 命令
    • 1、启动 ssh 服务
    • 3、scp 命令格式
    • 2、运行 scp 命令
  • 三、scp 免密码传输文件
  • 四、docker 备份 MySQL 到另一台服务器

一、scp 命令简介

Linux scp 命令用于 Linux 之间复制文件和目录。

scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

scp 详细命令可参考 https://www.runoob.com/linux/linux-comm-scp.html

二、简单测试 scp 命令

1、启动 ssh 服务

①、使用 ss -lnt 查看 ssh 服务是否启动,如下我指定的 10022 已经启动,默认端口是 22

②、如果没有启动,使用如下命令启动

systemctl start sshd

③、如果没有安装使用如下命令安装,

sudo yum install sshd
或
sudo yum install openssh-server
3、scp 命令格式
scp local_file remote_username@remote_ip:remote_folder
或者
scp local_file remote_username@remote_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file
  • 第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
  • 第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;
2、运行 scp 命令

命令说明 -p 指定目的主机端口号,默认 22 可不用指定,-r 递归复制整个目录

scp -P 10022 -r /opt/docker/mysql/backup/2021-08-12_01\:00\:01/ root@22.22.22.22:/opt/docker/mysql/backup/

输入密码即可拷贝成功

但是每次都需要手动输入密码,则不能加入到我们的脚本中,使用 scp 免密码传输文件

三、scp 免密码传输文件

以下以 A 服务器 和 B 服务器说明,将 A 服务器文件拷贝到 B 服务器

①、 A 服务器生成公钥私钥,一路回车就可以,需要定制可自行修改

ssh-keygen -t rsa

生成之后,多了两个文件,id_rsa 私钥,id_rsa.pub 公钥

②、将 A 服务器的公钥追加到 B 服务器的 /root/.ssh/authorized_keys 认证文件中,没有该文件则新建
复制 A 服务器 /root/.ssh/id_rsa.pub 公钥

追加到 B 服务器/root/.ssh/authorized_keys 认证文件

③、A 服务器运行免密登陆 scp 命令

④、B 服务器查看,远程备份成功

以上就是 scp 传输文件到另一台服务器的简单使用

四、docker 备份 MySQL 到另一台服务器

下面内容接另一篇博客 备份 MySQL 三种方法备份 MySQL 数据库(含docker)

将上面的 scp 命令添加到 docker mysql 备份的脚本中即可(A 服务器)

#!/bin/bash
dateBackup=$(date +%Y-%m-%d_%H:%M:%S)
dir=/opt/docker/mysql/backup/${dateBackup}
# 宿主机新建目录,通过挂载会自动添加到容器
if [ ! -d "${dir}"]
thenmkdir ${dir}echo "创建文件夹 ${dir} 成功" >> ${dir}/error.log
elseecho "创建文件夹 ${dir} 失败,文件夹已存在" >> ${dir}/error.log
dbNames=(student teacher car dog cat)
for dbName in ${dbNames[@]}
doecho "-----------------> 备份 ${dbName} 数据库 <-----------------" >> ${dir}/error.logdocker exec -i 642c89599d9b sh -c "mysqldump -ubackup -pAdmin@123 -h127.0.0.1 -P32773 ${dbName} 1>> /opt/backup/${dateBackup}/${dbName}.sql 2>> /opt/backup/${dateBackup}/error.log"gzip ${dir}/${dbName}.sql
done
# -e 开启转义字符
echo -e "\n------------------------> scp 22.22.22.22 <---------------------------"  >> ${dir}/error.log
# 将该服务器 mysql 备份文件复制到 22.22.22.22:10022 服务器的 /opt/docker/mysql/backup/ 目录下
# script 用于录制会话过程(类似记录日志)
script -a -q ${dir}/error.log -c "scp -P 10022 -r ${dir} root@22.22.22.22:/opt/docker/mysql/backup/"echo -e " \n ----------------> 删除过期文件 <---------------------------" >> ${dir}/error.log
# 判断文件夹数量是否大于7,防止程序意外停止,定时任务删除所有备份
dirCount=`ls -l /opt/docker/mysql/backup/|grep "^d"|wc -l`
if [ ${dirCount} -gt 7 ]
then# 删除超过七天的带"_"的目录find /opt/docker/mysql/backup/ -mtime +6 -name "*_*" -exec rm -rf {} \;echo -e " 删除过期文件成功" >> ${dir}/error.log
else echo "删除过期文件失败,文件数量小于 7" >> ${dir}/error.log
fi

script 参数说明

B 服务器定时删除备份过来的文件,可以添加一个定时任务,使用 crontab -e 命令,在文件中追加

0 1 * * * /opt/docker/mysql/backup/del_backup.sh

添加 /opt/docker/mysql/backup/del_backup.sh 脚本文件

dateDel=$(date +%Y-%m-%d_%H:%M:%S)
# 判断文件夹数量是否大于7,防止程序意外停止,定时任务删除所有备份
dirCount=`ls -l /opt/docker/mysql/backup/|grep "^d"|wc -l`
if [ ${dirCount} -gt 7 ]
then# 删除超过七天的带"_"的目录find /opt/docker/mysql/backup/ -mtime +6 -name "*_*" -exec rm -rf {} \;echo -e "  ${dateDel}   删除过期文件成功" >>/opt/docker/mysql/backup/del.log
else echo " ${dateDel}   删除过期文件失败,文件数量小于 7" >> /opt/docker/mysql/backup/del.log
fi

以上就是利用 scp 传输 docker 备份 mysql 数据的所有内容。

scp 传输文件到另一台服务器相关推荐

  1. linux从一台服务器传输文件到另一台服务器上

    首先两台服务器必须是可以ping通的 例: ping 10.22.137.10 ping通之后: 1.复制文件 格式: scp 目录/文件名.文件格式 目标服务器用户名@ip地址:目标服务器目录 例: ...

  2. 使用scp传输文件给linux服务器,出现Permission denied(publickey) 的解决办法

    原因:scp传输文件基于ssh拷贝服务,但是ssh在没有密钥登录的情况下,禁用了密码登录,所以需要我们修改ssh的配置文件 解决方法: 1.通过软件(putty.xshell等)或者浏览器控制台远程连 ...

  3. php scp上传文件,scp传输文件

    : jank : : 4723 : 2017-02-21 14:13 linux 在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件 scp username@serve ...

  4. 登录文件传输服务器,生信小技巧之:在本地与服务器间快速传输文件,无密码登录远端服务器...

    今天是五一节,首先祝各位粉丝节日快乐,虽然是假期,但是我们推文还是不会停,但相信大家都不愿意看太过难太过复杂的推文,没问题.今天和大家分享一些简单但很实用的干货,保证每个生信小白都会获益,嘿嘿嘿. 作 ...

  5. scp传输文件 Permission denied, please try again

    [问题] scp传输文件时提示: 但是同样的密码又能连接服务器,网上的方法也都没有用. [原因] 传输格式存在问题: 即本人使用服务器时需要设置端口号,但网上提供的scp格式范例中没有设置端口参数-P ...

  6. linux使用scp传输文件出现Permission denied解决办法

    linux使用scp传输文件出现Permission denied解决办法 前言 今天在两个linux服务器上用scp传输文件出现如下报错,经过查找资料决绝了该问题 解决 修改想要传输的文件夹的权限为 ...

  7. Windows scp传输文件给Linux

    Windows scp传输文件给Linux C:\Users\Administrator.DESKTOP-CGIO78B>scp C:\Users\Administrator.DESKTOP-C ...

  8. 100台服务器分发文件,通过简单shell脚本+rsync实现单一文件分发到多台服务器

    如果是多台机器,可以考虑分布式文件系统或其他脚本通过来实现.该脚本仅适合通过rsync实现单一文件分发到多台服务器. vim rsync_single_web.sh #!/bin/sh webnode ...

  9. 使用scp传输文件 Host key verification failed.解决

    在用scp传输文件时,看到如下报错信息: ysgz@ysgz:~/Desktop$ scp check.sh ysgz@192.168.3.6:/tools @@@@@@@@@@@@@@@@@@@@@ ...

最新文章

  1. MongoDB中如何优雅地删除大量数据
  2. 关于js css html加载顺序整理
  3. 防止System.exit调用
  4. 关于editor网页编辑器ueditor.config.js 配置图片上传
  5. python语法学习—打印九九乘法表
  6. php aws ses,python-在AWS SES上接收和解析电子邮件
  7. dbms_random.seed
  8. 通过meta进行重定向
  9. poj 1905 Expanding Rods 二分
  10. Unable to run Kiwi tests on iOS8 device
  11. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用
  12. 【5G架构】5G 协议栈结构以及与OSI七层协议之间的关系
  13. 修改文件 火车票买下铺_12306修改代码买下铺?12306码农太弱了吧 (转载)
  14. 用计算机计算2的31次方,2的31次方,用什么方法可以最快算出来呢
  15. 【英语语法】Unit1 冠词、名词、代词和数词
  16. 世预赛国足0-1日本遭遇两连败,接下来对阵越南会做出怎样调整?
  17. 标志Logo设计的起源和艺术特点
  18. 市场下行谁的锅?流动性短缺怎么破?衍生品大佬来解答 |「生机」云峰会
  19. Android开发实战《手机安全卫士》——13.“缓存清理”模块实现
  20. 用Python爬取B站、腾讯视频、芒果TV和爱奇艺视频弹幕

热门文章

  1. 摩托罗拉的新一代智能家庭和婴儿监护亮相香港电子产品展
  2. 李永辉:IBM大数据产品及实践路线图
  3. linux上ssh免密登录原理及实现
  4. 深信服技术认证之容灾与备份(一)
  5. 如何用OpenCV改变图片的大小?
  6. bartender打印错误
  7. python实现舒尔特方格
  8. sea新浪云计算机平台,新浪云计算SAE免费申请使用及域名绑定
  9. 6-3 读文章(*)
  10. linux的的符号,Linux 常见特殊符号