《使用者資料備份方案》設計 開發 爬坑

2021-10-04 20:06:33 字數 3493 閱讀 2987

《使用者資料備份方案》

1. 採用bash shell開發資料備份指令碼

2. 資料備份目錄新建在dcp/backup

3. 所有需要備份的檔案打包為tar包,名字以年月日命名,如:2020-04-07.tar.gz2020-04-07_all.tar.gz

4. 備份規則:

5. 刪除規則:

6. 定時執行:

方案設計好以後就可以進行開發了。但是在開發的過程中遇到了不少小坑。

坑一:date命令

由於我使用 mac 進行開發的,所以在做時間處理的時候遇到了一些坑。date在進行時間加減的時候用的引數是-d,但是在 mac 下就報錯了。這是因為在 mac 下引數變成-v

參考資料:

為了相容 mac 和 linux 發行版,我們需要判斷當前系統是什麼

#!/bin/bash

if [[ `uname -a` =~ "darwin" ]]

then

echo "mac"

elif [[ `uname -a` =~ "centos" ]]

then

echo "centos"

elif [[ `uname -a` =~ "ubuntu" ]]

then

echo "ubuntu"

else

echo "other"

fi

~是判斷右側正規表示式是否匹配,匹配輸出 1 不匹配輸出 0

坑二:tar包絕對路徑

tar 打包是在相對路徑下進行的

tar cvzf 2020_04-08_all.tar.gz files/
但是我們在寫指令碼為了路徑正確,經常要用到絕對路徑,如果直接使用有時會報錯的,需要加上p引數,記得要放在f引數之前

tar cvzpf 2020_04-08_all.tar.gz /data/dcp/www/files/
坑三:tar指定解壓後的目錄

如果直接用絕對路徑打包,解壓後包裡面的目錄是從根目錄開始的,如果想指定檔案的上級目錄就需要加上-c引數來指定目錄,然後指定解壓後的目錄是files

tar cvzpf 2020_04-08_all.tar.gz -c /data/dcp/www files
坑四:findtar配合使用

在打包的時候,有時候並不是所有的資料都要,這時候就需要過濾一部分資料進行打包,過濾查詢就用find命令

find命令格式及find命令詳解

find 按檔案修改時間查詢檔案

how to find and tar files into a tar ball

這裡我們使用最常見的管道命令

find /data/dcp/www/files -mtime 0 | xargs tar cvzf 2020_04-08.tar.gz
或者使用-exec命令

find /data/dcp/www/files -mtime 0 -exec tar cvzf 2020_04-08.tar.gz {} +
坑四:資料冗餘

上述命令看似沒有問題,但是在打包的時候回打包成多餘的冗餘資料,這是為什麼呢?

原因是目錄也有時間資訊,如果要忽略目錄只要檔案,那麼只需要加上-type f引數就好

find /data/dcp/www/files -type f -mtime 0 | xargs tar cvzf 2020_04-08.tar.gz
坑五:findtar指定解壓後的目錄

使用find命令,打包需要管道,但是命令格式就會發生變化,為了指定目錄,我們需要變通,換一種方式

cd /data/dcp/www

find files -mtime 0 | xargs tar cvzf 2020_04-08.tar.gz

這樣就可以指定findtar解壓後的目錄

最後放出使用者資料備份的原始碼:

#!/bin/bash

# today

dt=`date +"%y-%m-%d"`

# src and dest file path

src="/data/dcp/www"

dest="/data/dcp/backup"

day() -type f -name $.tar.gz | xargs rm -rf

cd $src

find files -type f -mtime 0 | xargs tar cvzf $/$.tar.gz

}week() -type f -name $_all.tar.gz | xargs rm -rf

cd $src

tar cvzf $/$_all.tar.gz files/

}# judge mac or linux

if [[ `uname -a` =~ "darwin" ]]

then

yesterday=`date -v -1d +"%y-%m-%d"`

last_week=`date -v -1w +"%y-%m-%d"`

else

yesterday=`date -d '-1 day' +%y-%m-%d`

last_week=`date -d '-1 week' +%y-%m-%d`

fi# day or week type

if [ "$1" = "day" ]

then

dayelif [ "$1" = "week" ]

then

week

else

echo "--------- *please input task type* ----------"

echo "bash $0 day [or] bash $0 week"

fi

最後,在crontab中新增定時任務

0 0 * * * bash /data/dcp/script/dcp_user_data_backup.sh day

0 0 * * 1 bash /data/dcp/script/dcp_user_data_backup.sh week

Flask Web 開發 使用者資料

進入第10章了,看到群裡其他筒子已經完成在伺服器上的部署並上線了,好生羨慕。這一章節的內容是講使用者資料的,比如我們平時註冊乙個 以後,總有乙個頁面是讓我們修改自我介紹,城市,還能顯示註冊時間,最後一次登入等資訊 既然講到以上這些,那我們肯定要在模型裡面多加一些資訊了 如下class user us...

php爬蟲 知乎使用者資料爬取和分析

背景說明 小拽利用php的curl寫的爬蟲,實驗性的爬取了知乎5w使用者的基本資訊 同時,針對爬取的資料,進行了簡單的分析呈現。demo 位址 移動端分析資料截圖 pc端分析資料截圖 整個爬取,分析,展現過程大概分如下幾步,小拽將分別介紹 php的curl擴充套件是php支援的,允許你與各種伺服器使...

軟體設計,全心全意保護使用者資料

看了一下提示,感覺應該是軟體設定的問題,就開啟了選項看了一下,果然,問題找到了。之前 vs也出過類似的錯誤,都是軟體設定的問題。在出問題以後,如果軟體提示你不允許或者說不能執行某些操作,可以先不急著去網上找答案,先看看軟體設定,說不定就是這裡出了問題。通過這些設定可以讓自己的軟體更個人化,更符合自己...