Linux - Shell Script 備份檔案

Linux - Shell Script 備份檔案

前言

因遊玩幻獸帕魯需要定期備份伺服器

所以需要寫一個 shell 去進行備份檔案並壓縮檔案

開始

第一步、建立 Shell Script 檔案進行檔案備份

1
vi Palworld.sh

建立 sh 檔案

Palworld.sh 內容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
backup_path="/home/hialanliugood/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames" # 備份路徑
folder_name="0" # 目標資料夾名稱
current_datetime=$(date +"%Y%m%d%H%M") # 取得當前日期和時間
backup_file="${folder_name}_${current_datetime}.tar.gz" # 壓縮檔名
full_path="${backup_path}/${folder_name}" # 完整路徑
finish_backup_path="${backup_path}/backup"
if [ -d "$full_path" ]; then
cd "$full_path" || exit # 進入目標資料
tar -czf "$backup_file" . # 壓縮目標資料夾內容到指定檔案
mv "$backup_file" "$finish_backup_path" # 搬移壓縮檔位置
cd - || exit # 切換回原始目錄
echo "備份成功:${full_path} -> ${backup_file}"

# 刪除過去3天以上的備份檔案
find "$finish_backup_path" -name "${folder_name}_*.tar.gz" -type f -mtime +3 -exec rm {} \;
echo "刪除過去3天以上的備份檔案完成"
else
echo "錯誤:目標資料夾 ${full_path} 不存在"
fi

backup_path: 需備份的檔案絕對路徑

folder_name: 需要備份的資料夾

current_datetime: 取得日期

backup_file: 壓縮檔名

full_path: 備份壓縮檔儲存路徑

第二步、測試執行 Shell Script 檔案

直接輸入

1
./Palworld.sh

執行 sh

如果出現 -bash: ./Palworld.sh: Permission denied

代表權限不足,請輸入

1
chmod +x ./Palworld.sh

執行成功後的樣子

成功範例

第三步、使用 Crontab 執行排程

輸入以下指令

1
crontab -e

在最下方加入以下指令

此範例為一小時執行一次

1
0 * * * * /home/hialanliugood/Palworld.sh

範例

儲存方法為 Ctrl + X -> 接著按 Y -> 在按下 Enter

接著按 Y

在按下 Enter

第四步、檢查 Crontab 是否執行

1
crontab -l

範例

到這邊就可以自動進行備份囉!~

第五步、如果想要新增自動刪除

1
vi Palworld.sh

新增 刪除判斷

1
2
3
# 刪除過去3天以上的備份檔案
find "$finish_backup_path" -name "${folder_name}_*.tar.gz" -type f -mtime +3 -exec rm {} \;
echo "刪除過去3天以上的備份檔案完成"

完整範例

今天的教學就到此

Thank you! 😄


參考