當前位置:首頁 » 編程軟體 » 備份歸檔腳本

備份歸檔腳本

發布時間: 2023-04-09 23:53:06

1. Oracle資料庫備份腳本怎麼寫

沒必要用root許可權執行,oracle用戶同樣可以執行crontab計劃任務
1、su - oracle
crontab -e
0 4 * * 0 /home/oracle/exp.sh 2>&1 >>/home/oracle/script_exp.log;
0~59 表示分
0~23 表示小時
1~31 表示日
1~12 表示月份
0~6 表示星期(其中0表示星期日)
2、cat /home/oracle/exp.sh
. ~/.bash_profile
bakdir=/opt/dbbak
logdir=/home/oracle/dbbak
rq=$(date +%Y%m%d)
exp system/***** owner=jysh file=${bakdir}/jysh_${rq}.dmp log=${logdir}/jysh_${rq}.log;
find ${bakdir} -type f -mtime +30 -exec rm -rf {} \;

2. Shell程序實現每天將主目錄下的所有目錄和文件歸檔 並壓縮為文件mybackup.tar.gz然後讓腳本開機自動運行

首先確定幾個問題:
1、主目錄路徑,備份文件存放路徑,要麼給腳本自己加上去也行
2、備份完數據後,主目錄下的文件刪不刪,不刪的話相當於正槐每天備份全量,刪除的話每天備份增量
3、備份規則是當天備份前一天的還是當天備份當天的,如果實時有數據,建議脊清敗備份前一天,如果固定時間有數據,那麼備份當天的即可。
#!/bin/bash
sdir=
ddir=
logfile=./backup-$(date -d "yesterday" +%Y-%m-%d).log
tar -zcvf $ddir/mybackup-$(date -d "yesterday" +%Y-%m-%d) $sdir/* --remove-files &> $logfile
腳本如上,對應三個問題的解釋
1、sdir指定要備份的目錄,ddir指定備份文件存放的目錄
2、腳本中歸檔壓縮命令那一行--remove-files是壓縮後刪除源文件的意思,對應刪除主目錄下的文件,如果不需要刪除,去櫻顫掉這個參數就行了
3、最後在需要執行的用戶下執行crontab -e(裡面的編輯方式和vim一樣)
0 0 * * * /bin/sh /#這里是腳本所在的目錄/#腳本名稱
:wq保存退出,執行crontab -l能看到這個任務即可,時間的話按自己的需要根據實際情況定義,這里定義每天的0點執行。

3. Windows備份文件夾腳本.bat

項目有些文件上傳到windows系統臨時文件,需要定期進行備份。例如我要將D/information/images文件夾及其下所有文件復制到F/Archives文件夾下,方法如下:

1、新建txt文件,輸入以下內容

參數解釋:

/e:拷貝所有子目錄,包括空子目錄;
/I: 如果目標文件或目錄不存在且拷貝的文件數多於一,則假設目標為目錄;
/d:只拷貝文件日期與在目標文件後的文件(即修改過的源文件)
/h:同時拷貝隱藏文件和系統文件
/r:拷貝並覆蓋只讀文件
/y: 復制文件審核設置(不顯示已有文件覆蓋確認)

2、保存文本文件後,通過重命名將文件改為".bat"文件

4. linux的日誌伺服器中,如何用腳本將日誌按年歸檔進指定目錄


在腳本nohup設置每天開始拷貝日誌作為前一天的日誌備份,然後把當前日誌清空即可,代碼如下:

crontab-e
//增加:
00***cp/dirname/logfile.log/bakdir/logfile.`date-dyesterday+%Y%m%d`.log;cat/dev/null>/dirname/logfile.log
//每周日凌晨1:00打包、刪除文件:
01**0cd/bakdir;find./+mtime7-exectarcvflogfile.`date-dyesterday+%Y%U`.tar{};;find./-mtime91-execrm-f{};

5. oracle rman備份腳本怎麼寫

在ORACLE資料庫中,RMAN備份的腳本非常多,下面介紹一例shell腳本如何通過RMAN備份,以及ftp上傳RMAN備份文件以及歸檔日誌文件的腳本。
fullback.sh 裡面調用RMAN命令做資料庫備份,它使用的cmdfile為/home/oracle/backup/bin/fullback.rcv,同時在/home/oracle/backup/logs目錄下生成日誌文件。
1: [oracle@DB-Server bin]$ more fullback.sh
2:
3: #!/bin/bash
4:
5: export ORACLE_BASE=/u01/app/oracle
6:
7: export ORACLE_SID=gps
8:
9: ORACLE_HOME=$ORACLE_BASE/proct/10.2.0/db_1; export ORACLE_HOME
10:
11: TMP=/tmp; export TMP
12:
13: TMPDIR=$TMP; export TMPDIR
14:
15: PATH=/usr/sbin:$PATH; export PATH
16:
17: PATH=$ORACLE_HOME/bin:$PATH; export PATH
18:
19: LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
20:
21: CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
22:
23: export CLASSPATH
24:
25: TODAY=`date +%Y_%m_%d`
26:
27: rman nocatalog target / cmdfile /home/oracle/backup/bin/fullback.rcv log /home/oracle/backup/logs/fullbackup_$TODAY.log
28:
29: /home/oracle/backup/bin/ftpbackup.sh
30:
fullback.rcv文件非常簡單, 如下所示:
1: [oracle@DB-Server bin]$ more /home/oracle/backup/bin/fullback.rcv
2:
3: run{
4:
5: allocate channel c4 type disk;
6:
7: backup as compressed backupset
8:
9: skip inaccessible
10:
11: tag fullbackupwitharchivelog
12:
13: (database);
14:
15: backup current controlfile;
16:
17: backup spfile;
18:
19: sql "alter system archive log current";
20:
21: delete noprompt obsolete;
22:
23: release channel c4;
24:
25: }
26:
RMAN生成的備份文件,需要通過FTP上傳到FTP伺服器,一則資料庫伺服器沒有這么多空間存儲多天的備份,二則是出於容災、數據安全需要。
下面腳本中FTP伺服器,用戶名密碼均使用xxx替代,在實際環境中,使用具體的信息替代即可。
1: [oracle@DB-Server bin]$ more ftpbackup.sh
2:
3: #!/bin/sh、
4:
5: rm -f /home/oracle/.netrc
6:
7: date_yesterday=`date -d'yesterday' +%Y_%m_%d`
8:
9: date_today=`date +%Y_%m_%d`
10:
11: echo "default login xxxx password xxxxxx" >> /home/oracle/.netrc
12:
13: echo "macdef init" >> /home/oracle/.netrc
14:
15: echo "binary" >> /home/oracle/.netrc
16:
17: echo "cd archivelog" >> /home/oracle/.netrc
18:
19: echo "mkdir $date_yesterday" >> /home/oracle/.netrc
20:
21: echo "cd $date_yesterday" >> /home/oracle/.netrc
22:
23: echo "lcd /u04/flash_recovery_area/gps/archivelog/$date_yesterday" >> /home/oracle/.netrc
24:
25: echo "mput *" >> /home/oracle/.netrc
26:
27: echo "cd .." >> /home/oracle/.netrc
28:
29: echo "mkdir $date_today" >>/home/oracle/.netrc
30:
31: echo "cd $date_today" >>/home/oracle/.netrc
32:
33: echo "lcd /u04/flash_recovery_area/gps/archivelog/$date_today" >>/home/oracle/.netrc
34:
35: echo "mput * ">>/home/oracle/.netrc
36:
37: echo "cd .." >>/home/oracle/.netrc
38:
39: echo "cd ../backupset" >> /home/oracle/.netrc
40:
41: echo "mkdir $date_today" >> /home/oracle/.netrc
42:
43: echo "cd $date_today" >> /home/oracle/.netrc
44:
45: echo "lcd /u04/flash_recovery_area/gps/backupset/$date_today" >> /home/oracle/.netrc
46:
47: echo "mput *" >> /home/oracle/.netrc
48:
49: echo "cd .." >> /home/oracle/.netrc
50:
51: echo "cd ../autobackup" >> /home/oracle/.netrc
52:
53: echo "mkdir $date_today" >> /home/oracle/.netrc
54:
55: echo "cd $date_today" >> /home/oracle/.netrc
56:
57: echo "lcd /u04/flash_recovery_area/gps/autobackup/$date_today" >> /home/oracle/.netrc
58:
59: echo "mput *" >> /home/oracle/.netrc
60:
61: echo "quit" >> /home/oracle/.netrc
62:
63: echo "" >> /home/oracle/.netrc
64:
65: chmod 600 /home/oracle/.netrc
66:
67: ftp -i -v xxx.xxx.xxx.xxx 8021 >>/home/oracle/backup/logs/ftp$date_today.log 2>&1
68:
另外,關於歸檔日誌也需要每隔2小時上傳一次到FTP伺服器,2小時上傳一次歸檔日誌的shell腳本如下所示:
1: [oracle@DB-Server bin]$ more ftp2hours.sh
2:
3: #!/bin/sh
4:
5: rm -f /home/oracle/.netrc
6:
7: date_yesterday=`date -d'yesterday' +%Y_%m_%d`
8:
9: date_today=`date +%Y_%m_%d`
10:
11: echo "default login xxxx password xxxx" >> /home/oracle/.netrc
12:
13: echo "macdef init" >> /home/oracle/.netrc
14:
15: echo "binary" >> /home/oracle/.netrc
16:
17: echo "cd archivelog" >> /home/oracle/.netrc
18:
19: echo "mkdir $date_today" >>/home/oracle/.netrc
20:
21: echo "cd $date_today" >>/home/oracle/.netrc
22:
23: echo "lcd /u04/flash_recovery_area/gps/archivelog/$date_today" >>/home/oracle/.netrc
24:
25: echo "mput * ">>/home/oracle/.netrc
26:
27: echo "quit" >> /home/oracle/.netrc
28:
29: echo "" >> /home/oracle/.netrc
30:
31: chmod 600 /home/oracle/.netrc
32:
33: ftp -i -v xxx.xxx.xxx.xxx 8021 >>/home/oracle/backup/logs/ftp2hours.$date_today.log 2>&1
34:
最後需要將RMAN備份生成的日誌文件,以及FTP上傳備份文件以及歸檔日誌的記錄通過郵件形式發送給DBA或系統管理員,
1: [oracle@DB-Server bin]$ more chkbackandmail.sh
2: #!/bin/bash
3: rm -f /home/oracle/backup/bin/sendmail.pl
4: date_today=`date +%Y_%m_%d`
5: subject="Oracle Backup Alert Service on $date_today"
6: content="Dear colleagues,
7:
8: Attached please find the logs of xxx(xxx.xxx.xxx.xxx) oracle database backup and transfer to FTP Server(xxx.xxx.xxx.xxx), please
9: review the file and check whether the backup succeeded or not,and double check all backups have been mped to tape, many tha
10: nks
11:
12:
13:
14:
15: Best regards
16: Oracle Alert Services
17:
18: "
19: file="/home/oracle/backup/logs/fullbackup_$date_today.log,/home/oracle/backup/logs/ftp$date_today.log"
20: echo "#!/usr/bin/perl" >> /home/oracle/backup/bin/sendmail.pl
21: echo "use Mail::Sender;" >> /home/oracle/backup/bin/sendmail.pl
22: echo "\$sender = new Mail::Sender {smtp => 'xxx.xxx.xxx.xxx', from => '[email protected]'}; ">> /home/oracle/backup/bin/sendmai
23: l.pl
24: echo "\$sender->MailFile({to => '[email protected]',">> /home/oracle/backup/bin/sendmail.pl
25: echo "cc=>'[email protected],[email protected],[email protected]'," >> /home/oracle/backup/b
26: in/sendmail.pl
27: echo "subject => '$subject',">> /home/oracle/backup/bin/sendmail.pl
28: echo "msg => '$content',">> /home/oracle/backup/bin/sendmail.pl
29: echo "file => '$file'});">> /home/oracle/backup/bin/sendmail.pl
30: perl /home/oracle/backup/bin/sendmail.pl
最後在Crontab 作業裡面配置調用這些shell腳本。例如如下所示,在1:01分執行fullback.sh ,每隔兩個小時(例如0:50、2:50...)執行一次ftp2hours.sh, 在每天早上8:40執行chkbackandmail.sh 發送fullback.sh 以及ftp2hour.sh的執行日誌記錄。

6. 怎麼備份遠程mysql資料庫的腳本文件

在MySQL中進行數據備份的方法有兩種:
1. mysqlhot
這個命令會在拷貝文件之前會把表鎖住,並把數據同步到數據文件中,以避免拷貝到不完整的數據文件,是最安全快捷的備份方法。
命令的使用方法是:
mysqlhot -u root -p<rootpass> db1 db2 … dbn <output_dir>
如果需要備份全部資料庫,可以加上–regexp=」.*」參數。
Mysqlhot命令可自動完成數據鎖定工作,備份時不用關閉伺服器。它還可以刷新日誌,使備份文件和日誌文件的檢查點能保持同步。
2. mysqlmp
這個命令是用來把資料庫倒成sql文件的,是非常古老的命令了。
命令的使用方法是:
mysqlmp -u root -p<rootpass> –hex-blob db1 > db1.sql
加上–hex-blob參數以後,blob數據會被類似BASE64的方法轉換為文本來存儲在sql文件中,就不會導致sql文件格式問題了。經過測試,通過這種方法備份的blob數據再重新恢復回去能夠完全正確。
如果要備份所有的資料庫,可以加上–all-databases參數。
用mysqlmp命令還可直接把資料庫轉移到另外一台伺服器上,不用生成備份文件。重復執行可定期更新遠程資料庫。
% mysqladmin -h remote_host create testdb
% mysqlmp –opt testdb | mysql -h remote_host testdb
另外還可通過ssh遠程調用伺服器上的程序,如:
% ssh remote_host mysqladmin create testdb

7. 求一個oracle 11g自動備份腳本,每行腳本需要有注釋。例如:資料庫名LC0001,密碼123456,SID為ORCL,

要求自動的話,自己在windows下設置定時任務,這個就不說了,網上教程很多。

另外,這個東西跟資料庫名沒什麼關系,跟本地實例,還有用戶名有關

寫個腳本:

@echooff
echo刪除30天前的備分文件和日誌
forfiles/pC:data_bak/m*.dmp/d-30/c"cmd/cdel@path"
forfiles/pC:data_bak/m*.log/d-30/c"cmd/cdel@path"
echo正在備份Oracle資料庫,請稍等……
expscott/tiger@sytvfile=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.dmplog=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.logowner=scottbuffer=65535
cdC:ProgramFilesWinRAR
rara-drC:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.dmp.rarC:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.dmp
echo任務完成!
echo.&pause請按任意鍵結束!

也沒什麼可解釋的了。

exp scott/tiger@sytv file=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.log owner=scott buffer=65535

也就這部分,scott是用戶名,tiger是密碼,sytv是本地實例名,然後file是備份文件名,log是日誌文件名,owner=scott是導出scott下的所有對象,這個可根據自己情況修改。


執行後,文件是這樣的:

熱點內容
能耗資料庫 發布:2025-07-15 12:50:55 瀏覽:328
謎宮腳本 發布:2025-07-15 12:40:07 瀏覽:864
安卓手機語音操作在哪裡開啟 發布:2025-07-15 12:18:49 瀏覽:283
安卓導航儀上網卡插哪裡 發布:2025-07-15 12:01:58 瀏覽:454
把文件編譯成數據 發布:2025-07-15 11:53:16 瀏覽:542
mt4如何修改密碼 發布:2025-07-15 11:53:16 瀏覽:215
2021思域新款買哪個配置 發布:2025-07-15 11:33:24 瀏覽:772
路由搭建http伺服器 發布:2025-07-15 11:26:45 瀏覽:724
消遣解壓 發布:2025-07-15 11:26:43 瀏覽:393
ICL編譯 發布:2025-07-15 11:26:32 瀏覽:665