Linux上定時打包備份檔案夾

2021-09-25 23:17:27 字數 3443 閱讀 7298

目錄

一、 編寫指令碼

1.建立指令碼

2.寫入命令

3.執行指令碼檔案

二、 設定定時執行本指令碼。

1. 安裝crond

2. 修改crontab內容

3. 重新啟動crond服務

補充說明:

編寫乙個指令碼檔案,使指令碼可以執行備份命令。

例如,將檔案目錄 /home/backups/balalala 備份到/home目錄下,並壓縮。

命令格式: touch 路徑/檔名.sh

例如:輸入命令:

touch /home/backup.sh
首先進入指令碼:vi命令

vi /home/backup.sh
在指令碼內寫入:

#!/bin/sh

#建立乙個臨時檔案(要儲存備份的路徑)

mkdir /home/beifen

#資料存在backups目錄下,備份到beifen目錄下,所以先將資料拷過來

cp -r /home/backups/balalala  /home/beifen

#將資料所在資料夾beifen打包

tar -zcpvf /home/backup$(date +%y%m%d).tar.gz /home/beifen

#刪除臨時檔案內容

rm -rf /home/beifen/

#刪除改資料夾下超過30天的檔案

find ./ -mtime +30 -name "*.tar.gz" -exec rm -rf {} \;

直接手動執行指令碼檔案。

命令格式:sh 路徑/檔名.sh

例如:

sh /home/backup.sh
例如:設定指令碼每7天執行一次。

如果沒有安裝crond服務就先裝上服務。

$ yum install crontabs
檢查服務狀態:

service crond status
輸入命令:crontab –e

進入後繼續輸入命令:

0 0 */7 * * /home/backup.sh
設定為每7天執行一次指令碼檔案

然後,儲存退出:wq

sh指令碼前面五個字段分別表示分鐘(0-59)、小時(0-23)、日(1-31)、月(0-12)、星期幾(0-6)後面的為指令碼所在目錄

crontab特殊的符號說明:

"*"  代表所有的取值範圍內的數字。特別要注意哦!

"/"  代表每的意思,如"*/5"表示每5個單位

"-"  代表從某個數字到某個數字

","  分散的數字

例如:

30 21 * * *          表示每晚的21:30

45 4 1,10,22 * *       表示每月1、10、22日的4 : 45

輸入命令:

service crond restart
至此配置完成!

解壓備份的壓縮包命令

tar -xzvpf robin.tar.gz -c/
首先應該明確:linux/unix系統中,使用tar對檔案打包時,一般不建議使用絕對路徑。

通常是在兩台環境相似的機器上進行同步複製的時候,才有需要使用絕對路徑進行打包。使用絕對路徑打包時如果不指定相應的引數,

tar會產生一句警告資訊:」tar: removing leading `/』 from member names」,並且實際產生的壓縮包會將絕對路徑轉化為相對路徑。

比如:

root@queen ~ # tar -czvf robin.tar.gz /home/robin

tar: removing leading `/' from member names

/home/robin/

/home/robin/file1

/home/robin/file2

/home/robin/file3

root@queen ~ # tar -tzvf robin.tar.gz

drwxr-xr-x robin/root        0 2009-11-10 18:51:31 home/robin/

-rw-r--r-- robin/root        0 2009-11-10 18:51:28 home/robin/file1

-rw-r--r-- robin/root        0 2009-11-10 18:51:30 home/robin/file2

-rw-r--r-- robin/root        0 2009-11-10 18:51:31 home/robin/file3

root@queen ~ #

這樣的乙個壓縮包,如果我們再去解開,就會當前目錄(也即此例中的「~」)下再新建出「./home/robin/」 兩級目錄。

對於這樣的壓縮包,解壓方法是使用引數 「-c」指解壓的目錄為根目錄(「/」):tar -xzvf robin.tar.gz -c /

更為可靠的方法是在打包和解開的時候都使用引數 -p:

root@queen ~ # tar -czvpf robin.tar.gz /home/robin/

/home/robin/

/home/robin/file1

/home/robin/file2

/home/robin/file3

root@queen ~ # tar tzvf robin.tar.gz

drwxr-xr-x robin/root        0 2009-11-10 18:51:31 /home/robin/

-rw-r--r-- robin/root        0 2009-11-10 18:51:28 /home/robin/file1

-rw-r--r-- robin/root        0 2009-11-10 18:51:30 /home/robin/file2

-rw-r--r-- robin/root        0 2009-11-10 18:51:31 /home/robin/file3

root@queen ~ # tar -xzvpf robin.tar.gz

/home/robin/

/home/robin/file1

/home/robin/file2

/home/robin/file3

root@queen ~ #

mysql備份檔案夾 mysql 備份

mysql定期備份是一項重要的工作,但人工操作太繁瑣,也難避免有所疏漏,使用下面的方法即可讓系統定期備份資料。1 建立備份檔案夾 cd www makedir backup 2 編寫執行指令碼 vi autobackup 寫入以下內容 filename date y m d mysql bin di...

不改變檔案 夾 屬性備份檔案 夾

1.tar 壓縮 root admin test ls all drwxr xr x 2 admin root 4096 jan 21 03 50 test root admin test tar czf test.tar.gz test root admin test ls all drwxr x...

利用python備份檔案夾

以前寫過乙個非常白痴的備份指令碼,就是將著整個我資料夾都拷貝到u盤裡,每次拷貝前都將已經存在的資料夾刪除掉。這樣的話程式就很傻瓜 也很少 1 importos2 3def backup from path,to path 4if os.path.exists to path 5 os.system ...