前言

  • 最近在折腾N1,因为之前容量不够,于是乎将docker容器全部迁移到了U盘里,于是乎发现了一个好玩的命令就是rsync.我们可以使用这个命令配合定时任务远程备份数据.那么让我们开始吧~~~

rsync参数

  • 参数很多,这里就不太多关注了
    image.png

编写脚本

  1. 因为我需要远程同步,那么就要涉及到ssh自动输入密码,因此这里我们需要安装expect.
yum install -y expect
  1. rsync命令
#因为我使用了frpc穿透,因此在指定端口的时候需要用''包起来
 rsync -vzrtopg --progress -e 'ssh -p 5551' [email protected]:/home/dockertls.sh /home/
  1. 最终如下
#!/usr/bin/expect
#set remote_path [lindex $argv 0]
#set local_path [lindex $argv 1]
set timeout 30
set password xxx
#rsync -avz --delete --exclude 'var' $remote_path $local_file
#spawn "rsync -vzrtopg --progress -e 'ssh -p 5551' --delete  [email protected]:/home/dockertls.sh /home/"
spawn rsync -vzrtopg --progress -e ssh --delete [email protected]:/mydata/docker /home/docker

expect "*password*" {send "$password\r"}
interact
  • 这里有个问题,但我们指定端口的时候配合expect无法使用,这里我还没有解决.详细帖子
  • 临时解决办法,使用秘钥登录

参考帖子

expect的使用
linux使用expect等方式实现密码自动输入
设置 SSH 通过密钥登录