linux 异地备份(ftp)

linux 异地备份(ftp),第1张

创建脚本/root/script/backup.sh

# 该脚本应用于10多台普通的Linux应用服务器,多年来从未出过差错。

# 数据库备份较为特殊,这里不包含数据库备份。

# 因为脚本中含有FTP密码,所以FTP仅给予写权限较为安全,FTP中的老备份的定期删除任务由FTP服务器完成。

# 备份加入到自动任务中,每周六23:00执行,并写入日志,如下:

# 追加下面语句到/etc/crontab中

# 0 23 * * 6 root /root/script/backup.sh >>/root/script/backup.log 2>&1

#有注释版:

#!/bin/bash

#=====================================================

#author zhaoyn

#date 2010/12/31

#=====================================================

#参数设定

basedir=/opt/backup #备份存放的目录

days=15 #备份在本地保留天数

bakfiles="/root/script /etc" #需要备份的目录或文件,请不要使用快捷方式或通配符

ftpip=XXX.XXX.XXX.XXX #异地备份的FTP地址

ftpuser='username' #异地备份的FTP用户名

ftppw='password' #异地备份的FTP密码

echo =====================================================

date

cd $basedir

#删除备份目录中15天以前备份文件,不包含子目录

find -maxdepth 1 -name "*.tgz" -mtime +"$days" -exec rm -f {} \

for bakfile in $bakfiles

do

file=`basename $bakfile`

#压缩打包需要备份的目录,包括权限,文件命名包含当前时间

tar -czpf "$file"_$(date +%Y%m%d-%H%M).tgz $bakfile

#大文件打包前后,缓解磁盘压力,降低I/O错误概率

sleep 10s syncsync

done

#通过FTP上传当天备份的文件到异地

ftp -v -n -i $ftpip <<END

user $ftpuser $ftppw

bin

mput *$(date +%Y%m%d)*.tgz

bye

END

#无注释版:

#!/bin/bash

#=====================================================

#author zhaoyn

#date 2010/12/31

#=====================================================

basedir=/opt/backup

days=15

bakfiles="/root/script /etc"

ftpip=XXX.XXX.XXX.XXX

ftpuser='username'

ftppw='password'

echo =====================================================

date

cd $basedir

find -maxdepth 1 -name "*.tgz" -mtime +"$days" -exec rm -f {} \

for bakfile in $bakfiles

do

file=`basename $bakfile`

tar -czpf "$file"_$(date +%Y%m%d-%H%M).tgz $bakfile

sleep 10s syncsync

done

ftp -v -n -i $ftpip <<END

user $ftpuser $ftppw

bin

mput *$(date +%Y%m%d)*.tgz

bye

END

Mysql的备份,如果凌晨可以停止几分钟,那么强烈建议对Mysql执行物理备份,脚本如下

#!/bin/bash

#History

#=====================================================

#When Who What

#2010/3/24 Zhaoyn Create

#

#=====================================================

basedir=/opt/backup

updir=$basedir/updir

timenow=$(date +%Y%m%d-%H%M)

# 删除mysql十四天前的数据,注意,这里仅删除了mysql的tgz文件。

rm -f `find $basedir -name "mysql*.tgz" -mtime +14`

# 由于数据库在有连接的情况下,直接对数据文件打包是可能出问题的,所以这里我们在打包前要停用数据库,这样直接对数据文件打包,恢复时只需解压数据文件到新环境相应的目录即可,默认是/var/lib/mysql

# 如果白天也要进行数据库备份,请使用mysqldump命令,进行在线备份。恢复也挺方便的。

/etc/rc.d/init.d/mysqld stop

sleep 5s syncsync

tar -czpf $basedir/mysql.$timenow.tgz /var/lib/mysql

/etc/rc.d/init.d/mysqld start

#=====================================================

附件中的脚本文件是有DOS换行符(CR/LF)的,复制文件中的内容到SSH客户端没有问题,如果直接拷贝文件到Linux系统中,可先运行下面的命令:

mv *.txt *sh

dos2unix *.sh

是随着文件备份与ftp被广泛应用的产物。利用ftp自动备份可轻松解决企业、网站等数据中心的备份任务。在管理人员繁忙或无人值守的时候,实现远程轻松备份和远程自动备份。其目的,是为防止企业、网站、服务器等数据中心出现意外时,能在最短的时间恢复正常运作。

ftp自动备份——FileGee

新建一个备份任务,选择任务的备份类型;备份的源目录为ftp服务器,可对ftp服务器进行增、删、改设置。

目标目录可选择本机或ftp(目标目录是ftp,也就是说可将文件远程备份到其它地方);还可对文件进行压缩加密。在根据建立任务向导中,自动执行的模式有多种,可根据数据的更新量来设置自动执行的时间,ftp自动备份模式有:每月、每周、每日、间隔e799bee5baa6e997aee7ad9431333332393337、实时。时间跨度满足ftp自动备份对所有时间的要求,只要设定好自动执行的时间,就可全天候随时自动执行备份任务。这里选择的是,每天下午的17:00自动执行远程ftp的备份任务。如下:

在任务建立的向导中,还可以对文件进行选择,可以选择需要备份的部分文件;可设置任务自动重试,可设置自动重试到任务完全成功为止,所以,完全不必担心ftp自动备份任务不成功或出错而无法备份的情况。如果备份的数据量大,还可设置自动删除日志文件,做到节省存储空间。如果,还是不放心备份文件的安全,可对文件加密(这已是第二次加密了,前面步骤中,可压缩加密),在保证ftp自动备份文件时,还能充分保障备份的安全。还可生成执行命令,在执行任务前后运行其他的程序。

通过上述步骤,就可完成ftp自动备份的任务,操作非常简单,功能非常强大。能够实时、远程的完成ftp备份任务,不仅节省了时间,提高了效率,还保证了备份文件的安全。

实现方法如下:

1、用FTP并结合任务调度进行自动的同步。需要自动保持公司电脑和家里电脑FileBase.nyf这个文件的同步。实现原理:

1)估计一下每天的关机时间,利用Windows的任务调度在这个时间的前几分钟将文件上传至ftp服务器。

2)同样利用Windows的任务调度,在机器启动时,自动备份本地FileBase.nyf文件,并从ftp服务器下载文件。

2、实现方式(以本地存放路径D:\ApplicationData\mybase、本地任务调度文件:D:\ApplicationData\schedule、文件存放在远程服务器的temp目录下。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/55479.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-26
下一篇2023-02-26

发表评论

登录后才能评论

评论列表(0条)

    保存