scp+定时备份30天
主机内部和主机之间的数据备份和转移是我们最长做的事情了,如果有web server那么可以 直接 wget http://www.xx.com/x.zip即可,如果有ftp server时,可以使用ftp命令上传下载,如果二者都没有的话,scp命令就有用武之地了。
scp简介
scp是secure copy的简写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的
scp命令基本格式
1 |
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] |
2 |
[-l limit] [-o ssh_option] [-P port] [-S program] |
3 |
[[user@]host1:]file1 [...] [[user@]host2:]file2 |
常用参数
1 |
-P #port 注意是大写的P, SSH的端口号(默认22可以省略) |
2 |
- v #用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 . |
3 |
-C #允许压缩 |
4 |
-r #递归复制整个目录 |
常用方法
1 |
#从 本地服务器 复制到 远程服务器 |
2 |
#scp [可选参数] 本地文件/目录 远程用户名@远程地址:远程文件/目录 |
3 |
4 |
#本地文件backup.zip发送到远程backup目录下 |
5 |
scp /home/backup.zip root@ip:/home/others/backup |
6 |
7 |
#本地文件backup.zip发送到远程并改名为otherbackup.zip |
8 |
scp /home/backup.zip root@ip:/home/others/otherbackup.zip |
9 |
10 |
#将本地backup整个复制到远程/home/others下 |
11 |
scp -r /home/backup root@ip:/home/others |
12 |
13 |
#从 远程服务器 复制到 本地服务器 |
14 |
#scp [可选参数] 远程用户名@远程地址:远程文件/目录 本地文件/目录 |
15 |
#同理,只不过远程的写在前面 |
执行后,系统会要求输入远程SSH的登录密码(ps:上面命令中,远程用户名@,可以省略,这样执行后系统就是要求输入用户名和密码),同样可以使用密匙对的方式登录,方法参照Windows下Puty SSH公钥验证实现免密码登陆详细图文教程
将生成的公钥id_rsa.pub改名为authorized_keys,并上传到远程服务器的~/.ssh/下,私钥留着本地服务器。这样在执行上面命令后,就不需要密码了
定时备份方法
在建立密匙对方式登录后,我们可以在脚本中利用scp命令进行备份,利用crontab来定时执行
1 |
#!/bin/sh |
2 |
backpath=/backup/ #本地备份目录 |
3 |
date =` date +%y%m%d` |
4 |
site=sitename |
5 |
tar zcf ${backpath}${site} "-" ${ date }. tar .gz /var/html/www/${site} #压缩网站数据,并以网站名-时间方式命名 |
6 |
scp ${backpath}${site} "-" ${ date }. tar .gz root@ip:/var/backup #上传到远程服务器/var/backup中 |
7 |
find ${backpath} -mtime +30 - exec rm {} \; #删除本地备份目录超过30天前的数据 |
======================================================================================
==========================================bash============================================
======================================================================================
网站数据是一个网站的最重要的一部分,因为保护好我们的网站数据成为建站规划的首要任务。godaddy的名费空间由于一个超大的广告,很少有人用来做站,不过我们可以把网站数据上传到这个免费空间。
创建数据备份脚本
1、登录SSH,创建文件backup.sh
vi /root/backup.sh
2、粘贴以下代码到backup.sh,并保存。
注释:/home/backup为本地服务器存放备份文件的目录,可以自由更改。
DataBakName:数据库文件名
WebBakName:网站数据文件名
OldData :五天后的自动删除的数据库文件
OldWeb :五天后的自动删除的网站数据文件
#!/bin/bash
cd /home/backup
#定义数据库的名字和旧数据库的名字
DataBakName=Data_$(date +"%Y%m%d").tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
OldData=Data_$(date -d -5day +"%Y%m%d").tar.gz
OldWeb=Web_$(date -d -5day +"%Y%m%d").tar.gz
#删除本地3天前的数据
rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz
#导出mysql数据库
/usr/local/mysql/bin/mysqldump -u root -p123456 zhumaohai > /home/backup/zhumaohai.sql
#压缩数据库
tar zcf /home/backup/$DataBakName /home/backup/*.sql
#删除sql文件
rm -rf /home/backup/*.sql
#压缩网站数据
tar zcvf /home/backup/$WebBakName /home/wwwroot
#上传到FTP空间,删除FTP空间5天前的数据
ftp -v -n 8.8.8.8 << END
user gdftpuser 123456
type binary
cd backup
delete $OldData
delete $OldWeb
put $DataBakName
put $WebBakName
bye
END
3、为backup.sh添加执行权限。
chmod +x /root/backup.sh
添加脚本至crontab(自动启动程序)
执行命令crontab -e,添加每天0点10分启动代码
10 00 * * * /root/backup.sh
测试脚本
执行脚本backup.sh
./backup.sh
稍等片刻,登录godaddy免费空间的FTP,看是否已经成功上传了备份文件,如果存在,证明脚本已经设置正确。否则,认真检查FTP信息是否设置正确。
这个脚本可以设置删除多少天前的数据,所以就不用担心免费空间的容量不足的问题。
转载请标明文章来源:《http://www.centos.bz/2011/03/vps-auto-backup-godaddy/》
======
tar zcf ${site}.tar.gz /home/${site}
==================================网站sh===================================================
#!/bin/sh
backpath=/backup/ #本地备份目录
date=`date +%y%m%d`
site=sitename
tar zcf ${backpath}${site}"-"${date}.tar.gz /home/${site} #压缩网站数据,并以网站名-时间方式命名
scp ${backpath}${site}"-"${date}.tar.gz root@ip:/var/backup #上传到远程服务器/var/backup中
find ${backpath} -mtime +30 -exec rm {} \; #删除本地备份目录超过30天前的数据
===================================================================================================
Linux(Centos)全自动异地备份数据(WEB+Mysql)
来源:我爱共享 作者:车仔 日期:2013-04-19 点击次数 88
文章开始之前,先问下各位站长一个问题:什么东西对于站长是十分重要的?其实对于站长而言,很多东西都是很重要的。但我们现在排除外在因素,把范围缩小到网站系统本身,哪些是非常重要的呢?网站数据就是其中之一了。
网站数据包括程序文件本身、网站运行过程中不断产生的附件数据(图片、文档、视频等)以及数据库文件,三大块总括为网站数据。
以自己为例,在这两年多的站长经历来看,最让我痛苦的就是某一天起床,一直苦心经营的网站打不开了,检查过DNS也正常,最后询问空间运营商发生什么事了,获知的结果系:服务器硬盘损坏,所有数据无法恢复(在这备注下:一般小站长买的机器或者空间都很低配置的,所以别想有什么数据备份服务,要就加钱买),结果就是一阵阵的失落。如果网站刚上线运行不久就发生这样的事或者还不会那么心痛,从头再来也不难。假如是一个运行若干年的网站,突然发生这么一次意外就可以说是重重一击。
刚成为站长的前几个月,我对数据备份这个事情压根没考虑过,直到有一天在群里看到有位群友痛心的经历——网站彻底崩溃,数据全没!!那是经营了3年多的一个老站,就么倒下了,真是闻者伤心听者落泪(有点夸张了)。
我看到了这样活生生的样板,不做数据备份的后果很严重。所以我现在总结出一个经验:如果真要用心做一个网站,就一定要做好数据备份工作,而且最好能异地备份,有些朋友以为在机器本地做了备份就乐了,放心了,那就大错。对于备份数据,又要面临一个实际的问题:每次都自己上服务器把相关的数据打包,然后再用FTP下载回来吗?这样时间长了就会累,所以今天就以Linux(Centos 5.5)环境讲讲如何实现全自动远程(异地)对全站数据进行备份。
要实现自动远程备份功能需要的关软件有:服务器(本地环境)要安装lftp,远程端要开启FTP服务,对登录的目录有读写权限,具备以上2个条件即可。
如果机器上没有安装lftp这个工具,可以通过以下命令完成:
#yum install lftp
假设把相关的脚本文件存放在/apps/script目录下
#vi /apps/script/autobackup.sh //输入以下内容
#!/bin/bash
#author: www.5ishare.com
echo "backup job start"
#设置要备份的网站目录,即是网站的根目录
file=/apps/wwwdata
#设置本地备份目录,用于存放打包后的文件
backpath=/apps/bkdata/
dbuser=数据库用户名
#数据密码,要记得用单引号将把整个密码引起来,如果密码中有单引号就用双引号,嘿嘿
dbpwd='数据库密码'
dbname=数据库名称
domain=远程端的域名或者IP地址
user=FTP用户名
userpwd='FTP用户密码'
bkdate=$(date +%Y%m%d)
sqlfile_sql=${dbname}_${bkdate}.sql
sqlfile_gz=${dbname}_${bkdate}.tar.gz
sqlfp=${backpath}${bkdate}/$sqlfile_sql
if [ -e $backpath${bkdate} ]
then
echo $backpath is exists.
else
mkdir -p $backpath${bkdate}
fi
#执行数据库备份,/apps/mysql/bin/mysqldump修改为你实际环境的路径
/apps/mysql/bin/mysqldump -u $dbuser -p$dbpwd $dbname > ${sqlfp}
#对备份之后的数据库文件压缩,或者在数据库备份时通过加入参数直接进行压缩
tar zcf $backpath${bkdate}/$sqlfile_gz -C ${backpath}${bkdate} ${sqlfile_sql}
#删除未压缩SQL的文件
rm -f ${sqlfp}
#生成的文件名格式:web_网站目录名_20130419.tar.gz
fn=web_${file##*/}_${bkdate}.tar.gz
tar zcf $backpath${bkdate}/$fn -C ${file%/*} ${file##*/}
#以下操作为FTP自动连接并把本地文件上传到异地服务器上
/usr/bin/lftp ${domain} << END
user ${user} ${userpwd}
lcd ${backpath}
mirror -R ${bkdate}
exit
END
echo "backup job done"
------------分隔线--------------
保存退出之后,为该脚本增加执行权限
#chmod +x /apps/script/autobackup.sh
#crontab –e //添加定时任务,根据具体需求设定备份间隔
#0 4 1,16 * * /apps/script/autobackup.sh
我设定为每月的1日,16日的零辰4点钟执行备份任务。最好不要在大白天做这些操作,因为会让整个系统明显变慢的。
经过以上配置,站长们就不用再愁数据备份的烦恼了,可以说是一劳永逸。以上仅为个人实际应用写,跟其各自的需求可能不大一样,但本质不变,只要稍作修改即可,如果有其它疑问欢迎大家留言交流学习。
本文地址:http://www.5ishare.com/tech/system/368842.shtml
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?