#!/bin/sh
#BAKDIR可以换一个自己喜欢的
BAK_DIR=/backup
#*为未知,自己查一下怎么取星期啦,要0-6那个
DATE=$(date+%*)
#自己查一下怎么周数啦
WEEK=$(date+%*)
#备份文件名
FULL_BAK=full_back.$WEEK.tar.bz2
INCRE_BAK=increment_back.$WEEK.$DATE.tar.bz2
#其实没什么不同的,只是要改文件名而已
if[$DATE-eq0];then
tar-g$BAK_DIR/sn.$WEEKcjf$BAK_DIR/$FULL_BAK
else
tar-g$BAK_DIR/sn.$WEEKcjf$BAK_DIR/$INCRE_BAK
fi
exit$?
#把任务加到crontab里就行了,每天执行一次
================
#!/bin/sh
BAK_DIR=/backup
#还原目录
RECOVER_DIR=/
FULL_BAK=full_back.$WEEK.tar.bz2
INCRE_BAK=increment_back.$WEEK.$DATE.tar.bz2
echo-n"recoverfromweek:“
readWEEK
if[-e$BAKDIR/$FULL_BAK];
then
tarxjf$BAK_DIR/$FULL_BAK-C
$RECOVER_DIR
forNin$(seq6);do
if[-e$BAK_DIR/$INCRE_BAK];then
tarxjf$BAK_DIR/$INCRE_BAK-C$RECOVER_DIR
fi
done
else
echo"Backupfilenotexist!!exitnow~~"
fi
exit$?
‘贰’ 在linux中,管理员每天都要查自动备份的数据。这样太麻烦了,有没有更好的方法自动
有相关命令可以自动将log发到固定邮箱,嘿嘿具体的我就不晓得,我还是很原始的手动备啊···发个备份脚本给我参考下咋样?
‘叁’ linux 文件备份命令
Linux备份命令详解
(2008-11-0807:58:34)
转载
标签:
杂谈
分类:LINUX学习
vmp的常用方式:
1). 对于文件需要在只读方式下备份的文件,建议进入单用户:
# init s 或
>>>boot–fl s
2). 对操作系统各MOUNT点进行备份
3). # mount -a
# vmp -0uvf/dev/ntape/tape0_d1 /
# vmp -0uvf/dev/ntape/tape0_d1 /usr
# vmp -0uf/dev/ntape/tape0_d1 /var (如过var区是做为单独的文件子集也需要单独备份)
-f : 设备文件名 ( 比如 DDS tape driver)
-u : 更新/etc/vmpdates,用于增量备份
- v: 备份内容详细列表
- 0 : 零级备份
/dev/ntape0_d1: 系统执行完毕后,磁带停止在当前位置,可继续往下备份
/;/usr;/var : 各文件系统的MOUNT点
4). 其他说明
a、该命令方式对系统当前mounted的文件系统进行备份
b、备份级别说明
备份级别有0~9个级别,如果当前系统采用零级备份,当下一次采用5级备份时,系统仅将会对有变化的文件进行备份。
系统恢复常用命令--vrestore
恢复整个操作系统各文件系统的内容:
1). 准备工作:
a. 准备一个可用的新硬盘,容量大小和原盘基本相符。
b. 准备一套与备份系统相同版本的安装光盘
2). 用操作系统安装光盘启动到安装界面,调整新硬盘各分区大小后进入单用户。
* >>>bootdqa0 (dqa0 为SRM下的光驱设备号)
* 按正常安装步骤选着OK—》NEXT—》NEXT---》NEXT—NEXT---NEXT-CUSTOMIZEFILE SYSSTEM LAYOUT(调整分区大小)--》QUIT OR SHELL WINDOW。
* 注意:在调整新硬盘分区时一定要在引导块上选择ADVFS,并定义B区为SWAP
3). 创建操作系统的各文件系统。(如系统新盘为 dsk0)
mkfdmn/dev/disk/dsk0a root_temp (创建文件系统域)
mkfset root_temproot (创建文件子集)
mkfdmn/dev/disk/dsk0g usr_temp
mkfset usr_temp usr
mkfset usr_temp var(条件:在原系统中VAR为单独的文件子集)
注:在高级文件系统创建过程中,域名只要不和原来冲突,命名是任意的。但对文件子集命名方面最好和原来一致。(以避免不必要的修改工作)
4). 操作系统各文件系统的的恢复
#mount root_temp#root/mnt
#cd /mnt
#vrestore -xvf/dev/ntape/tape0_d1 (恢复该文件系统上所有数据)
#cd /
#umount /mnt
#mount usr_temp#usr/mnt
#cd /mnt
#vrestore -xvf/dev/ntape/tape0_d1
#cd /
#umount /mnt
#mount usr_temp#var/mnt (条件:VAR为单独的文件子集)
#cd /mnt
#vrestore -xvf/dev/ntape/tape0_d1
-f: 设备文件名
-x: 恢复磁带当前备份数据段上的所有数据
- v: 备份内容详细列表
5). 如果恢复硬盘与备份盘在系统中设备名的不同(如:备份盘为dsk0,恢复盘为dsk1)需要做以下修改:
#mount root_temp#root/mnt
#cd /mnt/etc/fdmns
#cd root_domain
#rm *
#ln –s/dev/disk/dsk1a
#cd ..
#cd usr_domain
#rm *
#ln –s/dev/disk/dsk1g
#cd /mnt/etc
#vi sysconfigtab
将swapdevice=/dev/disk/dsk0b修改为swapdevice=/dev/disk/dsk1b
6). SHUTDOWN系统,在SRM下,用新盘引导
恢复文件系统中某些目录或文件:
#vrestore –if/dev/ntape/tape0_d1
(/) add vmunixgenvmunix (在系统根区备份中只恢复vmunix和genvmunix两个文件)
(/) extract (开始恢复)
对个别或若干个目录单独恢复同上
操作磁带机需要注意的几个问题
磁带机在备份过程中是分段记录的,在恢复时一定考虑磁带的位置问题。按上述备份例子,在数据带上一共创建了3段独立的数据备份信息(/;/usr;/var)。以下命令可调整数据带的位置。
#mt rewind (磁带机回卷磁带到初始位置)
需要单独恢复/usr文件系统或个别文件信息:
#mt rewind
#mt fsf 1 ( 跳过第一个数据备份段 / )
如果以上需求发生在/var上则:
#mt rewind (跳过前两个数据备份段)
#mt fsf 2
‘肆’ 如何自动备份linux
清单 1: arc 的 shell 脚本
#!/bin/sh
tar czvf $1.$(date +%Y%m%d-%H%M%S).tgz $1
exit $?
arc 脚本接受单个文件或目录名作为参数,创建压缩的归档文件,并将当前日期嵌入到生成的归档文件名中。例如,如果存在一个名为 beoserver 的目录,那么可以调用 arc 脚本并将 beoserver 目录名传递给该脚本来创建压缩的归档文件,比如 beoserver.20040321-014844.tgz。
使用命令 date 嵌入日期和时间戳有助于组织归档文件。日期格式是年、月、日、小时、分钟和秒 —— 但是秒字段的 使用可能有点多余。查阅 date 命令的手册(man date)可以了解该命令的其他选项。而且在清单 1 中,选项 -v (verbose) 被传递给 tar。该选项指示 tar 显示所有正在归档的文件。如果希望备份过程静默进行,那么请去除选项 -v。
清单 2:将 beoserver 目录归档
$ ls
arc beoserver
$ ./arc beoserver
beoserver/
beoserver/bookl.dat
beoserver/beoserver_ab_off
beoserver/beoserver_ab_on
$ ls
arc beoserver beoserver.20040321-014844.tgz
‘伍’ linux的备份命令是什么
liux系统之间传送用scp命令,linux文件放到windows系统中间架个ftp,linux向windows取文件用wget命令。
‘陆’ LINUX 自动备份怎么实现
首先我在/root/backup 目录下建立一个文件夹,
#mkdir /root/backup/mysqlbackup
以后在每天五点钟,就会有一个文件保存在这里.
接着新建文件
#vim /root/mysqlautobak
输入:
filename=` date +%Y%m%d `
mysqlmp --all-databases -uroot -p(mysql密码)> /root/backup/mysqlbackup/mysql$file.sql保存退出!
让它可以执行
#chomd +X /root/mysqlautobak
接着开始完crontab了
#vi /etc/crontab添加一行01 5 * * * root /root/mysqlautobak
保存退出.
重新启动你的crond服务进程
# /etc/rc.d/init.d/crond restart
===============================================================================
hp unix 自动全备份脚本(shell)
说明:每天夜里10点自动备份并且压缩,保留2天备份,在备份完当天后删除前天的备份。在一切执行之后,发邮件通知,邮件内容有删除文件和备份文件名称及备份开始时间,结束时间。
使用方法:nohup backup.sh &
filename:backup.sh
reportlist=""
while [ 1 ]
do
hou=`date +%H`
backdate=`date +%Y%m%d`
if [ $hou -eq 22 ]
then
begintime=`date +%Y-%m-%d:%H-%M`
cd /data_log2/for_test
log_txt=`ls -al -crt log.txt | awk '{print $9}' | wc -l`
if [ $log_txt -gt 0 ]
then
mv log.txt log.txt.bak
fi
exp owner=user file=/data_log2/for_test/tmp_now.dmp
compress /data_log2/for_test/tmp_now.dmp
mv tmp_now.dmp.Z report_$backdate.dmp.Z
echo "---------report database backuped----------- ">> log.txt
echo "filename="report_$backdate.dmp.Z >>log.txt
delfile=`ls -al -crt *.Z | awk '{print $9}' | head -1`
count=`ls -al -crt *.Z | awk '{print $9}' | wc -l`
if [ $count -gt 2 ]
then
rm `ls -al -crt *.Z | awk '{print $9}' | head -1`
echo "----------- old backup deleted ---------" >> log.txt
echo "the deleted backup filename="$delfile >> log.txt
fi
echo "-----------------beigin time----------------" >> log.txt
echo $begintime >> log.txt
echo "-----------------end time----------------" >> log.txt
echo `date +%Y-%m-%d:%H-%M` >> log.txt
rm log.txt.bak
mailx -s "10.203.116.23 daily database backup" -r ")" $reportlist < log.txt
fi
sleep 3600
done
======================================================================================
1 给我自己的服务器写的一段自动备份的shell
#!/bin/bash
#指定要备份的系统目录
SYSTEM_DIR=/home
#指定要备份的目录MAIL_DIR=mailbox #邮件目录
WEBSITE_DIR=www/html #WEB目录
DATABASE_DIR=databases #数据库目录
#指定备份文件的前缀
MAIL_PREFIX=mail
WEBSITE_PREFIX=web
DATABASE_PREFIX=database
#有朋友的一台WIN2K服务器,我在上面开了ftp,把备份文件传到他的服务器上,相当于我实现了个双机备份
#ftp服务器的IP
FTP_SERV=211.144.155.111
#ftp用户名
FTP_USER=username
#ftp密码
FTP_PASS=12345678
#备份文件存放目录
BACKUP_DIR=/home/backup
#格式化一下日期,备份文件时用日期来做文件名的
DATE=`date +%Y%m%d`
#开始备份邮件
if [ -f ${BACKUP_DIR}/${MAIL_PREFIX}${DATE}.tar.gz ]; then #如果当天的邮件已经备份,那没跳过
echo `date +%Y-%m-%d`'s mail backup file is existing
else #如果没有备份,那么用tar命令来打包邮件目录
tar -czvf ${BACKUP_DIR}/${MAIL_PREFIX}${DATE}.tar.gz ${SYSTEM_DIR}/${MAIL_DIR}
fi
#开始备份网站目录,备份过程同上
if [ -f ${BACKUP_DIR}/${WEBSITE_PREFIX}${DATE}.tar.gz ]; then
echo `date +%Y-%m-%d`'s webebsite backup file is existing
else
tar -czvf ${BACKUP_DIR}/${WEBSITE_PREFIX}${DATE}.tar.gz ${SYSTEM_DIR}/${WEBSITE_DIR}
fi
#开始备份数据库目录,备份过程同上
if [ -f ${BACKUP_DIR}/${DATABASE_PREFIX}${DATE}.tar.gz ]; then
echo `date +%Y-%m-%d`'s database backup file is existing
else
tar -czvf ${BACKUP_DIR}/${DATABASE_PREFIX}${DATE}.tar.gz ${SYSTEM_DIR}/${DATABASE_DIR}
fi
#开始把备份文件传输到另一台服务器上
ftp -i -n $FTP_SERV <<AUTO_FTP
user $FTP_USER $FTP_PASS
passive
binary
put ${BACKUP_DIR}/${MAIL_PREFIX}${DATE}.tar.gz ${MAIL_PREFIX}${DATE}.tar.gz
put ${BACKUP_DIR}/${WEBSITE_PREFIX}${DATE}.tar.gz ${WEBSITE_PREFIX}${DATE}.tar.gz
put ${BACKUP_DIR}/${DATABASE_PREFIX}${DATE}.tar.gz ${DATABASE_PREFIX}${DATE}.tar.gz
AUTO_FTP
别忘了,还有最后一步,就是在crontab里加上个任务,这样你就不用每次备份都一步步地敲那些琐碎的命令了。
我的网站,希望大家多多交流
===================================
linux下:
MySQL :: Linux 下自动备份数据库的 shell 脚本
Linux 服务器上的程序每天都在更新 MySQL 数据库,于是就想起写一个 shell 脚本,结合 crontab,定时备份数据库。其实非常简单,主要就是使用 MySQL 自带的 mysqlmp 命令。
脚本内容如下:
#!/bin/sh
# File: /home/mysql/backup.sh
# Database info
DB_NAME="test"
DB_USER="username"
DB_PASS="password"
# Others vars
BIN_DIR="/usr/local/mysql/bin"
BCK_DIR="/home/mysql/backup"
DATE=`date +%F`
# TODO
$BIN_DIR/mysqlmp --opt -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BCK_DIR/db_$DATE.gz
然后使用将此脚本加到 /etc/crontab 定时任务中:
01 5 * * 0 mysql /home/mysql/backup.sh
好了,每周日凌晨 5:01 系统就会自动运行 backup.sh 文件备份 MySQL 数据库了。
/home/www/inc/back
‘柒’ LINUX 自动备份脚本
您好,我刚接触LINUX还没有接触到ORACLE去,我纯粹说一下这个脚本,半斤八两的嘎嘎。
ORACLE_HOME=/u/proct/oracle816; export ORACLE_HOME
LD_LIBRARY_PATH=/u/proct/oracle816/lib; export LD_LIBRARY_PATH
ORACLE_BASE=/u/proct; export ORACLE_BASE
ORACLE_SID=man; export ORACLE_SID
ORA_NLS33=/u/proct/oracle816/ocommon/nls/admin/data; export ORA_NLS33
PATH=$PATH:/u/proct/oracle816/bin; export PATH
CDPATH=$PATH:$ORACLE_HOME:/u; export CDPATH
NLS_LANG='traditional chinese_taiwan'.ZHT16BIG5; export NLS_LANG
#NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1;export NLS_LANG
NLS_DATE_FORMAT='DD-MM-YYYY HH24:MI:SS';export NLS_DATE_FORMAT
LD_ASSUME_KERNEL=2.4.0; export LD_ASSUME_KERNEL
这一段都是“;”前面声明变量,“;”后输出变量,输出的目的是可以传递给下一级的脚本(子进程)。
alias rman='/u/proct/oracle816/bin/rman'
这个就是给/u/proct/oracle816/bin/rman取一个别名rman,其好处再简单不过,名字太长当然希望用较短的代替很长的输入了。
extfile=`date '+%w_%p_%H_%M'`
这也是声明变量extfile,等号右边是一个命令替换,比如现在是2007年4月29日星期天,15:55那么这个extfile应该是0_PM_3_55 具体你看下date的MAN文档就是了。
%w是参数week,它是用0-6来表示星期日-星期六
%p 它是指用12小时制来表示一天的时间的时候上午或者下午AM or PM
%H 小时
%M 分钟
#rm -rf /www/exp/data/b735data*.*
这个是强制的删除/www/exp/data/下的以b735data开头并带有任意后缀的文件。但是被#号注释掉了,脚本里以#开头的都是注释。
exp foxmold/foxmold file=/www/exp/script/b735data.$extfile compress=y full=y log=n
这些是数据库里的东西了我不懂你去搜下exp命令的用法吧。
mv /www/exp/script/b735data.$extfile /www/exp/data/.
Mv 移动文件的命令。
#rcp /exp/data/data.$extfile 10.160.6.42:/backup/apple_backup
同样被注释掉了,rcp是远程复制命令。
sh DATAexport
执行脚本
重申因为我不懂oracle所以只纯粹说这个脚本哦 呵呵。
‘捌’ linux 自动备份文件至另外一台机器 命令怎么写
直接命令:
scp -P 远程端口 /root/test.txt [email protected]:/root/
软件rsync
‘玖’ 在linux下如果写一个脚本每天自动备份一个目录啊请指教。谢谢。
使用shell和crontab来创建一个文件并用当天时间来命名本分的文件(假设备份的文件在/home/a 并将本分的文件放在/下)每天1点备份
在/下创建一个名字为backup.sh的脚本文件
cd /
vi backup.sh
#!/bin/sh
time=$(date '+%Y%m%d' )
mkdir $time
tar -jcvf /$time.bz2 /home/a
crontab -a
* 1 * * * /backup.sh