假設要將 ls
的結果儲存到變數中,則可用下面的語法:
# 將結果儲存到 $OUTPUT 中 OUTPUT=$( ls / ) echo $OUTPUT
如果要將 stderr 也儲存下來,則加上 redirect:
OUTPUT=$( ls /not/exists 2>&1 )
軟體開發、伺服器和生活瑣事
假設要將 ls
的結果儲存到變數中,則可用下面的語法:
# 將結果儲存到 $OUTPUT 中 OUTPUT=$( ls / ) echo $OUTPUT
如果要將 stderr 也儲存下來,則加上 redirect:
OUTPUT=$( ls /not/exists 2>&1 )
透過 timeout
設定指令最長可以跑多久。
timeout 3s sleep 1 echo "$?" 0 timeout 3s sleep 5 echo "$?" 124
之前看到的 shell script 說明,建立幾乎都是用 `function`:
function show-server-status() { }
被 IDE 糾正以後才知道有規範 (Google 的 style guide),像是不使用 function
宣告、命名原則:
# [a-zA-Z0-9_] only # https://stackoverflow.com/a/28115066 show_server_status() { }
看來該找時間整理一下 scripts 了
先在控制台中啟用 rsync:
啟動後,就可以透過 SSH 來 rsync 資料。
但要注意的是,因為是透過 SSH,所以路徑不是單純的共用資料夾名稱,而是 Synology 掛載 volume 的路徑。若路徑錯誤,會顯示類似下方的錯誤訊息:
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(231) [Receiver=3.2.7]
以下圖來說,profile
資料夾是位於 儲存空間 2
,因此實際路徑會是 /volume2/profile
:
路徑確認後,就可以讓 rsync 跑起來:
rsync -av --partial --progress \ -e 'ssh -p 2121' \ ./data johnroyer@my.synology:/volume2/profile/backup