請教Synology的任務排程用的Shell Script

自從DSM 5.0後,在任務排程裡終於可以自定義程式碼了!
對某些重度用戶而言可是大補丸!

但是小弟試用了一下,一直無法成功,
想請問有沒有Linux高手,
可以教一下,如果我想要定期自動備份特定資料夾下的檔案
並且依時間自動刪除舊檔,如只保留最新30天的備份
sh要如何撰寫呢?

我自己有Google並反覆試了一下,
不知是資料夾權限問題,還是指令路徑問題,
一直無法成功使用,而因為沒有畫面,沒有錯誤訊息,
所以一直搞不清楚錯誤在哪?
(連單純的cp都沒成功過...)

想問有沒有人在使用此功能的?
可以分享一下你的sh程式碼嗎?

謝謝


kerkerman wrote:
自從DSM 5.0後...(恕刪)


這裡就有範例(click here), 用 find command.


#!/bin/bash

timestamp=$(date +%Y%m%d_%H%M%S)
path="/data/backuplog"
filename=log_back_$timestamp.txt
log=$path/$filename

find $path -name "*.txt" -type f -mtime +30 -print -delete >> $log

echo "Backup:: Script Start -- $(date +%Y%m%d_%H%M)" >> $log

START_TIME=$(date +%s)

... code for backup ...or any other operation ....


END_TIME=$(date +%s)

ELAPSED_TIME=$(expr $END_TIME - $START_TIME)


echo "Backup :: Script End -- $(date +%Y%m%d_%H%M)" >> $log
echo "Elapsed Time :: $(date -d 00:00:$ELAPSED_TIME +%Hh:%Mm:%Ss) " >> $log

建議你 ssh 進系統去測試. 至於備份的部份, 直接用系統排程備份就可以了.
FB: Pctine



1. 以下是我備份 MailStation的shell,用來 把 /volume1/@appstore/MailStation/roundcubemail這個目錄,備份到我home directory下的
roundcube085.[1-7].tgz。

mailbak.sh

cd /volume1/@appstore/MailStation
tar zcvf /var/services/homes/mingjian/roundcube085.`date +%u`.tgz roundcubemail

2. `date +%u` 會備份成 1~7 周一到周日,若是改成 `date +%d` 則可以備份成 01~31 每月的1號到31號。

3. 然後再將mailbak.sh 排進排程每天執行。(如下圖)

謝謝大家的回覆
交叉試了一下原來我失敗的原因,竟然是路徑問題,我真是笨蛋~
感謝提供語法參考
謝謝
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!