บล็อกต้อนรับต้นเดือนและวันแรงงาน ด้วยจำเป็นต้องย้ายไฟล์จำนวนน้อยนิดมหาศาล แบบเร่งด่วน จำนวนหนึ่งไปไว้อีกทีและงานนี้ก็ห้ามหยุดจนกว่างานจะเสร็จ (นี่มันสะท้อนชีวิตใครบ้างไหม ^__^) ใครมีงานแบบนี้ต้องทำแบบด่วน ๆ และไม่มีเวลาให้ต้องมามอนิเตอร์และรันใหม่อีกรอบ ก็ใช้สคริปท์นี้ไปปรับได้
อธิบายคร่าว ๆ คือ
- ใช้ rsync ในการโอนย้ายไฟล์ไปอ่านรายละเอียดต่อได้ที่นี่
- อาจมีบางช่วงหรือ error ขัดจังหวะช่วงโปรแกรม rsync ทำงานแล้วโปรแกรมปิดตัวลงก็ให้โปรแกรม rsync กลับมาทำงานต่อ (Loop) จนกว่าจะสำเร็จ (ดูบังคับมากมาย)
- เสร็จแล้วก็ Line notify นิดนึง
#!/usr/bin/env bash
# Declare an array of Token
declare -a ACCESS_TOKENS=("token1" "token2")
START=$(date +"%d-%m-%Y %H:%M")
RC=1
while [[ $RC -ne 0 ]]
do
NOW=$(date +"%d-%m-%Y %H:%M")
rsync -arv --partial --progress --ignore-errors [source] [destination]
RC=$?
if [[ $RC -ne 0 ]] ; then
echo "$NOW Rsync failure. Backing off and retrying..."
sleep 180
fi
done
# Iterate the token array
for token in "${ACCESS_TOKENS[@]}"; do
echo $token
curl -X POST https://notify-api.line.me/api/notify -H "Authorization: Bearer $token" -F "Rsync start $START completed normally" > /dev/null 2>&1
done
echo "Rsync start $START completed normally"
จบปิ๊งงง (ไม่ได้ดื้อก็แค่พยายาม)
ป.ล.
เผื่อเคสต้องรีสตาร์ทก็เอาไปไว้ใน cron job ด้วยนะ ^__^

