全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 6323|回复: 1

分享一个备份VPS内数据到另外一个大盘鸡VPS的脚本

[复制链接]
发表于 2022-1-6 23:21:09 | 显示全部楼层 |阅读模式
本帖最后由 wise指南 于 2022-1-6 23:22 编辑

VPS多了,总有一些是跑路的。跑路了钱财的损失肯定是找不回来了,但更加令人痛心的是数据丢失了。

这里分享一个简单脚本,可以使用来定期把vps上的目录备份到磁盘更大的vps上面去,一旦发生跑路事件,起码数据保住了。

简单脚本,但是我自己用起来感觉比较实用,分享给有需要的人士。

用法 : 给3个参数

tarscp.sh 目录名或文件名 user@xx.xx.xx.xx:data user的密码

user 是用户名
data 是 /home/user 下存在的 data 目录,即是 /home/user/data/

过程:

先调用 tar 在 /tmp 目录生成一个 tgz 文件,
再scp 到目标大盘鸡上去,文件名带上时间戳和源VPS的IP v4地址。

依赖:
需要系统安装了expect,用于自动登录。

把下面的内容复制到一个新文件 tarscp.sh 中, chmod ugo+x tarscp.sh

#===脚本起===

#!/bin/bash
# 首发在 http://huiwushi.cc
# named tarscp.sh

myip=`curl http://httpbin.org/ip  | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'`

if [ -z "${myip}" ] ; then

  echo "can't get VPS ip"
  exit 3

fi

echo "VPS IP" ${myip}

DIR=$1
if [ -z "${DIR}" ] ; then
   echo usage $0 "<file>" "login_name@host:path" "passwd_of_login"
   exit 2
fi

if [ $# -lt 3 ]; then
   echo usage $0 "<file>" "login_name@host:path" "passwd_of_login"
   exit 127
fi

SSH_LOGIN_PATH=$2
SSH_LOGIN_PWD=$3


echo tar this file/dir ${DIR} ...

fn=`echo ${DIR}| sed "s:/:++:g"`

isroot=`expr substr $DIR 1 1 == '/'`

#not from root
if [ $isroot -eq 1 ] ; then

   echo cd /
   cd /
   DIR=`echo $DIR | awk '{ print substr($1, 2,  length($1)-1) }' `

fi

TMPFN=/tmp/${fn}.tgz

echo tar -zcvf $TMPFN $DIR
dt=`date +%y%m%d%H%M`

tar -zcvf $TMPFN $DIR
if [ $? -eq 0 ] ; then
  echo scp $TMPFN $LOGIN_PATH/${myip}.${dt}.$fn.tgz

/usr/bin/expect <<EOF
set time 30
  spawn scp $TMPFN ${SSH_LOGIN_PATH}/${myip}.${dt}.$fn.tgz
  expect {
    "*yes/no" { send "yes\r"; exp_continue}
    "*password:" {send "${SSH_LOGIN_PWD}\r"}
  }
  expect eof
EOF
  
  rm -rf $TMPFN
  
else
   echo file not exists
fi

#===脚本结束===

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-20 21:27 , Processed in 0.061608 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表