通过SSH备份并压缩远程服务器上的文件

作者:V君 发布于:2015-6-23 22:43 Tuesday 分类:折腾手记

既然数据库备份了 那也顺便备份一下文件吧 

备份文件可不像备份数据库那样简单

起初想到的方法是先把远程服务器上的文件拉回本地,接着压缩,再删除

这样做也太新手了吧, 并且还增加了不少IO

于是..., 这次不咕狗了 直接发帖问, 然而 得到回复 tar|gz

立马就被打醒了 ssh远程执行脚本嘛 把输出在本地接收然后xz!

于是一脚深一脚浅的一边咕狗一边写出这样的玩意, 很新手吧 _(:з」∠)_ , 老司机请飘过.

把下面的脚本保存到一个文件比如remote-backup.sh 然后用chmod增加执行权限, 

用法: ./remote-backup.sh 用户@主机 密码 远程路径 本地路径

本地路径会自动加上tar.xz后缀

至于 REMBER CACHE SSH KEY! 的意思是, ssh的key缓存对应不同用户, 

我等新手在摆弄时极容易遇上一会可以一会不行的情况

多半是sudo执行和直接执行的差别, 

因此你需要给每个服务器用sudo ssh连接一次把key缓存起来

嗯 然后就是塞给crontab了 (=゚ω゚)=

 

#!/bin/sh

 

userAtHost="$1"

pass="$2"

remotePath="$3"

localFilename="$4"

 

if [ ! $# -eq 4 ] ;then

        echo useage: $0 \<user@host\> \<pass\> \<remotePath\> \<localFilename\>

        echo \ \ \ \  localFilename will auto add .tar.xz

        echo \ \ \ \  REMBER CACHE SSH KEY!

else

        echo exec\> sshpass -p \*\*\*\*\*\* ssh $userAtHost \"cd $remotePath \; tar -c .\" \| xz \> $localFilename.tar.xz

        sshpass -p $pass ssh $userAtHost "cd $remotePath ; tar -c ." | xz > $localFilename.tar.xz

fi

 

~

ps: 你可能需要 sudo apt-get install sshpass

标签: linux ssh 数据备份

评论(0) 引用(0) 浏览(887)

Powered by emlog 去你妹的备案 sitemap