#!/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